X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=t%2F16-combine.t;h=bfd9d4e86a48401a68092c739cc8e02f3de7dd2f;hb=def7e90dcf0c4ebcd1fbea6658f4d7024ef69c1f;hp=03b83860b7354a80a7bec1639e9ff163676bacdc;hpb=91deeda20173f3d35c5b936c9e6db1cbe08f0e00;p=perl%2Fmodules%2FSub-Nary.git diff --git a/t/16-combine.t b/t/16-combine.t index 03b8386..bfd9d4e 100644 --- a/t/16-combine.t +++ b/t/16-combine.t @@ -3,17 +3,26 @@ use strict; use warnings; -use Test::More tests => 24; +use Test::More tests => 60; use Sub::Nary; *combine = *Sub::Nary::combine{CODE}; my $h12 = { 1 => 0.5, 2 => 0.5 }; +my $h1l = { 1 => 0.5, list => 0.5 }; +my $h1e = { 1 => 0.5, exit => 0.5 }; +my $h1d = { 1 => 0.5, die => 0.5 }; +my $h1le = { 1 => 0.25, list => 0.25, exit => 0.5 }; +my $h12e = { 1 => 0.25, 2 => 0.25, exit => 0.5 }; +my $h1ld = { 1 => 0.25, list => 0.25, die => 0.5 }; +my $h12d = { 1 => 0.25, 2 => 0.25, die => 0.5 }; my @tests = ( - [ [ ], undef ], - [ [ undef ], undef ], + [ [ ], undef ], + [ [ undef ], undef ], + [ [ { } ], undef ], + [ [ { }, { } ], undef ], [ [ 0 ], 0 ], [ [ 1, undef ], 1 ], @@ -22,24 +31,75 @@ my @tests = ( [ [ 1, 2 ], 3 ], [ [ 2, undef, 3 ], 5 ], - [ [ 'list' ], 'list' ], - [ [ 0, 'list' ], 'list' ], - [ [ 1, 'list' ], 'list' ], - [ [ 1, undef, 'list' ], 'list' ], - [ [ 1, 'list', 2 ], 'list' ], + [ [ 'list' ], 'list' ], + [ [ { 'list' => 1 } ], 'list' ], + [ [ 0, 'list' ], 'list' ], + [ [ 1, 'list' ], 'list' ], + [ [ 1, { 'list' => 1 } ], 'list' ], + [ [ 1, undef, 'list' ], 'list' ], + [ [ 1, 'list', 2 ], 'list' ], - [ [ $h12 ], $h12 ], - [ [ 1, $h12 ], { 2 => 0.5, 3 => 0.5 } ], - [ [ $h12, 2 ], { 3 => 0.5, 4 => 0.5 } ], - [ [ $h12, undef, 3 ], { 4 => 0.5, 5 => 0.5 } ], - [ [ $h12, 'list' ], 'list' ], - [ [ $h12, 3, 'list' ], 'list' ], - [ [ 1, 0, $h12, 2, 0 ], { 4 => 0.5, 5 => 0.5 } ], + [ [ $h12 ], $h12 ], + [ [ 1, $h12 ], { 2 => 0.5, 3 => 0.5 } ], + [ [ $h12, 2 ], { 3 => 0.5, 4 => 0.5 } ], + [ [ $h12, undef, 3 ], { 4 => 0.5, 5 => 0.5 } ], + [ [ $h12, 'list' ], 'list' ], + [ [ $h12, 3, 'list' ], 'list' ], + [ [ $h12, 'list', $h12 ], 'list' ], + [ [ 1, 0, $h12, 2, 0 ], { 4 => 0.5, 5 => 0.5 } ], [ [ $h12, $h12 ], { 2 => 0.25, 3 => 0.5, 4 => 0.25 } ], [ [ 1, $h12, $h12 ], { 3 => 0.25, 4 => 0.5, 5 => 0.25 } ], [ [ $h12, 2, $h12 ], { 4 => 0.25, 5 => 0.5, 6 => 0.25 } ], [ [ $h12, $h12, 3 ], { 5 => 0.25, 6 => 0.5, 7 => 0.25 } ], + + [ [ 1, { %$h1l } ], { 2 => 0.5, 'list' => 0.5 } ], + [ [ { %$h1l }, { %$h1l } ], { 2 => 0.25, list => 0.75 } ], + [ [ { %$h1l }, 1, { %$h1l } ], { 3 => 0.25, list => 0.75 } ], + + [ [ 'exit' ], 'exit' ], + [ [ 'exit', 1 ], 'exit' ], + [ [ { %$h1e }, 1 ], { exit => 0.5, 2 => 0.5 } ], + [ [ { %$h1e }, { %$h1e } ], { exit => 0.75, 2 => 0.25 } ], + + [ [ { %$h1e }, { %$h1l } ], { exit => 0.5, list => 0.25, 2 => 0.25 } ], + [ [ { %$h1l }, { %$h1e } ], { exit => 0.5, list => 0.25, 2 => 0.25 } ], + [ [ { %$h1l }, { %$h1le } ], { exit => 0.5, list => 0.375, 2 => 0.125 } ], + [ [ { %$h1e }, { %$h1le } ], { exit => 0.75, list => 0.125, 2 => 0.125 } ], + + [ [ 'die' ], 'die' ], + [ [ 'die', 2 ], 'die' ], + [ [ { %$h1d }, 2 ], { die => 0.5, 3 => 0.5 } ], + [ [ { %$h1d }, 1 ], { die => 0.5, 2 => 0.5 } ], + [ [ { %$h1d }, { %$h1d } ], { die => 0.75, 2 => 0.25 } ], + + [ [ { %$h1d }, { %$h1l } ], { die => 0.5, list => 0.25, 2 => 0.25 } ], + [ [ { %$h1l }, { %$h1d } ], { die => 0.5, list => 0.25, 2 => 0.25 } ], + [ [ { %$h1l }, { %$h1ld } ], { die => 0.5, list => 0.375, 2 => 0.125 } ], + [ [ { %$h1d }, { %$h1ld } ], { die => 0.75, list => 0.125, 2 => 0.125 } ], + + [ [ { %$h1e }, { %$h1d } ], { exit => 0.5, die => 0.25, 2 => 0.25 } ], + [ [ { %$h1d }, { %$h1e } ], { exit => 0.25, die => 0.5, 2 => 0.25 } ], + [ [ { %$h1e }, { %$h1ld } ], { exit => 0.5, die => 0.25, + list => 0.125, 2 => 0.125 } ], + [ [ { %$h1d }, { %$h1le } ], { exit => 0.25, die => 0.5, + list => 0.125, 2 => 0.125 } ], + + [ [ { %$h12d }, { %$h1le } ], { exit => 0.25, die => 0.5, + list => 0.125, 2 => 0.0625, 3 => 0.0625 } ], + [ [ { %$h12e }, { %$h1ld } ], { exit => 0.5, die => 0.25, + list => 0.125, 2 => 0.0625, 3 => 0.0625 } ], + [ [ { %$h1ld }, { %$h12e } ], { exit => 0.25, die => 0.5, + list => 0.125, 2 => 0.0625, 3 => 0.0625 } ], + [ [ { %$h1le }, { %$h12d } ], { exit => 0.5, die => 0.25, + list => 0.125, 2 => 0.0625, 3 => 0.0625 } ], + + [ [ { %$h1ld }, { %$h1le } ], { exit => 0.25, die => 0.5, + list => 0.1875, 2 => 0.0625 } ], + [ [ { %$h1le }, { %$h1ld } ], { exit => 0.5, die => 0.25, + list => 0.1875, 2 => 0.0625 } ], + + [ [ $h1l, $h1l ], { 2 => 0.25, list => 0.5 } ], # Side effects ); my $i = 1;