X-Git-Url: http://git.vpit.fr/?p=perl%2Fmodules%2FSub-Nary.git;a=blobdiff_plain;f=t%2F23-branch.t;h=e2638f76bc246b62d23623bc4177b6a54819ced9;hp=8bffe50fdbbf93f569681ec1c1b8a21ce2dccf66;hb=d380b792af6bad213061fccaf29a3630ce3ca2da;hpb=8a8dfb1c7d8ea124bf65333fa975667185b4cd73 diff --git a/t/23-branch.t b/t/23-branch.t index 8bffe50..e2638f7 100644 --- a/t/23-branch.t +++ b/t/23-branch.t @@ -3,7 +3,7 @@ use strict; use warnings; -use Test::More tests => 14; +use Test::More tests => 21 + ($^V ge v5.10.0 ? 1 : 0); use Sub::Nary; @@ -19,6 +19,19 @@ sub ret12 { } } +sub ret12b { + if ($x) { + return 1 + } + return 1, 2 +} + +sub ret12c { + if (@a) { + return 1, 2 + } +} + sub ret1l { $x ? 1 : @_ } sub ret1234 { @@ -31,7 +44,7 @@ sub ret1234 { } } -sub retinif { +sub retinif1 { if (return 1, 2) { return 1, 2, 3 } else { @@ -39,8 +52,16 @@ sub retinif { } } +sub retinif2 { + if (do { return 2, 3 if $x }) { + return 4, 5, 6; + } +} + my @tests = ( [ \&ret12, { 1 => 0.5, 2 => 0.5 } ], + [ \&ret12b, { 1 => 0.5, 2 => 0.5 } ], + [ \&ret12c, { 1 => 0.5, 2 => 0.5 } ], [ sub { 1, ret12 }, { 2 => 0.5, 3 => 0.5 } ], [ sub { 1, do { ret12, 3 } }, { 3 => 0.5, 4 => 0.5 } ], [ sub { @_[ret12()] }, { 1 => 0.5, 2 => 0.5 } ], @@ -56,9 +77,16 @@ my @tests = ( [ sub { $_[0], ret1l }, { 2 => 0.5, list => 0.5 } ], [ sub { ret1l, ret1l, ret1l }, { 3 => 0.125, list => 0.875 } ], - [ \&ret1234, { map { $_ => 0.25 } 1 .. 4 } ], + [ \&ret1234, { 2 => 0.5, 3 => 0.25, 4 => 0.125, 1 => 0.125 } ], + + [ \&retinif1, { 2 => 1 } ], + [ \&retinif2, { 2 => 0.5, 3 => 0.25, 1 => 0.25 } ], - [ \&retinif, { 2 => 1 } ], + [ sub { $x || (3, 4) }, { 1 => 0.5, 2 => 0.5 } ], + [ sub { $x or (3, 4) }, { 1 => 0.5, 2 => 0.5 } ], + [ sub { $x && (3, 4) }, { 1 => 0.5, 2 => 0.5 } ], + [ sub { $x and (3, 4) }, { 1 => 0.5, 2 => 0.5 } ], + (([ eval 'sub { $x // (3, 4) }', { 1 => 0.5, 2 => 0.5 } ]) x ($^V ge v5.10.0)), ); my $i = 1;