Update to Scalar-List-Utils-1.15
[p5sagit/p5-mst-13.2.git] / ext / List / Util / t / dualvar.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 Scalar::Util ();
17 use Test::More  (grep { /dualvar/ } @Scalar::Util::EXPORT_FAIL)
18                         ? (skip_all => 'dualvar requires XS version')
19                         : (tests => 11);
20
21 Scalar::Util->import('dualvar');
22
23 $var = dualvar( 2.2,"string");
24
25 ok( $var == 2.2,        'Numeric value');
26 ok( $var eq "string",   'String value');
27
28 $var2 = $var;
29
30 ok( $var2 == 2.2,       'copy Numeric value');
31 ok( $var2 eq "string",  'copy String value');
32
33 $var++;
34
35 ok( $var == 3.2,        'inc Numeric value');
36 ok( $var ne "string",   'inc String value');
37
38 my $numstr = "10.2";
39 my $numtmp = int($numstr); # use $numstr as an int
40
41 $var = dualvar($numstr, "");
42
43 ok( $var == $numstr,    'NV');
44
45 $var = dualvar(1<<31, "");
46 ok( $var == (1<<31),    'UV 1');
47 ok( $var > 0,           'UV 2');
48
49 tie my $tied, 'Tied';
50 $var = dualvar($tied, "ok");
51 ok($var == 7.5,         'Tied num');
52 ok($var eq 'ok',        'Tied str');
53
54 package Tied;
55
56 sub TIESCALAR { bless {} }
57 sub FETCH { 7.5 }
58