]> git.vpit.fr Git - perl/modules/Sub-Nary.git/blobdiff - t/16-combine.t
Add support for exit(). Simplify combine() so that it can handle exit/list interaction
[perl/modules/Sub-Nary.git] / t / 16-combine.t
index 03b83860b7354a80a7bec1639e9ff163676bacdc..7f0b459e35cdd8511c339352763d5dd7b7fb6985 100644 (file)
@@ -3,17 +3,22 @@
 use strict;
 use warnings;
 
-use Test::More tests => 24;
+use Test::More tests => 41;
 
 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 $h1le = { 1 => 0.25, list => 0.25, exit => 0.5 };
 
 my @tests = (
- [ [ ],       undef ],
- [ [ undef ], undef ],
+ [ [ ],          undef ],
+ [ [ undef ],    undef ],
+ [ [ { } ],      undef ],
+ [ [ { }, { } ], undef ],
 
  [ [ 0 ],                0 ],
  [ [ 1, undef ],         1 ],
@@ -22,24 +27,42 @@ 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 } ],
+
+ [ [ $h1l, $h1l ],              { 2 => 0.25, list => 0.5 } ], # Side effects
 );
 
 my $i = 1;