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