Mini Shell
use strict;
use Test;
plan tests => 8;
use File::Path;
use Fatal qw(open close chdir mkpath);
use XML::SAX;
use vars qw(*FILE);
ok(@{XML::SAX->parsers}, 0);
ok(XML::SAX->add_parser(q(XML::SAX::PurePerl)));
ok(@{XML::SAX->parsers}, 1);
rmtree('t/lib', 0, 0);
mkpath('t/lib', 0, 0777);
push @INC, 't/lib';
write_file('t/lib/TestParserPackage.pm', <<EOT);
package TestParserPackage;
use XML::SAX::Base;
\@ISA = qw(XML::SAX::Base);
sub new {
return bless {}, shift
}
sub supported_features {
return ('http://axkit.org/sax/frobnosticating');
}
1;
EOT
my $parser;
# Test we can get TestParserPackage out
write_file('t/lib/SAX.ini', 'ParserPackage = TestParserPackage');
$parser = XML::SAX::ParserFactory->parser();
ok(ref($parser), "TestParserPackage", "Parser was not TestParserPackage");
# Test we can get XML::SAX::PurePerl out
write_file('t/lib/SAX.ini', 'ParserPackage = XML::SAX::PurePerl');
$parser = XML::SAX::ParserFactory->parser();
ok(ref($parser), "XML::SAX::PurePerl", "Parser was not XML::SAX::PurePerl");
# Test we can ask for a frobnosticating parser, but not get it
write_file('t/lib/SAX.ini', 'http://axkit.org/sax/frobnosticating = 1');
$parser = XML::SAX::ParserFactory->parser();
ok(ref($parser), "XML::SAX::PurePerl", "Parser was not PurePerl (frobnosticating)");
# Test we can ask for a frobnosticating parser, and get it
XML::SAX->add_parser('TestParserPackage');
$parser = XML::SAX::ParserFactory->parser();
ok(ref($parser), "TestParserPackage", "Parser was not TestParserPackage (frobnosticating)");
# Test we can get a namespaces parser
write_file('t/lib/SAX.ini', 'http://xml.org/sax/features/namespaces = 1');
$parser = XML::SAX::ParserFactory->parser();
ok(ref($parser), "XML::SAX::PurePerl", "Parser was not PurePerl (namespaces)");
sub write_file {
my ($file, $data) = @_;
open(FILE, ">$file");
print FILE $data, "\n";
close FILE;
}
Zerion Mini Shell 1.0