Debian lenny version packages
[pkg-perl] / deb-src / libhtml-parser-perl / libhtml-parser-perl-3.56 / t / skipped-text.t
1 use Test::More tests => 3;
2
3 use strict;
4 use HTML::Parser;
5
6 my $p = HTML::Parser->new(api_version => 3);
7
8 $p->report_tags("a");
9
10 my @doc;
11
12 $p->handler(start => \&a_handler, "skipped_text, text");
13 $p->handler(end_document => \@doc, '@{skipped_text}');
14
15 $p->parse(<<EOT)->eof;
16 <title>hi</title>
17 <h1><a href="foo">link</a></h1>
18 and <a foo="">some</a> text.
19 EOT
20
21 sub a_handler {
22     push(@doc, shift);
23     my $text = shift;
24     push(@doc, uc($text));
25 }
26
27
28 is(join("", @doc), <<'EOT');
29 <title>hi</title>
30 <h1><A HREF="FOO">link</a></h1>
31 and <A FOO="">some</a> text.
32 EOT
33
34 #
35 # Comment stripper.  Interaction with "" handlers.
36 #
37 my $doc = <<EOT;
38 <html>text</html>
39 <!-- comment -->
40 and some more <b>text</b>.
41 EOT
42 (my $expected = $doc) =~ s/<!--.*?-->//;
43
44 $p = HTML::Parser->new(api_version => 3);
45 $p->handler(comment => "");
46 $p->handler(end_document => sub {
47                                 my $stripped = shift;
48                                 #diag $stripped;
49                                 is($stripped, $expected);
50                             }, "skipped_text");
51 for (split(//, $doc)) {
52     $p->parse($_);
53 }
54 $p->eof;
55
56 #
57 # Interaction with unbroken text
58 #
59 my @x;
60 $p = HTML::Parser->new(api_version => 3, unbroken_text => 1);
61 $p->handler(text => \@x, '@{"X", skipped_text, text}');
62 $p->handler(end => "");
63 $p->handler(end_document => \@x, '@{"Y", skipped_text}');
64
65 $doc = "a a<a>b b</a>c c<x>d d</x>e";
66
67 for (split(//, $doc)) {
68    $p->parse($_);
69 }
70 $p->eof;
71
72 #diag join(":", @x);
73 is(join(":", @x), "X::a a:X:<a>:b bc c:X:<x>:d de:Y:");
74