--- /dev/null
+use strictures 1;
+use HTML::Zoom;
+use Test::More ;# skip_all => "Totally doesn't work yet";
+
+# Test that contant of elements defined as containing intrinsic CDATA are not
+# selected as elements
+
+# NB: This tests HTML parsing rules. XHTML is different.
+
+my $template = <<HTML;
+<!DOCTYPE html>
+<html lang=en-gb>
+ <meta charset=utf-8>
+ <title>Test</title>
+ <style>
+ /* <textarea>Unmodified</textarea> */
+ </style>
+ </head>
+ <body>
+ <p>Unmodified</p>
+ <textarea>Unmodified</textarea>
+ <script>
+ if (1) {
+ document.write('<p>');
+ } else {
+ document.write('<div>');
+ }
+ document.write('hello, world');
+ if (1) {
+ document.write('</p>');
+ } else {
+ document.write('</div>');
+ }
+ </script>
+HTML
+
+my $expected_p = <<HTML;
+<!DOCTYPE html>
+<html lang=en-gb>
+ <meta charset=utf-8>
+ <title>Test</title>
+ <style>
+ /* <textarea>Unmodified</textarea> */
+ </style>
+ </head>
+ <body>
+ <p>Unmodified</p>
+ <textarea>Unmodified</textarea>
+ <script>
+ if (1) {
+ document.write('<p>');
+ } else {
+ document.write('<div>');
+ }
+ document.write('hello, world');
+ if (1) {
+ document.write('</p>');
+ } else {
+ document.write('</div>');
+ }
+ </script>
+HTML
+
+my $expected_t = <<HTML;
+<!DOCTYPE html>
+<html lang=en-gb>
+ <meta charset=utf-8>
+ <title>Test</title>
+ <style>
+ /* <textarea>Unmodified</textarea> */
+ </style>
+ </head>
+ <body>
+ <p>Unmodified</p>
+ <textarea>Replaced</textarea>
+ <script>
+ if (1) {
+ document.write('<p>');
+ } else {
+ document.write('<div>');
+ }
+ document.write('hello, world');
+ if (1) {
+ document.write('</p>');
+ } else {
+ document.write('</div>');
+ }
+ </script>
+HTML
+
+my $replaced_p = HTML::Zoom->from_html($template)->select('p')->replace_content('Replaced')->to_html;
+is($replaced_p, $expected_p, "Script element parsed as CDATA");
+
+my $replaced_t = HTML::Zoom->from_html($template)->select('textarea')->replace_content('Replaced')->to_html;
+is($replaced_t, $expected_t, "Style element parsed as CDATA");
+
+done_testing;