1use strict; 2use Test; 3plan tests => 8; 4 5use File::Path; 6use Fatal qw(open close chdir mkpath); 7use XML::SAX; 8use vars qw(*FILE); 9 10ok(@{XML::SAX->parsers}, 0); 11ok(XML::SAX->add_parser(q(XML::SAX::PurePerl))); 12ok(@{XML::SAX->parsers}, 1); 13 14rmtree('t/lib', 0, 0); 15mkpath('t/lib', 0, 0777); 16 17push @INC, 't/lib'; 18write_file('t/lib/TestParserPackage.pm', <<EOT); 19package TestParserPackage; 20use XML::SAX::Base; 21\@ISA = qw(XML::SAX::Base); 22sub new { 23 return bless {}, shift 24} 25sub supported_features { 26 return ('http://axkit.org/sax/frobnosticating'); 27} 281; 29EOT 30 31my $parser; 32 33# Test we can get TestParserPackage out 34write_file('t/lib/SAX.ini', 'ParserPackage = TestParserPackage'); 35$parser = XML::SAX::ParserFactory->parser(); 36ok(ref($parser), "TestParserPackage", "Parser was not TestParserPackage"); 37 38# Test we can get XML::SAX::PurePerl out 39write_file('t/lib/SAX.ini', 'ParserPackage = XML::SAX::PurePerl'); 40$parser = XML::SAX::ParserFactory->parser(); 41ok(ref($parser), "XML::SAX::PurePerl", "Parser was not XML::SAX::PurePerl"); 42 43# Test we can ask for a frobnosticating parser, but not get it 44write_file('t/lib/SAX.ini', 'http://axkit.org/sax/frobnosticating = 1'); 45$parser = XML::SAX::ParserFactory->parser(); 46ok(ref($parser), "XML::SAX::PurePerl", "Parser was not PurePerl (frobnosticating)"); 47 48# Test we can ask for a frobnosticating parser, and get it 49XML::SAX->add_parser('TestParserPackage'); 50$parser = XML::SAX::ParserFactory->parser(); 51ok(ref($parser), "TestParserPackage", "Parser was not TestParserPackage (frobnosticating)"); 52 53# Test we can get a namespaces parser 54write_file('t/lib/SAX.ini', 'http://xml.org/sax/features/namespaces = 1'); 55$parser = XML::SAX::ParserFactory->parser(); 56ok(ref($parser), "XML::SAX::PurePerl", "Parser was not PurePerl (namespaces)"); 57 58sub write_file { 59 my ($file, $data) = @_; 60 open(FILE, ">$file"); 61 print FILE $data, "\n"; 62 close FILE; 63}