use strict;
use warnings;
use Test::More;
use Test::Exception;
{ package Class;
use Moose;
use MooseX::Types::Signal qw(Signal UnixSignal PerlSignal);
my @has = ( is => 'rw', coerce => 1, isa => );
has 'unix' => ( @has, UnixSignal );
has 'perl' => ( @has, PerlSignal );
has 'any' => ( @has, Signal );
}
my $test = Class->new;
# use Data::Dump::Streamer;
# diag(Data::Dump::Streamer->new->Dump(
# MooseX::Types::Signal::perl_signals(),
# MooseX::Types::Signal::unix_signals(),
# )->Names('$Perl', '$Unix')->Out);
# ok, so... if your platform does not map SIGKILL to 9, i hate it.
lives_ok {
$test->unix('KILL');
$test->perl('KILL');
$test->any ('KILL');
} 'KILL is ok';
is $test->unix, 9, 'KILL => 9';
is $test->perl, 9, 'KILL => 9';
is $test->any, 9, 'KILL => 9';
lives_ok {
$test->unix('SIGKILL');
$test->perl('SIGKILL');
$test->any ('SIGKILL');
} 'SIGKILL is ok';
is $test->unix, 9, 'SIGKILL => 9';
is $test->perl, 9, 'SIGKILL => 9';
is $test->any, 9, 'SIGKILL => 9';
lives_ok {
$test->unix('sIgKiLL');
$test->perl('sIgKiLL');
$test->any ('sIgKiLL');
} 'sIgKiLL is ok';
is $test->unix, 9, 'sIgKiLL => 9';
is $test->perl, 9, 'sIgKiLL => 9';
is $test->any, 9, 'sIgKiLL => 9';
lives_ok {
$test->unix(9);
$test->perl(9);
$test->any(9);
} '9 is ok';
is $test->unix, 9, '9 => 9';
is $test->perl, 9, '9 => 9';
is $test->any, 9, '9 => 9';
throws_ok {
$test->unix(0);
} qr/signal #0 is not a meaningful UNIX signal/, 'no unix 0';
throws_ok {
$test->unix(31337);
} qr/signal 31337 is not listed/, 'no unix 31337';
lives_ok {
$test->perl(0);
} 'sig 0 exists in perl land';
throws_ok {
$test->perl(31337);
} qr/signal 31337 is not mentioned/, 'no perl 31337';
throws_ok {
$test->unix('LOLCAT');
} qr/LOLCAT could not be coerced to a unix signal/, 'no unix SIGLOLCAT';
throws_ok {
$test->perl('LOLCAT');
} qr/LOLCAT could not be coerced to a perl signal/, 'no unix SIGLOLCAT';
done_testing;