Add more known sprintf failures.
[p5sagit/p5-mst-13.2.git] / t / op / ver.t
1 #!./perl
2
3 BEGIN {
4     chdir 't' if -d 't';
5     @INC = '../lib';
6 }
7
8 print "1..28\n";
9
10 my $test = 1;
11
12 use v5.5.640;
13 require v5.5.640;
14 print "ok $test\n";  ++$test;
15
16 # printing characters should work
17 if (ord("\t") == 9) { # ASCII
18     print v111;
19     print v107.32;
20     print "$test\n"; ++$test;
21
22     # hash keys too
23     $h{v111.107} = "ok";
24     print "$h{ok} $test\n"; ++$test;
25 }
26 else { # EBCDIC
27     print v150;
28     print v146.64;
29     print "$test\n"; ++$test;
30
31     # hash keys too
32     $h{v150.146} = "ok";
33     print "$h{ok} $test\n"; ++$test;
34 }
35
36 # poetry optimization should also
37 sub v77 { "ok" }
38 $x = v77;
39 print "$x $test\n"; ++$test;
40
41 # but not when dots are involved
42 if (ord("\t") == 9) { # ASCII
43     $x = v77.78.79;
44 }
45 else {
46     $x = v212.213.214;
47 }
48 print "not " unless $x eq "MNO";
49 print "ok $test\n";  ++$test;
50
51 print "not " unless v1.20.300.4000 eq "\x{1}\x{14}\x{12c}\x{fa0}";
52 print "ok $test\n";  ++$test;
53
54 #
55 # now do the same without the "v"
56 use 5.5.640;
57 require 5.5.640;
58 print "ok $test\n";  ++$test;
59
60 # hash keys too
61 if (ord("\t") == 9) { # ASCII
62     $h{111.107.32} = "ok";
63 }
64 else {
65     $h{150.146.64} = "ok";
66 }
67 print "$h{ok } $test\n"; ++$test;
68
69 if (ord("\t") == 9) { # ASCII
70     $x = 77.78.79;
71 }
72 else {
73     $x = 212.213.214;
74 }
75 print "not " unless $x eq "MNO";
76 print "ok $test\n";  ++$test;
77
78 print "not " unless 1.20.300.4000 eq "\x{1}\x{14}\x{12c}\x{fa0}";
79 print "ok $test\n";  ++$test;
80
81 # test sprintf("%vd"...) etc
82 if (ord("\t") == 9) { # ASCII
83     print "not " unless sprintf("%vd", "Perl") eq '80.101.114.108';
84 }
85 else {
86     print "not " unless sprintf("%vd", "Perl") eq '215.133.153.147';
87 }
88 print "ok $test\n";  ++$test;
89
90 print "not " unless sprintf("%vd", v1.22.333.4444) eq '1.22.333.4444';
91 print "ok $test\n";  ++$test;
92
93 if (ord("\t") == 9) { # ASCII
94     print "not " unless sprintf("%vx", "Perl") eq '50.65.72.6c';
95 }
96 else {
97     print "not " unless sprintf("%vx", "Perl") eq 'd7.85.99.93';
98 }
99 print "ok $test\n";  ++$test;
100
101 print "not " unless sprintf("%vX", 1.22.333.4444) eq '1.16.14D.115C';
102 print "ok $test\n";  ++$test;
103
104 if (ord("\t") == 9) { # ASCII
105     print "not " unless sprintf("%#*vo", ":", "Perl") eq '0120:0145:0162:0154';
106 }
107 else {
108     print "not " unless sprintf("%#*vo", ":", "Perl") eq '0327:0205:0231:0223';
109 }
110 print "ok $test\n";  ++$test;
111
112 print "not " unless sprintf("%*vb", "##", v1.22.333.4444)
113     eq '1##10110##101001101##1000101011100';
114 print "ok $test\n";  ++$test;
115
116 print "not " unless sprintf("%vd", join("", map { chr }
117                                             unpack "U*", v2001.2002.2003))
118                     eq '2001.2002.2003';
119 print "ok $test\n";  ++$test;
120
121 {
122     use bytes;
123     if (ord("\t") == 9) { # ASCII
124         print "not " unless sprintf("%vd", "Perl") eq '80.101.114.108';
125     }
126     else {
127         print "not " unless sprintf("%vd", "Perl") eq '215.133.153.147';
128     }
129     print "ok $test\n";  ++$test;
130
131     print "not " unless
132         sprintf("%vd", 1.22.333.4444) eq '1.22.197.141.225.133.156';
133     print "ok $test\n";  ++$test;
134
135     if (ord("\t") == 9) { # ASCII
136         print "not " unless sprintf("%vx", "Perl") eq '50.65.72.6c';
137     }
138     else {
139         print "not " unless sprintf("%vx", "Perl") eq 'd7.85.99.93';
140     }
141     print "ok $test\n";  ++$test;
142
143     print "not " unless sprintf("%vX", v1.22.333.4444) eq '1.16.C5.8D.E1.85.9C';
144     print "ok $test\n";  ++$test;
145
146     if (ord("\t") == 9) { # ASCII
147         print "not " unless sprintf("%#*vo", ":", "Perl") eq '0120:0145:0162:0154';
148     }
149     else {
150         print "not " unless sprintf("%#*vo", ":", "Perl") eq '0327:0205:0231:0223';
151     }
152     print "ok $test\n";  ++$test;
153
154     print "not " unless sprintf("%*vb", "##", v1.22.333.4444)
155         eq '1##10110##11000101##10001101##11100001##10000101##10011100';
156     print "ok $test\n";  ++$test;
157 }
158
159 {
160     # bug id 20000323.056
161
162     print "not " unless "\x{41}" eq +v65;
163     print "ok $test\n";
164     $test++;
165
166     print "not " unless "\x41" eq +v65;
167     print "ok $test\n";
168     $test++;
169
170     print "not " unless "\x{c8}" eq +v200;
171     print "ok $test\n";
172     $test++;
173
174     print "not " unless "\xc8" eq +v200;
175     print "ok $test\n";
176     $test++;
177
178     print "not " unless "\x{221b}" eq v8731;
179     print "ok $test\n";
180     $test++;
181 }