#!/usr/bin/perl
# Unit tests for the PITA::XML::Test class
use strict;
BEGIN {
$| = 1;
$^W = 1;
}
use Test::More tests => 33;
use PITA::XML ();
# Extra testing functions
sub dies {
my $code = shift;
eval { &$code() };
ok( $@, $_[0] || 'Code dies as expected' );
}
#####################################################################
# Testing a sample of the functionality
# Test an ordinary object
SCOPE: {
my $test = PITA::XML::Test->new(
name => 'foo',
language => 'text/plain',
stdout => \"1..0\n",
stderr => \"",
exitcode => 0,
);
isa_ok( $test, 'PITA::XML::Test' );
is( $test->name, 'foo', '->name returns as expected' );
is( $test->language, 'text/plain', '->language returns as expected' );
is_deeply( $test->stdout, \"1..0\n", '->stdout returns as expected' );
is_deeply( $test->stderr, \"", '->stderr returns as expected' );
is( $test->exitcode, 0, '->exitcode returns as expected' );
}
# Test a minimal object
SCOPE: {
my $test = PITA::XML::Test->new(
stdout => \"1..1\nok 1 test is ok\n",
);
isa_ok( $test, 'PITA::XML::Test' );
is( $test->name, undef, '->name returns as expected' );
is( $test->language, 'text/x-tap', '->language returns as expected' );
is_deeply( $test->stdout, \"1..1\nok 1 test is ok\n", '->stdout returns as expected' );
is_deeply( $test->stderr, undef, '->stderr returns as expected' );
is( $test->exitcode, undef, '->exitcode returns as expected' );
}
#####################################################################
# Bad STDOUT
dies(
sub { PITA::XML::Platform->new },
'->new dies as expected',
);
dies(
sub { PITA::XML::Platform->new(
stdout => undef,
) },
'->stdout(undef) dies as expected',
);
dies(
sub { PITA::XML::Platform->new(
stdout => '',
) },
'->stdout("") dies as expected',
);
dies(
sub { PITA::XML::Platform->new(
stdout => "1..1\nok\n",
) },
'->stdout(valid but non-ref) dies as expected',
);
dies(
sub { PITA::XML::Platform->new(
stdout => [],
) },
'->stdout(ARRAY) dies as expected',
);
#####################################################################
# Bad name
dies(
sub { PITA::XML::Platform->new(
name => undef,
stdout => \"1..1\nok\n",
) },
'->name(undef) dies as expected',
);
dies(
sub { PITA::XML::Platform->new(
name => '',
stdout => \"1..1\nok\n",
) },
'->name("") dies as expected',
);
dies(
sub { PITA::XML::Platform->new(
name => \"",
stdout => \"1..1\nok\n",
) },
'->name(SCALAR) dies as expected',
);
dies(
sub { PITA::XML::Platform->new(
name => [],
stdout => \"1..1\nok\n",
) },
'->name(ARRAY) dies as expected',
);
#####################################################################
# Bad language
dies(
sub { PITA::XML::Platform->new(
language => undef,
stdout => \"1..1\nok\n",
) },
'->language(undef) dies as expected',
);
dies(
sub { PITA::XML::Platform->new(
language => '',
stdout => \"1..1\nok\n",
) },
'->language("") dies as expected',
);
dies(
sub { PITA::XML::Platform->new(
language => \"",
stdout => \"1..1\nok\n",
) },
'->language(SCALAR) dies as expected',
);
dies(
sub { PITA::XML::Platform->new(
language => [],
stdout => \"1..1\nok\n",
) },
'->language(ARRAY) dies as expected',
);
#####################################################################
# Bad STDERR
dies(
sub { PITA::XML::Platform->new(
stderr => undef,
stdout => \"1..1\nok\n",
) },
'->stderr(undef) dies as expected',
);
dies(
sub { PITA::XML::Platform->new(
stderr => '',
stdout => \"1..1\nok\n",
) },
'->stderr("") dies as expected',
);
dies(
sub { PITA::XML::Platform->new(
stderr => "1..1\nok\n",
stdout => \"1..1\nok\n",
) },
'->stderr(valid but non-ref) dies as expected',
);
dies(
sub { PITA::XML::Platform->new(
stderr => [],
stdout => \"1..1\nok\n",
) },
'->stderr(ARRAY) dies as expected',
);
#####################################################################
# Bad exit code
dies(
sub { PITA::XML::Platform->new(
exitcode => undef,
stdout => \"1..1\nok\n",
) },
'->exitcode(undef) dies as expected',
);
dies(
sub { PITA::XML::Platform->new(
exitcode => '',
stdout => \"1..1\nok\n",
) },
'->exitcode("") dies as expected',
);
dies(
sub { PITA::XML::Platform->new(
exitcode => \"",
stdout => \"1..1\nok\n",
) },
'->exitcode(SCALAR) dies as expected',
);
dies(
sub { PITA::XML::Platform->new(
exitcode => [],
stdout => \"1..1\nok\n",
) },
'->exitcode(ARRAY) dies as expected',
);
exit(0);