1use Test; 2BEGIN { plan tests => 16 } 3use XML::SAX::ParserFactory; 4 5# load SAX parsers (no ParserDetails.ini available at first in blib) 6use XML::SAX qw(Namespaces Validation); 7ok(@{XML::SAX->parsers}, 0); 8ok(XML::SAX->add_parser(q(XML::SAX::PurePerl))); 9ok(@{XML::SAX->parsers}, 1); 10 11ok(XML::SAX::ParserFactory->parser); # test class method 12my $factory = XML::SAX::ParserFactory->new(); 13ok($factory); 14ok($factory->parser); 15 16ok($factory->require_feature(Namespaces)); 17ok($factory->parser); 18 19ok($factory->require_feature(Validation)); 20eval { 21 my $parser = $factory->parser; 22 # should never get here unless PurePerl starts providing validation 23 ok(!$parser); 24}; 25ok($@); 26ok($@->isa('XML::SAX::Exception')); 27 28$factory = XML::SAX::ParserFactory->new(); 29my $parser = $factory->parser; 30ok($parser); 31eval { 32 $parser->parse_string('<widget/>'); 33 ok(1); 34}; 35ok(!$@); 36 37local $XML::SAX::ParserPackage = 'XML::SAX::PurePerl'; 38ok(XML::SAX::ParserFactory->parser); 39 40local $XML::SAX::ParserPackage = 'XML::SAX::PurePerl (0.01)'; 41ok(XML::SAX::ParserFactory->parser); 42 43