The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# ========================================================================
# t/99_errors.t - test fatal and warn error cases
# Andrew Ho (andrew@zeuscat.com)
#
# In this test we exercise fatal conditions and check that they really
# do die with an error status.
#
# This script is intended to be run as a target of Test::Harness.
#
# Last modified April 20, 2001
# ========================================================================

use strict;
use Test;
use Benchmark::Timer;

BEGIN { plan tests => 6 }


# ------------------------------------------------------------------------
# Check fatal condition where you call stop() but start() has NEVER run

eval {
    my $t = Benchmark::Timer->new;
    $t->stop;
};
ok($@ && $@ =~ /must call/ ? 1 : 0);


# ------------------------------------------------------------------------
# Check fatal out of sync condition

eval {
    my $t = Benchmark::Timer->new;
    $t->start('tag');
    $t->stop;
    $t->stop;
};
ok($@ && $@ =~ /out of sync/ ? 1 : 0);


# ------------------------------------------------------------------------
# Check fatal bad skip argument handling

eval { my $t = Benchmark::Timer->new( skip => undef ) };
ok($@ && $@ =~ /argument skip/ ? 1 : 0);

eval { my $t = Benchmark::Timer->new( skip => 'foo' ) };
ok($@ && $@ =~ /argument skip/ ? 1 : 0);

eval { my $t = Benchmark::Timer->new( skip => -1 ) };
ok($@ && $@ =~ /argument skip/ ? 1 : 0);


# ------------------------------------------------------------------------
# Check warning on unrecognized arguments

use vars qw($last_warning);
undef $last_warning;
{
    local $SIG{__WARN__} = sub { $last_warning = shift };
    my $weird_arg = '__this_is_not_a_valid_argument__';
    my $t = Benchmark::Timer->new( $weird_arg => undef );
    ok($last_warning =~ /skipping unknown/ ? 1 : 0);
}


# ========================================================================
__END__