xref: /openbsd/gnu/usr.bin/perl/t/op/ver.t (revision 78b63d65)
1#!./perl
2
3BEGIN {
4    chdir 't' if -d 't';
5    @INC = '../lib';
6}
7
8print "1..28\n";
9
10my $test = 1;
11
12use v5.5.640;
13require v5.5.640;
14print "ok $test\n";  ++$test;
15
16# printing characters should work
17if (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}
26else { # 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
37sub v77 { "ok" }
38$x = v77;
39print "$x $test\n"; ++$test;
40
41# but not when dots are involved
42if (ord("\t") == 9) { # ASCII
43    $x = v77.78.79;
44}
45else {
46    $x = v212.213.214;
47}
48print "not " unless $x eq "MNO";
49print "ok $test\n";  ++$test;
50
51print "not " unless v1.20.300.4000 eq "\x{1}\x{14}\x{12c}\x{fa0}";
52print "ok $test\n";  ++$test;
53
54#
55# now do the same without the "v"
56use 5.5.640;
57require 5.5.640;
58print "ok $test\n";  ++$test;
59
60# hash keys too
61if (ord("\t") == 9) { # ASCII
62    $h{111.107.32} = "ok";
63}
64else {
65    $h{150.146.64} = "ok";
66}
67print "$h{ok } $test\n"; ++$test;
68
69if (ord("\t") == 9) { # ASCII
70    $x = 77.78.79;
71}
72else {
73    $x = 212.213.214;
74}
75print "not " unless $x eq "MNO";
76print "ok $test\n";  ++$test;
77
78print "not " unless 1.20.300.4000 eq "\x{1}\x{14}\x{12c}\x{fa0}";
79print "ok $test\n";  ++$test;
80
81# test sprintf("%vd"...) etc
82if (ord("\t") == 9) { # ASCII
83    print "not " unless sprintf("%vd", "Perl") eq '80.101.114.108';
84}
85else {
86    print "not " unless sprintf("%vd", "Perl") eq '215.133.153.147';
87}
88print "ok $test\n";  ++$test;
89
90print "not " unless sprintf("%vd", v1.22.333.4444) eq '1.22.333.4444';
91print "ok $test\n";  ++$test;
92
93if (ord("\t") == 9) { # ASCII
94    print "not " unless sprintf("%vx", "Perl") eq '50.65.72.6c';
95}
96else {
97    print "not " unless sprintf("%vx", "Perl") eq 'd7.85.99.93';
98}
99print "ok $test\n";  ++$test;
100
101print "not " unless sprintf("%vX", 1.22.333.4444) eq '1.16.14D.115C';
102print "ok $test\n";  ++$test;
103
104if (ord("\t") == 9) { # ASCII
105    print "not " unless sprintf("%*v#o", ":", "Perl") eq '0120:0145:0162:0154';
106}
107else {
108    print "not " unless sprintf("%*v#o", ":", "Perl") eq '0327:0205:0231:0223';
109}
110print "ok $test\n";  ++$test;
111
112print "not " unless sprintf("%*vb", "##", v1.22.333.4444)
113    eq '1##10110##101001101##1000101011100';
114print "ok $test\n";  ++$test;
115
116print "not " unless sprintf("%vd", join("", map { chr }
117					    unpack "U*", v2001.2002.2003))
118		    eq '2001.2002.2003';
119print "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("%*v#o", ":", "Perl") eq '0120:0145:0162:0154';
148    }
149    else {
150        print "not " unless sprintf("%*v#o", ":", "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}
182