7a456cfd82ed92dbc78da9f90e3cf3e0abd74265
[dh-make-perl] / dev / arm / libhtml-parser-perl / libhtml-parser-perl-3.56 / t / callback.t
1 use Test::More tests => 47;
2
3 use strict;
4 use HTML::Parser;
5
6 my @expected;
7 my $p = HTML::Parser->new(api_version => 3,
8                           unbroken_text => 1,
9                           default_h => [\@expected, '@{event, text}'],
10                          );
11
12 my $doc = <<'EOT';
13 <title>Hi</title>
14 <h1>Ho ho</h1>
15 <--comment->
16 EOT
17
18 $p->parse($doc)->eof;
19 #use Data::Dump; Data::Dump::dump(@expected);
20
21 for my $i (1..length($doc)) {
22      my @t;
23      $p->handler(default => \@t);
24      $p->parse(chunk($doc, $i));
25
26      # check that we got the same stuff
27      #diag "X:", join(":", @t);
28      #diag "Y:", join(":", @expected);
29      is(join(":", @t), join(":", @expected));
30 }
31
32 sub chunk {
33     my $str = shift;
34     my $size = shift || 1;
35     sub {
36         my $res = substr($str, 0, $size);
37         #diag "...$res";
38         substr($str, 0, $size) = "";
39         $res;
40     }
41 }
42
43 # Test croking behaviour
44 $p->handler(default => []);
45
46 eval {
47    $p->parse(sub { die "Hi" });
48 };
49 like($@, qr/^Hi/);