This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Explicitly test goto-into-foreach
[perl5.git] / t / opbasic / qq.t
CommitLineData
a4c04bdc
NC
1#!./perl
2
3BEGIN {
4 chdir 't' if -d 't';
5 @INC = '../lib';
6}
7
8e7b2370
JK
8# This file uses a specially crafted is() function rather than that found in
9# t/test.pl or Test::More. Hence, we place this file in directory t/opbasic.
10
51099b64 11print q(1..28
a4c04bdc
NC
12);
13
14# This is() function is written to avoid ""
15my $test = 1;
16sub is {
17 my($left, $right) = @_;
18
19 if ($left eq $right) {
20 printf 'ok %d
21', $test++;
22 return 1;
23 }
24 foreach ($left, $right) {
25 # Comment out these regexps to map non-printables to ord if the perl under
8e7b2370 26 # test is so broken that it is not helping
a4c04bdc
NC
27 s/([^-+A-Za-z_0-9])/sprintf q{'.chr(%d).'}, ord $1/ge;
28 $_ = sprintf q('%s'), $_;
29 s/^''\.//;
30 s/\.''$//;
31 }
32 printf q(not ok %d - got %s expected %s
33), $test++, $left, $right;
34
35 printf q(# Failed test at line %d
36), (caller)[2];
37
38 return 0;
39}
40
41is ("\x53", chr 83);
42is ("\x4EE", chr (78) . 'E');
43is ("\x4i", chr (4) . 'i'); # This will warn
44is ("\xh", chr (0) . 'h'); # This will warn
45is ("\xx", chr (0) . 'x'); # This will warn
46is ("\xx9", chr (0) . 'x9'); # This will warn. \x9 is tab in EBCDIC too?
47is ("\x9_E", chr (9) . '_E'); # This will warn
48
49is ("\x{4E}", chr 78);
50is ("\x{6_9}", chr 105);
51is ("\x{_6_3}", chr 99);
52is ("\x{_6B}", chr 107);
53
54is ("\x{9__0}", chr 9); # multiple underscores not allowed.
55is ("\x{77_}", chr 119); # trailing underscore warns.
56is ("\x{6FQ}z", chr (111) . 'z');
57
58is ("\x{0x4E}", chr 0);
59is ("\x{x4E}", chr 0);
60
61is ("\x{0065}", chr 101);
62is ("\x{000000000000000000000000000000000000000000000000000000000000000072}",
63 chr 114);
64is ("\x{0_06_5}", chr 101);
65is ("\x{1234}", chr 4660);
b851fbc1 66is ("\x{10FFFD}", chr 1114109);
84bb2957
KW
67is ("\400", chr 0x100);
68is ("\600", chr 0x180);
69is ("\777", chr 0x1FF);
f0a2b745
KW
70is ("a\o{120}b", "a" . chr(0x50) . "b");
71is ("a\o{400}b", "a" . chr(0x100) . "b");
72is ("a\o{1000}b", "a" . chr(0x200) . "b");
f9d13529 73
eb9a585f
HS
74# Maybe \x{} should be an error, but if not it should certainly mean \x{0}
75# rather than anything else.
76is ("\x{}", chr(0));