libxml-sax-base-perl/t/01simpledriver.t

230 lines
3.8 KiB
Perl
Raw Permalink Normal View History

2022-09-01 16:05:48 +08:00
use Test;
BEGIN { plan tests => 1 }
use XML::SAX::Base;
my $sax_it = SAXIterator->new();
my $driver = Driver->new(Handler => $sax_it);
my $retval = $driver->parse();
ok ($retval == 32);
# end main
package Driver;
use base qw(XML::SAX::Base);
sub parse {
my $self = shift;
$self->SUPER::start_document;
$self->SUPER::start_element;
$self->SUPER::characters;
$self->SUPER::processing_instruction;
$self->SUPER::end_prefix_mapping;
$self->SUPER::start_prefix_mapping;
$self->SUPER::set_document_locator;
$self->SUPER::xml_decl;
$self->SUPER::ignorable_whitespace;
$self->SUPER::skipped_entity;
$self->SUPER::start_cdata;
$self->SUPER::end_cdata;
$self->SUPER::comment;
$self->SUPER::entity_reference;
$self->SUPER::unparsed_entity_decl;
$self->SUPER::element_decl;
$self->SUPER::attlist_decl;
$self->SUPER::doctype_decl;
$self->SUPER::entity_decl;
$self->SUPER::attribute_decl;
$self->SUPER::internal_entity_decl;
$self->SUPER::external_entity_decl;
$self->SUPER::resolve_entity;
$self->SUPER::start_dtd;
$self->SUPER::end_dtd;
$self->SUPER::start_entity;
$self->SUPER::end_entity;
$self->SUPER::warning;
$self->SUPER::error;
$self->SUPER::fatal_error;
$self->SUPER::end_element;
return $self->SUPER::end_document;
}
1;
# basic single class SAX Handler
package SAXIterator;
use strict;
sub new {
my $proto = shift;
my $class = ref($proto) || $proto;
my %options = @_;
$options{_cnt} = 0;
return bless \%options, $class;
}
sub start_document {
my ($self, $document) = @_;
$self->{_cnt}++;
}
sub start_element {
my ($self, $element) = @_;
$self->{_cnt}++;
}
sub characters {
my ($self, $chars) = @_;
$self->{_cnt}++;
}
sub end_element {
my ($self, $element) = @_;
$self->{_cnt}++;
}
sub end_document {
my ($self, $document) = @_;
$self->{_cnt}++;
return $self->{_cnt};
}
sub processing_instruction {
my ($self, $pi) = @_;
$self->{_cnt}++;
}
sub end_prefix_mapping {
my ($self, $mapping) = @_;
$self->{_cnt}++;
}
sub start_prefix_mapping {
my ($self, $mapping) = @_;
$self->{_cnt}++;
}
sub set_document_locator {
my ($self, $mapping) = @_;
$self->{_cnt}++;
}
sub xml_decl {
my ($self, $mapping) = @_;
$self->{_cnt}++;
}
sub ignorable_whitespace {
my ($self, $wtf) = @_;
$self->{_cnt}++;
}
sub skipped_entity {
my ($self, $wtf) = @_;
$self->{_cnt}++;
}
sub start_cdata {
my ($self, $wtf) = @_;
$self->{_cnt}++;
}
sub end_cdata {
my ($self, $wtf) = @_;
$self->{_cnt}++;
}
sub comment {
my ($self, $wtf) = @_;
$self->{_cnt}++;
}
sub entity_reference {
my ($self, $wtf) = @_;
$self->{_cnt}++;
}
sub unparsed_entity_decl {
my ($self, $wtf) = @_;
$self->{_cnt}++;
}
sub element_decl {
my ($self, $wtf) = @_;
$self->{_cnt}++;
}
sub attlist_decl {
my ($self, $wtf) = @_;
$self->{_cnt}++;
}
sub doctype_decl {
my ($self, $wtf) = @_;
$self->{_cnt}++;
}
sub entity_decl {
my ($self, $wtf) = @_;
$self->{_cnt}++;
}
sub attribute_decl {
my ($self, $wtf) = @_;
$self->{_cnt}++;
}
sub internal_entity_decl {
my ($self, $wtf) = @_;
$self->{_cnt}++;
}
sub external_entity_decl {
my ($self, $wtf) = @_;
$self->{_cnt}++;
}
sub resolve_entity {
my ($self, $wtf) = @_;
$self->{_cnt}++;
}
sub start_dtd {
my ($self, $wtf) = @_;
$self->{_cnt}++;
}
sub end_dtd {
my ($self, $wtf) = @_;
$self->{_cnt}++;
}
sub start_entity {
my ($self, $wtf) = @_;
$self->{_cnt}++;
}
sub end_entity {
my ($self, $wtf) = @_;
$self->{_cnt}++;
}
sub warning {
my ($self, $wtf) = @_;
$self->{_cnt}++;
}
sub error {
my ($self, $wtf) = @_;
$self->{_cnt}++;
}
sub fatal_error {
my ($self, $wtf) = @_;
$self->{_cnt}++;
}
1;