print "1..6\n"; use strict; use HTML::Entities qw(_decode_entities); eval { _decode_entities("<", undef); }; print "not " unless $@ && $@ =~ /^Can't inline decode readonly string/; print "ok 1\n"; eval { my $a = ""; _decode_entities($a, $a); }; print "not " unless $@ && $@ =~ /^2nd argument must be hash reference/; print "ok 2\n"; eval { my $a = ""; _decode_entities($a, []); }; print "not " unless $@ && $@ =~ /^2nd argument must be hash reference/; print "ok 3\n"; $a = "<"; _decode_entities($a, undef); print "not " unless $a eq "<"; print "ok 4\n"; _decode_entities($a, { "lt" => "<" }); print "not " unless $a eq "<"; print "ok 5\n"; my $x = "x" x 20; my $err; for (":", ":a", "a:", "a:a", "a:a:a", "a:::a") { my $a = $_; $a =~ s/:/&a;/g; my $b = $_; $b =~ s/:/$x/g; _decode_entities($a, { "a" => $x }); if ($a ne $b) { print "Something went wrong with '$_'\n"; $err++; } } print "not " if $err; print "ok 6\n";