# Test handler method use Test::More tests => 11; my $testno; use HTML::Parser; { package MyParser; use vars qw(@ISA); @ISA=(HTML::Parser); sub foo { Test::More::is($_[1]{testno}, Test::More->builder->current_test + 1); } sub bar { Test::More::is($_[1], Test::More->builder->current_test + 1); } } $p = MyParser->new(api_version => 3); eval { $p->handler(foo => "foo", "foo"); }; like($@, qr/^No handler for foo events/); eval { $p->handler(start => "foo", "foo"); }; like($@, qr/^Unrecognized identifier foo in argspec/); my $h = $p->handler(start => "foo", "self,tagname"); ok(!defined($h)); $x = \substr("xfoo", 1); $p->handler(start => $$x, "self,attr"); $p->parse(""); $p->handler(start => \&MyParser::foo, "self,attr"); $p->parse(""); $p->handler(start => "foo"); $p->parse(""); $p->handler(start => "bar", "self,'7'"); $p->parse(""); eval { $p->handler(start => {}, "self"); }; like($@, qr/^Only code or array references allowed as handler/); $a = []; $p->handler(start => $a); $h = $p->handler("start"); is($p->handler("start", "foo"), $a); is($p->handler("start", \&MyParser::foo, ""), "foo"); is($p->handler("start"), \&MyParser::foo);