6 use Test::More tests => 14;
10 my $sn = Sub::Nary->new();
16 die do { return 3, 4 if $y }
22 [ sub { die }, { die => 1 } ],
23 [ sub { die 1 }, { die => 1 } ],
24 [ sub { if ($x) { die } }, { die => 0.5, 1 => 0.5 } ],
25 [ sub { if (die) { return 1, 2 } }, { die => 1 } ],
26 [ sub { die do { return 3, 4 } }, { 2 => 1 } ],
27 [ sub { $x ? die($y ? die : return(2, 3)) : 4 },
28 { die => 0.25, 2 => 0.25, 1 => 0.5 } ],
30 [ \&dies, { die => 0.25, 2 => 0.25, 3 => 0.5 } ],
31 [ sub { dies(), do { $x ? @_ : 1 } }, { die => 0.25, 3 => 0.125, 4 => 0.25,
32 list => (0.25 + 0.5) * 0.5 } ],
33 [ sub { dies(), 1, do { $x ? @_ : 1 } },
34 { die => 0.25, 4 => 0.125, 5 => 0.25, list => (0.25 + 0.5) * 0.5 } ],
36 [ sub { eval "1, do { die }, 3" }, 'list' ],
37 [ sub { eval { die } }, { 0 => 1 } ],
38 [ sub { eval { $x ? die : (4, 5) } }, { 0 => 0.5, 2 => 0.5 } ],
39 [ sub { eval { $x ? die : (4, 5) }; die if $@; 7 }, { die => 0.5, 1 => 0.5 } ],
40 [ sub { eval { $x ? die : return (4, 5) }; die if $@; 7 },
41 { 2 => 0.5, die => 0.25, 1 => 0.25 } ],
46 my $r = $sn->nary($_->[0]);
47 my $exp = ref $_->[1] ? $_->[1] : { $_->[1] => 1 };
48 is_deeply($r, $exp, 'die test ' . $i);