use strict;
use warnings;
use Thread::Semaphore;
use Test::More 'tests' => 9;
my $err = qr/^Semaphore initializer is not an integer: /;
eval { Thread::Semaphore->new(undef); };
like($@, $err, $@);
eval { Thread::Semaphore->new(0.5); };
like($@, $err, $@);
eval { Thread::Semaphore->new('foo'); };
like($@, $err, $@);
my $s = Thread::Semaphore->new();
ok($s, 'New semaphore');
$err = qr/^Argument to semaphore method .* is not a positive integer: /;
eval { $s->down(undef); };
like($@, $err, $@);
eval { $s->down(0); };
like($@, $err, $@);
eval { $s->down(-1); };
like($@, $err, $@);
eval { $s->down(1.5); };
like($@, $err, $@);
eval { $s->down('foo'); };
like($@, $err, $@);
# No need to test ->up(), etc. as the arg validation code is common to them all
exit(0);
# EOF