1#!./perl
2
3BEGIN {
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
16use vars qw($skip);
17
18BEGIN {
19  require Scalar::Util;
20
21  if (grep { /dualvar/ } @Scalar::Util::EXPORT_FAIL) {
22    print "1..0\n";
23    $skip=1;
24  }
25}
26
27eval <<'EOT' unless $skip;
28use Scalar::Util qw(dualvar);
29
30print "1..11\n";
31
32$var = dualvar 2.2,"string";
33
34print "not " unless $var == 2.2;
35print "ok 1\n";
36
37print "not " unless $var eq "string";
38print "ok 2\n";
39
40$var2 = $var;
41
42$var++;
43
44print "not " unless $var == 3.2;
45print "ok 3\n";
46
47print "not " unless $var ne "string";
48print "ok 4\n";
49
50print "not " unless $var2 == 2.2;
51print "ok 5\n";
52
53print "not " unless $var2 eq "string";
54print "ok 6\n";
55
56my $numstr = "10.2";
57my $numtmp = sprintf("%d", $numstr);
58$var = dualvar $numstr, "";
59print "not " unless $var == $numstr;
60print "ok 7\n";
61
62$var = dualvar 1<<31, "";
63print "not " unless $var == 1<<31;
64print "ok 8\n";
65print "not " unless $var > 0;
66print "ok 9\n";
67
68tie my $tied, 'Tied';
69$var = dualvar $tied, "ok";
70print "not " unless $var == 7.5;
71print "ok 10\n";
72print "not " unless $var eq "ok";
73print "ok 11\n";
74
75EOT
76
77package Tied;
78
79sub TIESCALAR { bless {} }
80sub FETCH { 7.5 }
81
82