Update to Scalar-List-Utils-1.21 from CPAN
[p5sagit/p5-mst-13.2.git] / ext / List-Util / t / sum.t
1 #!./perl
2
3 BEGIN {
4     unless (-d 'blib') {
5         chdir 't' if -d 't';
6         @INC = '../lib';
7         require Config; import Config;
8         keys %Config; # Silence warning
9         if ($Config{extensions} !~ /\bList\/Util\b/) {
10             print "1..0 # Skip: List::Util was not built\n";
11             exit 0;
12         }
13     }
14 }
15
16 use Test::More tests => 8;
17
18 use List::Util qw(sum);
19
20 my $v = sum;
21 is( $v, undef,  'no args');
22
23 $v = sum(9);
24 is( $v, 9, 'one arg');
25
26 $v = sum(1,2,3,4);
27 is( $v, 10, '4 args');
28
29 $v = sum(-1);
30 is( $v, -1, 'one -1');
31
32 my $x = -3;
33
34 $v = sum($x, 3);
35 is( $v, 0, 'variable arg');
36
37 $v = sum(-3.5,3);
38 is( $v, -0.5, 'real numbers');
39
40 my $one = Foo->new(1);
41 my $two = Foo->new(2);
42 my $thr = Foo->new(3);
43
44 $v = sum($one,$two,$thr);
45 is($v, 6, 'overload');
46
47
48 { package Foo;
49
50 use overload
51   '""' => sub { ${$_[0]} },
52   '+0' => sub { ${$_[0]} },
53   fallback => 1;
54   sub new {
55     my $class = shift;
56     my $value = shift;
57     bless \$value, $class;
58   }
59 }
60
61 SKIP: {
62   eval { require bignum; } or skip("Need bignum for testing overloading",1);
63
64   my $v1 = 2**65;
65   my $v2 = 2**65;
66   my $v3 = $v1 + $v2;
67   $v = sum($v1,$v2);
68   is($v, $v3, 'bignum');
69 }