1use strict; 2use warnings; 3 4use Thread::Semaphore; 5 6use Test::More 'tests' => 9; 7 8my $err = qr/^Semaphore initializer is not an integer: /; 9 10eval { Thread::Semaphore->new(undef); }; 11like($@, $err, $@); 12eval { Thread::Semaphore->new(0.5); }; 13like($@, $err, $@); 14eval { Thread::Semaphore->new('foo'); }; 15like($@, $err, $@); 16 17my $s = Thread::Semaphore->new(); 18ok($s, 'New semaphore'); 19 20$err = qr/^Argument to semaphore method .* is not a positive integer: /; 21 22eval { $s->down(undef); }; 23like($@, $err, $@); 24eval { $s->down(0); }; 25like($@, $err, $@); 26eval { $s->down(-1); }; 27like($@, $err, $@); 28eval { $s->down(1.5); }; 29like($@, $err, $@); 30eval { $s->down('foo'); }; 31like($@, $err, $@); 32 33# No need to test ->up(), etc. as the arg validation code is common to them all 34 35exit(0); 36 37# EOF 38