use strict;
use warnings;
-use Test::More tests => 41;
+use Test::More tests => 60;
use Sub::Nary;
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 ],
[ [ '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
);