6 BEGIN { plan tests => 40 }
10 print "#Using HTML::TreeBuilder version v$HTML::TreeBuilder::VERSION\n";
11 print "#Using HTML::Element version v$HTML::Element::VERSION\n";
12 print "#Using HTML::Parser version v", $HTML::Parser::VERSION || "?", "\n";
13 print "#Using HTML::Entities version v", $HTML::Entities::VERSION || "?", "\n";
14 print "#Using HTML::Tagset version v", $HTML::Tagset::VERSION || "?", "\n";
15 print "# Running under perl version $] for $^O",
16 (chr(65) eq 'A') ? "\n" : " in a non-ASCII world\n";
17 print "# Win32::BuildNumber ", &Win32::BuildNumber(), "\n"
18 if defined(&Win32::BuildNumber) and defined &Win32::BuildNumber();
19 print "# MacPerl verison $MacPerl::Version\n"
20 if defined $MacPerl::Version;
22 "# Current time local: %s\n# Current time GMT: %s\n",
23 scalar(localtime($^T)), scalar(gmtime($^T));
29 my $tree = HTML::TreeBuilder->new;
30 $tree->parse('<title>foo</title><p>I like pie');
33 "<html><head><title>foo</title></head><body>"
34 ."<p>I like pie</p></body></html>\n"
39 ok !same('x' => 'y', 1);
40 ok !same('<p>' => 'y', 1);
46 ok same('' => '<!-- tra la la -->');
47 ok same('' => '<!-- tra la la --><!-- foo -->');
49 ok same('' => \'<head></head><body></body>');
51 ok same('<head>' => '');
53 ok same('<head></head><body>' => \'<head></head><body></body>');
55 ok same( '<img alt="456" src="123">' => '<img src="123" alt="456">' );
56 ok same( '<img alt="456" src="123">' => '<img src="123" alt="456">' );
57 ok same( '<img alt="456" src="123">' => '<img src="123" alt="456" >' );
59 ok !same( '<img alt="456" >' => '<img src="123" alt="456" >', 1 );
62 ok same( 'abc xyz' => 'abc xyz' );
63 ok same( 'abc xyz' => 'abc xyz' );
65 ok same( 'abc+xyz' => 'abc+xyz' );
66 ok same( 'abc+xyz' => 'abc+xyz' );
68 ok same( 'abc+xyz' => 'abc+xyz' );
69 ok same( 'abc+xyz' => 'abc+xyz' );
71 print "#\n# Now some list tests.\n#\n";
74 ok same('<ul><li>x</ul>after' => '<ul><li>x</li></ul>after');
75 ok same('<ul><li>x<li>y</ul>after' => '<ul><li>x</li><li>y</li></ul>after');
78 ok same('<ul> <li>x</li> <li>y</li> </ul>after' => '<ul><li>x</li><li>y</li></ul>after');
80 ok same('<ul><li>x<li>y</ul>after' =>
81 \'<head></head><body><ul><li>x</li><li>y</li></ul>after</body>');
84 print "#\n# Now some table tests.\n#\n";
86 ok same('<table>x<td>y<td>z'
87 => '<table><tr><td>x</td><td>y</td><td>z</td></table>');
89 ok same('<table>x<td>y<tr>z'
90 => '<table><tr><td>x</td><td>y</td></tr><tr><td>z</td></tr></table>');
93 ok same( '<table><tr><td>x</td><td>y</td></tr><tr><td>z</td></tr></table>'
94 => '<table><tr><td>x</td><td>y</td></tr><tr><td>z</td></tr></table>');
95 ok same( '<table><tr><td>x</td><td>y</td></tr><tr><td>z</td></tr></table>'
96 => \'<head></head><body><table><tr><td>x</td><td>y</td></tr><tr><td>z</td></tr></table>');
98 ok same('<table>x' => '<td>x');
99 ok same('<table>x' => '<table><td>x');
100 ok same('<table>x' => '<tr>x');
101 ok same('<table>x' => '<tr><td>x');
102 ok same('<table>x' => '<table><tr>x');
103 ok same('<table>x' => '<table><tr><td>x');
107 print "#\n# Now some p tests.\n#\n";
109 ok same('<p>x<p>y<p>z' => '<p>x</p><p>y</p><p>z');
110 ok same('<p>x<p>y<p>z' => '<p>x</p><p>y<p>z</p>');
111 ok same('<p>x<p>y<p>z' => '<p>x</p><p>y</p><p>z</p>');
112 ok same('<p>x<p>y<p>z' => \'<head></head><body><p>x</p><p>y</p><p>z</p>');
116 my($code1, $code2, $flip) = @_;
117 my $t1 = HTML::TreeBuilder->new;
118 my $t2 = HTML::TreeBuilder->new;
120 if(ref $code1) { $t1->implicit_tags(0); $code1 = $$code1 }
121 if(ref $code2) { $t2->implicit_tags(0); $code2 = $$code2 }
123 $t1->parse($code1); $t1->eof;
124 $t2->parse($code2); $t2->eof;
126 my $out1 = $t1->as_XML;
127 my $out2 = $t2->as_XML;
129 my $rv = ($out1 eq $out2);
131 #print $rv? "RV TRUE\n" : "RV FALSE\n";
132 #print $flip? "FLIP TRUE\n" : "FLIP FALSE\n";
134 if($flip ? (!$rv) : $rv) {
147 "The following failure is at " . join(' : ' ,caller),
148 "Explanation of failure: " . ($flip ? 'same' : 'different')
150 "Input code 1:", $code1,
151 "Input code 2:", $code2,
152 "Output tree (as XML) 1:", $out1,
153 "Output tree (as XML) 2:", $out2,
157 print "# ", $_, "\n";