Fix [perl #66970] Incorrect coderef in MODIFY_CODE_ATTRIBUTES
[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
2ff28616 45SKIP: {
46 skip("dualvar with UV value known to fail with $]",2) if $] < 5.006_001;
47 $var = dualvar(1<<31, "");
48 ok( $var == (1<<31), 'UV 1');
49 ok( $var > 0, 'UV 2');
50}
1bfb5477 51
52tie my $tied, 'Tied';
cf083cf9 53$var = dualvar($tied, "ok");
54ok($var == 7.5, 'Tied num');
55ok($var eq 'ok', 'Tied str');
1bfb5477 56
57package Tied;
58
59sub TIESCALAR { bless {} }
60sub FETCH { 7.5 }
61