Update to Scalar-List-Utils-1.15
[p5sagit/p5-mst-13.2.git] / ext / List / Util / t / dualvar.t
CommitLineData
1bfb5477 1#!./perl
2
f4a2945e 3BEGIN {
1bfb5477 4 unless (-d 'blib') {
f4a2945e 5 chdir 't' if -d 't';
6 @INC = '../lib';
6b05f64e 7 require Config; import Config;
1bfb5477 8 keys %Config; # Silence warning
6b05f64e 9 if ($Config{extensions} !~ /\bList\/Util\b/) {
10 print "1..0 # Skip: List::Util was not built\n";
11 exit 0;
12 }
1bfb5477 13 }
f4a2945e 14}
15
cf083cf9 16use Scalar::Util ();
17use Test::More (grep { /dualvar/ } @Scalar::Util::EXPORT_FAIL)
18 ? (skip_all => 'dualvar requires XS version')
19 : (tests => 11);
1bfb5477 20
cf083cf9 21Scalar::Util->import('dualvar');
f4a2945e 22
cf083cf9 23$var = dualvar( 2.2,"string");
f4a2945e 24
cf083cf9 25ok( $var == 2.2, 'Numeric value');
26ok( $var eq "string", 'String value');
f4a2945e 27
28$var2 = $var;
29
cf083cf9 30ok( $var2 == 2.2, 'copy Numeric value');
31ok( $var2 eq "string", 'copy String value');
32
f4a2945e 33$var++;
34
cf083cf9 35ok( $var == 3.2, 'inc Numeric value');
36ok( $var ne "string", 'inc String value');
f4a2945e 37
cf083cf9 38my $numstr = "10.2";
39my $numtmp = int($numstr); # use $numstr as an int
f4a2945e 40
cf083cf9 41$var = dualvar($numstr, "");
f4a2945e 42
cf083cf9 43ok( $var == $numstr, 'NV');
1bfb5477 44
cf083cf9 45$var = dualvar(1<<31, "");
46ok( $var == (1<<31), 'UV 1');
47ok( $var > 0, 'UV 2');
1bfb5477 48
49tie my $tied, 'Tied';
cf083cf9 50$var = dualvar($tied, "ok");
51ok($var == 7.5, 'Tied num');
52ok($var eq 'ok', 'Tied str');
1bfb5477 53
54package Tied;
55
56sub TIESCALAR { bless {} }
57sub FETCH { 7.5 }
58