#!/usr/bin/perl
# Unit tests for the PITA::XML::Platform class
use strict;
BEGIN {
$| = 1;
$^W = 1;
}
use Test::More tests => 12;
use File::Spec::Functions ':ALL';
use PITA::XML ();
# Extra testing functions
sub dies {
my $code = shift;
eval { &$code() };
ok( $@, $_[0] || 'Code dies as expected' );
}
sub dies_like {
my $code = shift;
my $regexp = shift;
eval { &$code() };
like( $@, $regexp, $_[0] || 'Core dies like expected' );
}
#####################################################################
# Create sample data
my $XMLNS = PITA::XML->XMLNS;
ok( $XMLNS, 'Got XML namespace' );
my $EMPTY_FILE = catfile( 't', 'samples', 'empty.pita' );
ok( -f $EMPTY_FILE, 'Sample empty.pita file exists' );
ok( -f $EMPTY_FILE, 'Sample empty.pita file is readable' );
my $SINGLE_FILE = catfile( 't', 'samples', 'single.pita' );
ok( -f $SINGLE_FILE, 'Sample single.pita file exists' );
ok( -f $SINGLE_FILE, 'Sample single.pita file is readable' );
# Create some documents a plan text
my $empty_report = <<"END_XML";
END_XML
my $empty_request = <<"END_XML";
END_XML
#####################################################################
# Validation
SKIP: {
skip("Tests out of date", 3 );
ok( PITA::XML->validate( \"" ),
'Sample (empty) string validates' );
ok( PITA::XML->validate( $EMPTY_FILE ),
'Sample (empty) file validates' );
ok( PITA::XML->validate( $SINGLE_FILE ),
'Sample (single) file validates' );
}
#####################################################################
# Practical Parsing Test
# Create some sample objects from minimal strings
SCOPE: {
my $report = PITA::XML::Report->read( \$empty_report );
isa_ok( $report, 'PITA::XML::Report' );
is( scalar($report->installs), 0, '->installs returns zero' );
is_deeply( [ $report->installs ], [], '->installs returns null list' );
}
# Shouldn't be able to create something from just a request
# This should die somehow...
dies( sub { PITA::XML::Request->read(
\$empty_request,
) },
'->new(bad request xml) dies as expected',
);