print "1..6\n";
use strict;
use HTML::Parser ();
my $p = HTML::Parser->new(api_version => 3);
$p->handler(start => sub { my $attr = shift; print "ok $attr->{testno}\n" },
"attr");
$p->handler(end => sub { shift->eof }, "self");
my $text;
$p->handler(text => sub { $text = shift }, "text");
print "not " unless $p->parse("") == $p;
print "ok 2\n";
$text = '';
print "not " if $p->parse("");
print "ok 3\n";
print "not " if $text;
print "ok 4\n";
$p->handler(end => sub { $p->parse("foo"); }, "");
eval {
$p->parse("");
};
print "not " unless $@ && $@ =~ /Parse loop not allowed/;
print "ok 5\n";
# We used to get into an infinite loop if the eof triggered
# handler called ->eof
use HTML::Parser;
$p = HTML::Parser->new(api_version => 3);
my $i;
$p->handler("default" =>
sub {
my $p=shift;
#++$i; print "$i @_\n";
$p->eof;
}, "self, event");
$p->parse("Foo");
$p->eof;
print "ok 6\n";