1#!./perl 2 3BEGIN { 4 chdir 't' if -d 't'; 5 @INC = '../lib'; 6} 7 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 11print q(1..28 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 26 # test is so broken that it is not helping 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); 66is ("\x{10FFFD}", chr 1114109); 67is ("\400", chr 0x100); 68is ("\600", chr 0x180); 69is ("\777", chr 0x1FF); 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"); 73 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)); 77