Update to Scalar-List-Utils-1.15
[p5sagit/p5-mst-13.2.git] / ext / List / Util / t / reduce.t
index d6128f6..689ff52 100755 (executable)
@@ -15,62 +15,58 @@ BEGIN {
 
 
 use List::Util qw(reduce min);
+use Test::More tests => 14;
 
-print "1..13\n";
+my $v = reduce {};
 
-print "not " if defined reduce {};
-print "ok 1\n";
+is( $v,        undef,  'no args');
 
-print "not " unless 9 == reduce { $a / $b } 756,3,7,4;
-print "ok 2\n";
+$v = reduce { $a / $b } 756,3,7,4;
+is( $v,        9,      '4-arg divide');
 
-print "not " unless 9 == reduce { $a / $b } 9;
-print "ok 3\n";
+$v = reduce { $a / $b } 6;
+is( $v,        6,      'one arg');
 
 @a = map { rand } 0 .. 20;
-print "not " unless min(@a) == reduce { $a < $b ? $a : $b } @a;
-print "ok 4\n";
+$v = reduce { $a < $b ? $a : $b } @a;
+is( $v,        min(@a),        'min');
 
 @a = map { pack("C", int(rand(256))) } 0 .. 20;
-print "not " unless join("",@a) eq reduce { $a . $b } @a;
-print "ok 5\n";
+$v = reduce { $a . $b } @a;
+is( $v,        join("",@a),    'concat');
 
 sub add {
   my($aa, $bb) = @_;
   return $aa + $bb;
 }
 
-my $sum = reduce { my $t="$a $b\n"; 0+add($a, $b) } 3, 2, 1;
-print "not " unless $sum == 6;
-print "ok 6\n";
+$v = reduce { my $t="$a $b\n"; 0+add($a, $b) } 3, 2, 1;
+is( $v,        6,      'call sub');
 
 # Check that eval{} inside the block works correctly
-print "not " unless 10 == reduce { eval { die }; $a + $b } 0,1,2,3,4;
-print "ok 7\n";
+$v = reduce { eval { die }; $a + $b } 0,1,2,3,4;
+is( $v,        10,     'use eval{}');
 
-print "not " if defined eval { reduce { die if $b > 2; $a + $b } 0,1,2,3,4 };
-print "ok 8\n";
+$v = !defined eval { reduce { die if $b > 2; $a + $b } 0,1,2,3,4 };
+ok($v, 'die');
 
-($x) = foobar();
-print "${x}ok 9\n";
-
-sub foobar { reduce { (defined(wantarray) && !wantarray) ? '' : 'not ' } 0,1,2,3 }
+sub foobar { reduce { (defined(wantarray) && !wantarray) ? $a+1 : 0 } 0,1,2,3 }
+($v) = foobar();
+is( $v,        3,      'scalar context');
 
 sub add2 { $a + $b }
 
-print "not " unless 6 == reduce \&add2, 1,2,3;
-print "ok 10\n";
-
-print "not " unless 6 == reduce { add2() } 1,2,3;
-print "ok 11\n";
-
+$v = reduce \&add2, 1,2,3;
+is( $v,        6,      'sub reference');
 
-print "not " unless 6 == reduce { eval "$a + $b" } 1,2,3;
-print "ok 12\n";
+$v = reduce { add2() } 3,4,5;
+is( $v, 12,    'call sub');
 
-$a = $b = 9;
-reduce { $a * $b } 1,2,3;
-print "not " unless $a == 9 and $b == 9;
-print "ok 13\n";
 
+$v = reduce { eval "$a + $b" } 1,2,3;
+is( $v, 6, 'eval string');
 
+$a = 8; $b = 9;
+$v = reduce { $a * $b } 1,2,3;
+is( $a, 8, 'restore $a');
+is( $b, 9, 'restore $b');