1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
# Before `make install' is performed this script should be runnable with
# `make test'. After `make install' it should work as `perl test.pl'
use Test;
use XML::Filter::Reindent;
use strict;
my $expected = "result from end_document";
my $r;
my $output;
sub start_document{ $output = "" }
sub start_element { $output .= "<$_[1]->{Name}>" }
sub end_element { $output .= "</$_[1]->{Name}>" }
sub characters { $output .= $_[1]->{Data} }
sub end_document { return $expected }
my @tests = (
sub { ok 1 },
sub {
$r = XML::Filter::Reindent->new;
$r->start_document({});
ok ! defined $r->end_document({}), 1, "undefined result from end_document";
},
sub {
$output = "ouch";
$r = XML::Filter::Reindent->new( Handler => "main" );
$r->start_document({});
ok $r->end_document({}), $expected;
},
sub {
ok $output, "";
},
sub {
$r->start_document({});
$r->start_element({ Name => "foo" });
$r->start_element({ Name => "bar" });
$r->end_element({ Name => "bar" });
$r->end_element({ Name => "foo" });
ok $r->end_document({}), $expected;
},
sub {
ok $output =~ m{<foo>\n\s+<bar></bar>\n</foo>};
},
);
plan tests => scalar @tests;
$_->() for @tests;
|