|
Packit |
d27c7e |
# Hey Emacs, this is -*- perl -*- !
|
|
Packit |
d27c7e |
#
|
|
Packit |
d27c7e |
# Before `make install' is performed this script should be runnable with
|
|
Packit |
d27c7e |
# `make test'. After `make install' it should work as `perl test.pl'
|
|
Packit |
d27c7e |
#
|
|
Packit |
d27c7e |
# $Id: stream.t,v 1.2 2003/10/21 16:01:54 kmacleod Exp $
|
|
Packit |
d27c7e |
#
|
|
Packit |
d27c7e |
|
|
Packit |
d27c7e |
######################### We start with some black magic to print on failure.
|
|
Packit |
d27c7e |
|
|
Packit |
d27c7e |
# Change 1..1 below to 1..last_test_to_print .
|
|
Packit |
d27c7e |
# (It may become useful if the test is moved to ./t subdirectory.)
|
|
Packit |
d27c7e |
|
|
Packit |
d27c7e |
BEGIN { $| = 1; print "1..11\n"; }
|
|
Packit |
d27c7e |
END {print "not ok 1\n" unless $loaded;}
|
|
Packit |
d27c7e |
use XML::Parser::PerlSAX;
|
|
Packit |
d27c7e |
use XML::Handler::XMLWriter;
|
|
Packit |
d27c7e |
|
|
Packit |
d27c7e |
|
|
Packit |
d27c7e |
$loaded = 1;
|
|
Packit |
d27c7e |
print "ok 1\n";
|
|
Packit |
d27c7e |
|
|
Packit |
d27c7e |
my $subs = MySubs->new( AsString => 1 );
|
|
Packit |
d27c7e |
my $parser = XML::Parser::PerlSAX->new( Handler => $subs );
|
|
Packit |
d27c7e |
$string = $parser->parse(Source => { Encoding => 'ISO-8859-1',
|
|
Packit |
d27c7e |
String => <<"EOF;" } );
|
|
Packit |
d27c7e |
|
|
Packit |
d27c7e |
[
|
|
Packit |
d27c7e |
|
|
Packit |
d27c7e |
|
|
Packit |
d27c7e |
|
|
Packit |
d27c7e |
|
|
Packit |
d27c7e |
]>
|
|
Packit |
d27c7e |
<foo>
|
|
Packit |
d27c7e |
First line in foo
|
|
Packit |
d27c7e |
<boom>Fran is &fran; and Zoe is &zoe;</boom>
|
|
Packit |
d27c7e |
<bar id="jack" stomp="jill">
|
|
Packit |
d27c7e |
|
|
Packit |
d27c7e |
1st line in bar
|
|
Packit |
d27c7e |
<blah> 2nd line in bar </blah>
|
|
Packit |
d27c7e |
3rd line in bar
|
|
Packit |
d27c7e |
</bar>
|
|
Packit |
d27c7e |
<zap ref="zing" />
|
|
Packit |
d27c7e |
This, '\240', would be a bad character in UTF-8.
|
|
Packit |
d27c7e |
</foo>
|
|
Packit |
d27c7e |
EOF;
|
|
Packit |
d27c7e |
|
|
Packit |
d27c7e |
foreach $test (2..10) {
|
|
Packit |
d27c7e |
print $subs->{Tests}[$test] ? "ok $test\n" : "not ok $test\n" ;
|
|
Packit |
d27c7e |
}
|
|
Packit |
d27c7e |
|
|
Packit |
d27c7e |
$expected = <<"EOF;";
|
|
Packit |
d27c7e |
|
|
Packit |
d27c7e |
<foo>
|
|
Packit |
d27c7e |
First line in foo
|
|
Packit |
d27c7e |
<boom>Fran is fran-def and Zoe is zoe.ent</boom>
|
|
Packit |
d27c7e |
<bar id="jack" stomp="jill">
|
|
Packit |
d27c7e |
|
|
Packit |
d27c7e |
1st line in bar
|
|
Packit |
d27c7e |
<blah> 2nd line in bar </blah>
|
|
Packit |
d27c7e |
3rd line in bar
|
|
Packit |
d27c7e |
</bar>
|
|
Packit |
d27c7e |
<zap fubar="1" ref="zing"></zap>
|
|
Packit |
d27c7e |
This, '\240', would be a bad character in UTF-8.
|
|
Packit |
d27c7e |
</foo>
|
|
Packit |
d27c7e |
EOF;
|
|
Packit |
d27c7e |
|
|
Packit |
d27c7e |
print (($string eq $expected) ? "ok 11\n" : "not ok 11\n");
|
|
Packit |
d27c7e |
|
|
Packit |
d27c7e |
package MySubs;
|
|
Packit |
d27c7e |
use vars qw{ @ISA };
|
|
Packit |
d27c7e |
BEGIN { @ISA = qw{ XML::Handler::XMLWriter }; };
|
|
Packit |
d27c7e |
|
|
Packit |
d27c7e |
sub s_zap {
|
|
Packit |
d27c7e |
my ($self, $element) = @_;
|
|
Packit |
d27c7e |
|
|
Packit |
d27c7e |
$self->{Tests}[2] = 1; # we got here
|
|
Packit |
d27c7e |
$self->{Tests}[3] = 1
|
|
Packit |
d27c7e |
if $element->{Name} eq 'zap';
|
|
Packit |
d27c7e |
$self->{Tests}[4] = 1
|
|
Packit |
d27c7e |
if $element->{Name} eq $self->{Names}[-1];
|
|
Packit |
d27c7e |
$self->{Tests}[5] = 1
|
|
Packit |
d27c7e |
if $element == $self->{Nodes}[-1];
|
|
Packit |
d27c7e |
$self->{Tests}[6] = 1
|
|
Packit |
d27c7e |
if $#{$self->{Names}} == 1;
|
|
Packit |
d27c7e |
$self->{Tests}[7] = 1
|
|
Packit |
d27c7e |
if $#{$self->{Nodes}} == 1;
|
|
Packit |
d27c7e |
|
|
Packit |
d27c7e |
$element->{Attributes}{'fubar'} = 1;
|
|
Packit |
d27c7e |
|
|
Packit |
d27c7e |
$self->print_start_element($element);
|
|
Packit |
d27c7e |
}
|
|
Packit |
d27c7e |
|
|
Packit |
d27c7e |
sub e_zap {
|
|
Packit |
d27c7e |
my ($self, $element) = @_;
|
|
Packit |
d27c7e |
|
|
Packit |
d27c7e |
$self->{Tests}[8] = 1; # we got here
|
|
Packit |
d27c7e |
$self->{Tests}[9] = 1
|
|
Packit |
d27c7e |
if $self->in_element('zap');
|
|
Packit |
d27c7e |
$self->{Tests}[10] = 1
|
|
Packit |
d27c7e |
if $self->within_element('zap') == 1;
|
|
Packit |
d27c7e |
|
|
Packit |
d27c7e |
$self->print_end_element($element);
|
|
Packit |
d27c7e |
}
|