package tests::TestTestCaseTest;
use strict;
use base qw/Test::Unit::TestCase/;
use Lire::Test::TestCase;
use Lire::Config;
use Lire::PluginManager;
use POSIX qw/setlocale LC_MESSAGES/;
sub test_set_up {
my $self = $_[0];
my $test = new Lire::Test::TestCase();
my $or_cfg = Lire::Config->instance();
my $or_locale = setlocale( LC_MESSAGES );
$test->set_up();
my $cfg = $test->{'cfg'};
$self->assert_str_equals( $cfg, Lire::Config->instance() );
$self->assert_str_equals( $or_locale, $test->{'_old_lc_messages'} );
$self->assert_str_equals( 'C', setlocale( LC_MESSAGES ) );
$test->tear_down();
$self->assert_str_equals( $or_cfg, Lire::Config->instance() );
$self->assert_str_equals( $test->{'_old_lc_messages'},
setlocale( LC_MESSAGES ) );
}
sub test_set_up_plugin_mgr {
my $self = $_[0];
my $original = $Lire::PluginManager::instance;
my $test = new Lire::Test::TestCase();
$self->assert_null( $test->{'_old_plugin_mgr'}, '_old_plugin_mgr' );
$test->set_up_plugin_mgr();
$self->assert_str_equals( $original, $test->{'_old_plugin_mgr'} );
$self->assert_str_not_equals( $original, $Lire::PluginManager::instance );
my $new = $Lire::PluginManager::instance;
$test->set_up_plugin_mgr();
$self->assert_str_equals( $original, $test->{'_old_plugin_mgr'} );
$self->assert_str_equals( $new, $Lire::PluginManager::instance );
$test->_tear_down_plugin_mgr();
$self->assert_str_equals( $original, $Lire::PluginManager::instance );
$self->assert_null( $test->{'_old_plugin_mgr'}, '_old_plugin_mgr' );
$test->_tear_down_plugin_mgr();
$self->assert_str_equals( $original, $Lire::PluginManager::instance );
}
sub test_set_up_tz {
my $self = $_[0];
my $mar11_2004_noon_in_EST = 1079024400;
my $test = new Lire::Test::TestCase();
local $ENV{'TZ'} = 'EST';
$test->set_up_tz( 'CEST' );
$self->assert_str_equals( 'EST', $test->{'_old_tz'} );
$self->assert_str_equals( 'CEST', $ENV{'TZ'} );
my @time = localtime( $mar11_2004_noon_in_EST );
$self->assert_num_equals( 17, $time[2] );
$test->_tear_down_tz();
$self->assert_str_equals( 'EST', $ENV{'TZ'} );
@time = localtime( $mar11_2004_noon_in_EST );
$self->assert_num_equals( 12, $time[2] );
$self->assert_null( $test->{'_old_tz'}, '_old_tz should be undef' );
}
sub test_assert_died {
my $self = $_[0];
my $test = new Lire::Test::TestCase();
eval { $test->assert_died() };
my $msg = $@;
my $success = $msg =~ /missing 'test' parameter/;
my $our_point_view = $msg =~ m!tests/TestTestCaseTest.pm:\d+!;
$self->assert( $success, "expected died with message 'missing 'test' parameter', got '$msg'" );
$self->assert( $our_point_view, "errror should be reported from our point of view, got '$msg'" );
eval { $test->assert_died( sub {} ) };
$success = $@ =~ /missing 'regex' parameter/;
$self->assert( $success, "expected died with message 'missing 'regex' parameter', got '$@'" );
eval { $test->assert_died( "", qr// ) };
$success = $@ =~ /'test' parameter.*CODE/;
$self->assert( $success, "expected died with message ''test' parameter.*CODE', got '$@'" );
eval { $test->assert_died( sub {}, "" ) };
$success = $@ =~ /'regex' parameter.*Regexp/;
$self->assert( $success, "expected died with message ''regex' parameter.*Regexp', got '$@'" );
eval { $test->assert_died( sub {}, qr// ) };
$success = $@ =~ /expected test to die/;
$self->assert( $success, "expected died with message 'expected test to die', got '$@'" );
eval { $test->assert_died( sub { die "wrong message"}, qr/good message/ ) };
$success = $@ =~ /expected die message to match/;
$our_point_view = $msg =~ m!tests/TestTestCaseTest.pm:\d+!;
$self->assert( $success, "expected die message with message 'expected die message to match', got '$@'" );
$self->assert( $our_point_view, "errror should be reported from our point of view, got '$msg'" );
eval { $test->assert_died( sub { die "wrong message"}, qr/good message/, "custom message" ) };
$success = $@ =~ /custom message/;
$self->assert( $success, "expected die message with message 'custom message', got '$@'" );
eval { $test->assert_died( sub { die "good message"}, qr/good message/ ) };
$self->assert( ! $@, "test shouldn't have failed: '$@'" );
}
sub test_lire_default_config_spec {
my $self = $_[0];
my $test = new Lire::Test::TestCase();
my $spec = $test->lire_default_config_spec();
$self->assert_not_null( $spec, "returned undef" );
$self->assert( UNIVERSAL::isa( $spec, 'Lire::Config::ConfigSpec' ),
'not a Lire::Config::ConfigSpec' );
my @toplevels = map { $_->name() } $spec->components();
$self->assert( scalar grep { $_ eq 'import_jobs' } @toplevels,
'expected to find an "import_jobs" parameter' );
}
sub test_assert_isa {
my $self = $_[0];
my $test = new Lire::Test::TestCase();
$test->assert_died( sub { $test->assert_isa() },
qr/missing 'class' parameter/ );
$test->assert_died( sub { $test->assert_isa( 'HASH' ) },
qr/missing 'instance' parameter/ );
$test->assert_died( sub { $test->assert_isa( 'HASH', undef ) },
qr/expected a 'HASH' instance, got undef/ );
$test->assert_died( sub { $test->assert_isa( 'HASH', undef, 'wawa') },
qr/wawa/ );
$test->assert_died( sub { $test->assert_isa( 'aClass', bless( {}, 'test') ) },
qr/expected a 'aClass' instance, got a 'test' instance/);
$test->assert_died( sub { $test->assert_isa( 'HASH', 'test' ) },
qr/expected a 'HASH' instance, got unblessed 'test'/);
$test->assert_isa( 'test', bless {}, 'test' );
}
1;
syntax highlighted by Code2HTML, v. 0.9.1