81e95fe57cc17fe6b25edbd09979292483386866
[catagits/HTML-Zoom.git] / t / parse_cdata.t
1 use strictures 1;
2 use HTML::Zoom;
3 use Test::More ;# skip_all => "Totally doesn't work yet";
4
5 # Test that contant of elements defined as containing intrinsic CDATA are not
6 # selected as elements
7
8 # NB: This tests HTML parsing rules. XHTML is different.
9
10 my $template = <<HTML;
11 <!DOCTYPE html>
12 <html lang=en-gb>
13     <meta charset=utf-8>
14     <title>Test</title>
15     <style>
16         /* <textarea>Unmodified</textarea> */
17     </style>
18     </head>
19     <body>
20         <p>Unmodified</p>
21         <textarea>Unmodified</textarea>
22         <script>
23             if (1) {
24                 document.write('<p>');
25             } else {
26                 document.write('<div>');
27             }
28             document.write('hello, world');
29             if (1) {
30                 document.write('</p>');
31             } else {
32                 document.write('</div>');
33             }
34         </script>
35 HTML
36
37 my $expected_p = <<HTML;
38 <!DOCTYPE html>
39 <html lang=en-gb>
40     <meta charset=utf-8>
41     <title>Test</title>
42     <style>
43         /* <textarea>Unmodified</textarea> */
44     </style>
45     </head>
46     <body>
47         <p>Unmodified</p>
48         <textarea>Unmodified</textarea>
49         <script>
50             if (1) {
51                 document.write('<p>');
52             } else {
53                 document.write('<div>');
54             }
55             document.write('hello, world');
56             if (1) {
57                 document.write('</p>');
58             } else {
59                 document.write('</div>');
60             }
61         </script>
62 HTML
63
64 my $expected_t = <<HTML;
65 <!DOCTYPE html>
66 <html lang=en-gb>
67     <meta charset=utf-8>
68     <title>Test</title>
69     <style>
70         /* <textarea>Unmodified</textarea> */
71     </style>
72     </head>
73     <body>
74         <p>Unmodified</p>
75         <textarea>Replaced</textarea>
76         <script>
77             if (1) {
78                 document.write('<p>');
79             } else {
80                 document.write('<div>');
81             }
82             document.write('hello, world');
83             if (1) {
84                 document.write('</p>');
85             } else {
86                 document.write('</div>');
87             }
88         </script>
89 HTML
90
91 my $replaced_p = HTML::Zoom->from_html($template)->select('p')->replace_content('Replaced')->to_html;
92 is($replaced_p, $expected_p, "Script element parsed as CDATA");
93
94 my $replaced_t = HTML::Zoom->from_html($template)->select('textarea')->replace_content('Replaced')->to_html;
95 is($replaced_t, $expected_t, "Style element parsed as CDATA");
96
97 done_testing;