X-Git-Url: http://git.vpit.fr/?p=perl%2Fmodules%2FSub-Nary.git;a=blobdiff_plain;f=t%2F27-die.t;fp=t%2F27-die.t;h=3880282db62a6d3751704418ea208a7cf09c0959;hp=0000000000000000000000000000000000000000;hb=3a7f23b3ef06db23f3bd2f2707e70b61c6a15b4f;hpb=f7ae222ad94ed89e55b76c4eebcbdb38077133c1 diff --git a/t/27-die.t b/t/27-die.t new file mode 100644 index 0000000..3880282 --- /dev/null +++ b/t/27-die.t @@ -0,0 +1,47 @@ +#!perl -T + +use strict; +use warnings; + +use Test::More tests => 12; + +use Sub::Nary; + +my $sn = Sub::Nary->new(); + +my ($x, $y); + +sub dies { + if ($x) { + die do { return 3, 4 if $y } + } + @_[0 .. 2]; +} + +my @tests = ( + [ sub { die }, { die => 1 } ], + [ sub { die 1 }, { die => 1 } ], + [ sub { if ($x) { die } }, { die => 0.5, 1 => 0.5 } ], + [ sub { if (die) { return 1, 2 } }, { die => 1 } ], + [ sub { die do { return 3, 4 } }, { 2 => 1 } ], + [ sub { $x ? die($y ? die : return(2, 3)) : 4 }, + { die => 0.25, 2 => 0.25, 1 => 0.5 } ], + + [ \&dies, { die => 0.25, 2 => 0.25, 3 => 0.5 } ], + [ sub { dies(), do { $x ? @_ : 1 } }, { die => 0.25, 3 => 0.125, 4 => 0.25, + list => (0.25 + 0.5) * 0.5 } ], + [ sub { dies(), 1, do { $x ? @_ : 1 } }, + { die => 0.25, 4 => 0.125, 5 => 0.25, list => (0.25 + 0.5) * 0.5 } ], + + [ sub { eval "1, do { die }, 3" }, 'list' ], + [ sub { eval { die } }, { 0 => 1 } ], + [ sub { eval { $x ? die : (4, 5) } }, { 0 => 0.5, 2 => 0.5 } ], +); + +my $i = 1; +for (@tests) { + my $r = $sn->nary($_->[0]); + my $exp = ref $_->[1] ? $_->[1] : { $_->[1] => 1 }; + is_deeply($r, $exp, 'die test ' . $i); + ++$i; +}