Blame t/canon_xml_writer.t

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: canon_xml_writer.t,v 1.2 1999/08/10 21:42:39 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..5\n"; }
Packit d27c7e
END {print "not ok 1\n" unless $loaded;}
Packit d27c7e
use XML::Parser::PerlSAX;
Packit d27c7e
use XML::Handler::CanonXMLWriter;
Packit d27c7e
Packit d27c7e
$loaded = 1;
Packit d27c7e
print "ok 1\n";
Packit d27c7e
Packit d27c7e
######################### End of black magic.
Packit d27c7e
Packit d27c7e
# Insert your test code below (better if it prints "ok 13"
Packit d27c7e
# (correspondingly "not ok 13") depending on the success of chunk 13
Packit d27c7e
# of the test code):
Packit d27c7e
Packit d27c7e
my $parser = XML::Parser::PerlSAX->new;
Packit d27c7e
Packit d27c7e
my $writer = XML::Handler::CanonXMLWriter->new;
Packit d27c7e
if ($writer) {
Packit d27c7e
    print "ok 2\n";
Packit d27c7e
} else {
Packit d27c7e
    print "not ok 2\n";
Packit d27c7e
    exit;
Packit d27c7e
}
Packit d27c7e
Packit d27c7e
Packit d27c7e
#
Packit d27c7e
# The following XML is copied from XML::Parser by Clark Cooper
Packit d27c7e
#
Packit d27c7e
Packit d27c7e
# XML string for tests
Packit d27c7e
Packit d27c7e
my $xmlstring =<<"End_of_XML;";
Packit d27c7e
Packit d27c7e
  [
Packit d27c7e
    
Packit d27c7e
    
Packit d27c7e
   ]>
Packit d27c7e
<foo>
Packit d27c7e
  First line in foo
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
</foo>
Packit d27c7e
End_of_XML;
Packit d27c7e
Packit d27c7e
###
Packit d27c7e
### plain test
Packit d27c7e
###
Packit d27c7e
Packit d27c7e
$expected_result = <<'End_of_XML;';
Packit d27c7e
<foo>
  First line in foo
  <bar id="jack" stomp="jill">
  
    1st line in bar
    <blah> 2nd line in bar </blah>
    3rd line in bar 
  </bar>
  <zap ref="zing"></zap>
</foo>
Packit d27c7e
End_of_XML;
Packit d27c7e
$expected_result =~ s/\n$//s;
Packit d27c7e
Packit d27c7e
$canon_xml = $parser->parse( Source => { String => $xmlstring },
Packit d27c7e
                             Handler => $writer );
Packit d27c7e
Packit d27c7e
if ($canon_xml eq $expected_result) {
Packit d27c7e
    print "ok 3\n";
Packit d27c7e
} else {
Packit d27c7e
    warn "---- expected result ----\n";
Packit d27c7e
    warn "$expected_result\n";
Packit d27c7e
    warn "---- actual result ----\n";
Packit d27c7e
    warn "$canon_xml\n";
Packit d27c7e
    print "not ok 3\n";
Packit d27c7e
}
Packit d27c7e
Packit d27c7e
###
Packit d27c7e
### Test PrintComments option
Packit d27c7e
###
Packit d27c7e
Packit d27c7e
$expected_result = <<'End_of_XML;';
Packit d27c7e
<foo>
  First line in foo
  <bar id="jack" stomp="jill">
  
    1st line in bar
    <blah> 2nd line in bar </blah>
    3rd line in bar 
  </bar>
  <zap ref="zing"></zap>
</foo>
Packit d27c7e
End_of_XML;
Packit d27c7e
$expected_result =~ s/\n$//s;
Packit d27c7e
Packit d27c7e
$writer->{PrintComments} = 1;
Packit d27c7e
$canon_xml = $parser->parse( Source => { String => $xmlstring },
Packit d27c7e
                             Handler => $writer );
Packit d27c7e
Packit d27c7e
if ($canon_xml eq $expected_result) {
Packit d27c7e
    print "ok 4\n";
Packit d27c7e
} else {
Packit d27c7e
    warn "---- expected result ----\n";
Packit d27c7e
    warn "$expected_result\n";
Packit d27c7e
    warn "---- actual result ----\n";
Packit d27c7e
    warn "$canon_xml\n";
Packit d27c7e
    print "not ok 4\n";
Packit d27c7e
}
Packit d27c7e
Packit d27c7e
undef $writer->{PrintComments};
Packit d27c7e
Packit d27c7e
###
Packit d27c7e
### Test James Clark's XML test suite
Packit d27c7e
###
Packit d27c7e
Packit d27c7e
$xml_test = (defined $ENV{XMLTEST}) ? $ENV{XMLTEST} : "$ENV{HOME}/xmltest";
Packit d27c7e
Packit d27c7e
# allow test to skip if directory does not exist and MUST_TEST isn't set
Packit d27c7e
if (!-d $xml_test && !defined($ENV{MUST_TEST})) {
Packit d27c7e
    print "ok 5\n";
Packit d27c7e
    exit;
Packit d27c7e
}
Packit d27c7e
Packit d27c7e
$tested_file = 0;
Packit d27c7e
foreach $file (glob("$xml_test/valid/sa/*.xml")) {
Packit d27c7e
    $tested_file = 1;
Packit d27c7e
    $canon_xml = $parser->parse( Source => { SystemId => $file },
Packit d27c7e
				 Handler => $writer );
Packit d27c7e
    # add the `out' dir to get the corresponding canon xml
Packit d27c7e
    ($out_file = $file) =~ s|/([^/]+)$|/out/$1|;
Packit d27c7e
    open (CANON, $out_file)
Packit d27c7e
	or die "$out_file: $!\n";
Packit d27c7e
    $expected_result = join('', <CANON>);
Packit d27c7e
    close (CANON);
Packit d27c7e
    if ($canon_xml ne $expected_result) {
Packit d27c7e
	warn "---- expected result for $file ----\n";
Packit d27c7e
	warn "$expected_result\n";
Packit d27c7e
	warn "---- actual result ----\n";
Packit d27c7e
	warn "$canon_xml\n";
Packit d27c7e
	$not_ok = 1;
Packit d27c7e
    }
Packit d27c7e
}
Packit d27c7e
Packit d27c7e
if (!$tested_file || $not_ok) {
Packit d27c7e
    print "not ok 5\n";
Packit d27c7e
} else {
Packit d27c7e
    print "ok 5\n";
Packit d27c7e
}