Debian lenny version packages
[pkg-perl] / deb-src / libhtml-parser-perl / libhtml-parser-perl-3.56 / t / cases.t
1 use Test::More;
2
3 require HTML::Parser;
4
5 package P; @ISA = qw(HTML::Parser);
6
7 my @result;
8 sub start
9 {
10     my($self, $tag, $attr) = @_;
11     push @result, "START[$tag]";
12     for (sort keys %$attr) {
13         push @result, "\t$_: " . $attr->{$_};
14     }
15     $start++;
16 }
17
18 sub end
19 {
20     my($self, $tag) = @_;
21     push @result, "END[$tag]";
22     $end++;
23 }
24
25 sub text
26 {
27     my $self = shift;
28     push @result, "TEXT[$_[0]]";
29     $text++;
30 }
31
32 sub comment
33 {
34     my $self = shift;
35     push @result, "COMMENT[$_[0]]";
36     $comment++;
37 }
38
39 sub declaration
40 {
41     my $self = shift;
42     push @result, "DECLARATION[$_[0]]";
43     $declaration++;
44 }
45
46 package main;
47
48
49 @tests =
50     (
51      '<a ">' => ['START[a]', "\t\": \""],
52      '<a/>' => ['START[a/]',],
53      '<a />' => ['START[a]', "\t/: /"],
54      '<a a/>' => ['START[a]', "\ta/: a/"],
55      '<a a/=/>' => ['START[a]', "\ta/: /"],
56      '<a x="foo&nbsp;bar">' => ['START[a]', "\tx: foo\xA0bar"],
57      '<a x="foo&nbspbar">' => ['START[a]', "\tx: foo&nbspbar"],
58      '<å >' => ['TEXT[<å]', 'TEXT[ >]'],
59      '2 < 5' => ['TEXT[2 ]', 'TEXT[<]', 'TEXT[ 5]'],
60      '2 <5> 2' => ['TEXT[2 ]', 'TEXT[<5>]', 'TEXT[ 2]'],
61      '2 <a' => ['TEXT[2 ]', 'TEXT[<a]'],
62      '2 <a> 2' => ['TEXT[2 ]', 'START[a]', 'TEXT[ 2]'],
63      '2 <a href=foo' => ['TEXT[2 ]', 'TEXT[<a href=foo]'],
64      "2 <a href='foo bar'> 2" =>
65          ['TEXT[2 ]', 'START[a]', "\thref: foo bar", 'TEXT[ 2]'],
66      '2 <a href=foo bar> 2' =>
67          ['TEXT[2 ]', 'START[a]', "\tbar: bar", "\thref: foo", 'TEXT[ 2]'],
68      '2 <a href="foo bar"> 2' =>
69          ['TEXT[2 ]', 'START[a]', "\thref: foo bar", 'TEXT[ 2]'],
70      '2 <a href="foo\'bar"> 2' =>
71          ['TEXT[2 ]', 'START[a]', "\thref: foo'bar", 'TEXT[ 2]'],
72      "2 <a href='foo\"bar'> 2" =>
73          ['TEXT[2 ]', 'START[a]', "\thref: foo\"bar", 'TEXT[ 2]'],
74      "2 <a href='foo&quot;bar'> 2" =>
75          ['TEXT[2 ]', 'START[a]', "\thref: foo\"bar", 'TEXT[ 2]'],
76      '2 <a.b> 2' => ['TEXT[2 ]', 'START[a.b]', 'TEXT[ 2]'],
77      '2 <a.b-12 a.b = 2 a> 2' =>
78          ['TEXT[2 ]', 'START[a.b-12]', "\ta: a", "\ta.b: 2", 'TEXT[ 2]'],
79      '2 <a_b> 2' => ['TEXT[2 ]', 'START[a_b]', 'TEXT[ 2]'],
80      '<!ENTITY nbsp   CDATA "&#160;" -- no-break space -->' =>
81          ['DECLARATION[ENTITY nbsp   CDATA "&#160;" -- no-break space --]'],
82      '<!-- comment -->' => ['COMMENT[ comment ]'],
83      '<!-- comment -- --- comment -->' =>
84          ['COMMENT[ comment ]', 'COMMENT[- comment ]'],
85      '<!-- comment <!-- not comment --> comment -->' =>
86          ['COMMENT[ comment <!]', 'COMMENT[> comment ]'],
87      '<!-- <a href="foo"> -->' => ['COMMENT[ <a href="foo"> ]'],
88      );
89
90 plan tests => @tests / 2;
91
92 my $i = 0;
93 TEST:
94 while (@tests) {
95     ++$i;
96     my ($html, $expected) = splice @tests, 0, 2;
97     @result = ();
98
99     $p = new P;
100     $p->strict_comment(1);
101     $p->parse($html)->eof;
102
103     ok(eq_array($expected, \@result)) or diag("Expected: @$expected\n",
104                                               "Got:      @result\n");
105 }