package XLSC_Test; use strict; our $AUTOLOAD; use Data::Dumper; use Test::More; my @EVENTS = ( { Event => 'start_document' }, { Event => 'xml_decl', Version => '1.0' }, { Event => 'start_prefix_mapping', Prefix => '', NamespaceURI => 'http://foobar.com', }, { Event => 'start_element', LocalName => 'foo', Prefix => '', Attributes => { '{}xmlns' => { LocalName => 'xmlns', Prefix => '', Value => 'http://foobar.com', Name => 'xmlns', NamespaceURI => '', } }, Name => 'foo', NamespaceURI => 'http://foobar.com', }, { Event => 'start_element', LocalName => 'bar', Prefix => '', Attributes => { '{}x' => { LocalName => 'x', Prefix => '', Value => 1, Name => 'x', NamespaceURI => '' } }, Name => 'bar', NamespaceURI => 'http://foobar.com' }, { Event => 'start_element', LocalName => 'baz', Prefix => '', Attributes => {}, Name => 'baz', NamespaceURI => "http://foobar.com" }, { Event => 'characters', Data => 'whoopla', }, { Event => 'end_element', LocalName => 'baz', Prefix => '', Name => 'baz', NamespaceURI => 'http://foobar.com' }, { Event => 'end_element', LocalName => 'bar', Prefix => '', Name => 'bar', NamespaceURI => 'http://foobar.com' }, { Event => 'end_element', LocalName => 'foo', Prefix => '', Name => 'foo', NamespaceURI => 'http://foobar.com' }, { Event => 'end_prefix_mapping', Prefix => '', NamespaceURI => 'http://foobar.com', } ); sub new { bless { events => [ @EVENTS ] }, shift } sub DESTROY { } sub AUTOLOAD { my ($self, $arg) = @_; my $got_event = $AUTOLOAD; $got_event =~ s/^.+:://; $arg ||= {}; my $expected = shift @{ $self->{events} }; my $event = delete $expected->{Event}; is ($got_event, $event, "event should be $event"); is_deeply( $arg, $expected ); } package main; use strict; use Test::More( tests => 23 ); use XML::SAX; XML::SAX->add_parser( q{XML::LibXML::SAX::ChunkParser} ); { my $parser = XML::SAX::ParserFactory->parser( Handler => XLSC_Test->new ); isa_ok($parser, "XML::LibXML::SAX::ChunkParser" ); } { my @chunks = ( q||, q||, q|<|, q|bar x="1"|, q|>|, q|whoopla|, q|<|, q|/|, q|bar>|, q||, ); my $parser = XML::SAX::ParserFactory->parser( Handler => XLSC_Test->new ); foreach my $chunk (@chunks) { diag("parsing chunk '$chunk'"); $parser->parse_chunk($chunk); } }