Skip to content

Commit

Permalink
[t]: #40219: [TODO] - Steal Perl5's sprintf tests
Browse files Browse the repository at this point in the history
~ stole sprintf tests from perl-5.9.4 (CPAN)
~ 308 total, 199 skipped, 71 failing
~ TODO: figure out why so many tests need to be skipped
~ TODO: fix failing tests :)

git-svn-id: https://svn.parrot.org/parrot/trunk@14682 d31e2699-5ff4-0310-a27c-f18f2fbe73fe
  • Loading branch information
particle committed Sep 21, 2006
1 parent c7990f3 commit ccfa814
Show file tree
Hide file tree
Showing 3 changed files with 318 additions and 5 deletions.
2 changes: 2 additions & 0 deletions MANIFEST
Original file line number Diff line number Diff line change
Expand Up @@ -2560,6 +2560,8 @@ t/op/literal.t []
t/op/number.t []
t/op/random.t []
t/op/spawnw.t []
t/op/sprintf.t []
t/op/sprintf_tests []
t/op/stacks.t []
t/op/string.t []
t/op/string_cclass.t []
Expand Down
10 changes: 5 additions & 5 deletions t/compilers/pge/p6regex/01-regex.t
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#!./parrot -G
# Copyright (C) 2001-2003, The Perl Foundation.
# Copyright (C) 2001-2006, The Perl Foundation.
# $Id$

=head1 NAME
Expand All @@ -9,9 +9,9 @@ t/compilers/pge/p6regex/01-regex.t -- Basic P6 Regex tests
=head1 DESCRIPTION

These tests are based on L<http://dev.perl.org/perl6/doc/design/syn/S05.html>.
Individual tests are stored in the C<regex_tests*> files in the same
directory; There is one test per line: each test consists of the following
(separated by one *or more* tabs) columns:
Individual tests are stored in the C<rx_*> files in the same directory;
There is one test per line: each test consists of the following
columns (separated by one *or more* tabs):

=over 4

Expand Down Expand Up @@ -88,7 +88,7 @@ Description of the test.
.local pmc config
config = interp[.IGLOBALS_CONFIG_HASH]

.local int has_icu # flag indicating precense of icu
.local int has_icu # flag indicating presense of icu
has_icu = config['has_icu']

.local pmc p6rule # the perl6 regex compiler
Expand Down
311 changes: 311 additions & 0 deletions t/op/sprintf_tests
Original file line number Diff line number Diff line change
@@ -0,0 +1,311 @@
# template data expected description (optional)
%6. 6s '' %6. 6s INVALID (See use of $w in code above)
%6 .6s '' %6 .6s INVALID
%6.6 s '' %6.6 s INVALID
%A '' %A INVALID
%B '' %B INVALID
%C '' %C INVALID
%D 0x7fffffff 2147483647 Synonym for %ld
%E 123456.789 1.234568E+05 Like %e, but using upper-case "E"
%F 123456.789 123456.789000 Synonym for %f
%G 1234567.89 1.23457E+06 Like %g, but using upper-case "E"
%G 1234567e96 1.23457E+102
%G .1234567e-101 1.23457E-102
%G 12345.6789 12345.7
%G 1234567e96 1.23457E+102 exponent too big skip: os390
%G .1234567e-101 1.23457E-102 exponent too small skip: os390
%H '' %H INVALID
%I '' %I INVALID
%J '' %J INVALID
%K '' %K INVALID
%L '' %L INVALID
%M '' %M INVALID
%N '' %N INVALID
%O 2**32-1 37777777777 Synonym for %lo
%P '' %P INVALID
%Q '' %Q INVALID
%R '' %R INVALID
%S '' %S INVALID
%T '' %T INVALID
%U 2**32-1 4294967295 Synonym for %lu
%V '' %V INVALID
%W '' %W INVALID
%X 2**32-1 FFFFFFFF Like %x, but with u/c letters
%#X 2**32-1 0XFFFFFFFF
%Y '' %Y INVALID
%Z '' %Z INVALID
%a '' %a INVALID
%b 2**32-1 11111111111111111111111111111111
%+b 2**32-1 11111111111111111111111111111111
%#b 2**32-1 0b11111111111111111111111111111111
%34b 2**32-1 11111111111111111111111111111111
%034b 2**32-1 0011111111111111111111111111111111
%-34b 2**32-1 11111111111111111111111111111111
%-034b 2**32-1 11111111111111111111111111111111
%c 65 A
%10c 65 A
%#10c 65 A # modifier: no effect
%010c 65 000000000A
%10lc 65 A l modifier: no effect
%10hc 65 A h modifier: no effect
%10.5c 65 A precision: no effect
%-10c 65 A
%d 123456.789 123456
%d -123456.789 -123456
%d 0 0
%+d 0 +0
%0d 0 0
%.0d 0
%+.0d 0 +
%.0d 1 1
%d 1 1
%+d 1 +1
%#3.2d 1 01 # modifier: no effect
%3.2d 1 01
%03.2d 1 001
%-3.2d 1 01
%-03.2d 1 01 zero pad + left just.: no effect
%d -1 -1
%+d -1 -1
%hd 1 1 More extensive testing of
%ld 1 1 length modifiers would be
%Vd 1 1 platform-specific
%vd chr(1) 1
%+vd chr(1) +1
%#vd chr(1) 1
%vd "\01\02\03" 1.2.3
%vd v1.2.3 1.2.3
%vd [version::qv("1.2.3")] 1.2.3
%vd [version->new("1.2")] 1.200
%vd [version->new("1.02")] 1.20
%vd [version->new("1.002")] 1.2
%vd [version->new("1048576.5")] 1048576.500
%vd [version->new("50")] 50.0
%v.3d "\01\02\03" 001.002.003
%0v3d "\01\02\03" 001.002.003
%v.3d [version::qv("1.2.3")] 001.002.003
%-v3d "\01\02\03" 1 .2 .3
%+-v3d "\01\02\03" +1 .2 .3
%+-v3d [version::qv("1.2.3")] +1 .2 .3
%v4.3d "\01\02\03" 001. 002. 003
%0v4.3d "\01\02\03" 0001.0002.0003
%0*v2d ['-', "\0\7\14"] 00-07-12
%v.*d ["\01\02\03", 3] 001.002.003
%0v*d ["\01\02\03", 3] 001.002.003
%-v*d ["\01\02\03", 3] 1 .2 .3
%+-v*d ["\01\02\03", 3] +1 .2 .3
%v*.*d ["\01\02\03", 4, 3] 001. 002. 003
%0v*.*d ["\01\02\03", 4, 3] 0001.0002.0003
%0*v*d ['-', "\0\7\13", 2] 00-07-11
%0*v*d ['-', version::qv("0.7.11"), 2] 00-07-11
%e 1234.875 1.234875e+03
%e 0.000012345 1.234500e-05
%e 1234567E96 1.234567e+102
%e 0 0.000000e+00
%e .1234567E-101 1.234567e-102
%+e 1234.875 +1.234875e+03
%#e 1234.875 1.234875e+03
%e -1234.875 -1.234875e+03
%+e -1234.875 -1.234875e+03
%#e -1234.875 -1.234875e+03
%.0e 1234.875 1e+03
%#.0e 1234.875 1.e+03
%.0e 1.875 2e+00
%.0e 0.875 9e-01
%.*e [0, 1234.875] 1e+03
%.1e 1234.875 1.2e+03
%-12.4e 1234.875 1.2349e+03
%12.4e 1234.875 1.2349e+03
%+-12.4e 1234.875 +1.2349e+03
%+12.4e 1234.875 +1.2349e+03
%+-12.4e -1234.875 -1.2349e+03
%+12.4e -1234.875 -1.2349e+03
%e 1234567E96 1.234567e+102 exponent too big skip: os390
%e .1234567E-101 1.234567e-102 exponent too small skip: os390
%f 1234.875 1234.875000
%+f 1234.875 +1234.875000
%#f 1234.875 1234.875000
%f -1234.875 -1234.875000
%+f -1234.875 -1234.875000
%#f -1234.875 -1234.875000
%6f 1234.875 1234.875000
%*f [6, 1234.875] 1234.875000
%.0f -0.1 -0 C library bug: no minus skip: VMS
%.0f 1234.875 1235
%.1f 1234.875 1234.9
%-8.1f 1234.875 1234.9
%8.1f 1234.875 1234.9
%+-8.1f 1234.875 +1234.9
%+8.1f 1234.875 +1234.9
%+-8.1f -1234.875 -1234.9
%+8.1f -1234.875 -1234.9
%*.*f [5, 2, 12.3456] 12.35
%f 0 0.000000
%.0f 0 0
%.0f 2**38 274877906944 Should have exact int'l rep'n
%.0f 0.1 0
%.0f 0.6 1 Known to fail with sfio, (irix|nonstop-ux|powerux); -DHAS_LDBL_SPRINTF_BUG may fix
%.0f -0.6 -1 Known to fail with sfio, (irix|nonstop-ux|powerux); -DHAS_LDBL_SPRINTF_BUG may fix
%.0f 1.6 2
%.0f -1.6 -2
%.0f 1 1
%#.0f 1 1.
%.0lf 1 1 'l' should have no effect
%.0hf 1 %.0hf INVALID 'h' should be rejected
%g 12345.6789 12345.7
%+g 12345.6789 +12345.7
%#g 12345.6789 12345.7
%.0g -0.0 -0 C99 standard mandates minus sign but C89 does not skip: MSWin32 VMS hpux:10.20 openbsd netbsd:1.5 irix
%.0g 12345.6789 1e+04
%#.0g 12345.6789 1.e+04
%.2g 12345.6789 1.2e+04
%.*g [2, 12345.6789] 1.2e+04
%.9g 12345.6789 12345.6789
%12.9g 12345.6789 12345.6789
%012.9g 12345.6789 0012345.6789
%-12.9g 12345.6789 12345.6789
%*.*g [-12, 9, 12345.6789] 12345.6789
%-012.9g 12345.6789 12345.6789
%g -12345.6789 -12345.7
%+g -12345.6789 -12345.7
%g 1234567.89 1.23457e+06
%+g 1234567.89 +1.23457e+06
%#g 1234567.89 1.23457e+06
%g -1234567.89 -1.23457e+06
%+g -1234567.89 -1.23457e+06
%#g -1234567.89 -1.23457e+06
%g 0.00012345 0.00012345
%g 0.000012345 1.2345e-05
%g 1234567E96 1.23457e+102
%g .1234567E-101 1.23457e-102
%g 0 0
%13g 1234567.89 1.23457e+06
%+13g 1234567.89 +1.23457e+06
%013g 1234567.89 001.23457e+06
%-13g 1234567.89 1.23457e+06
%g .1234567E-101 1.23457e-102 exponent too small skip: os390
%g 1234567E96 1.23457e+102 exponent too big skip: os390
%h '' %h INVALID
%i 123456.789 123456 Synonym for %d
%j '' %j INVALID
%k '' %k INVALID
%l '' %l INVALID
%m '' %m INVALID
%s sprintf('%%n%n %d', $n, $n) %n 2 Slight sneakiness to test %n
%o 2**32-1 37777777777
%+o 2**32-1 37777777777
%#o 2**32-1 037777777777
%o 642 1202 check smaller octals across platforms
%+o 642 1202
%#o 642 01202
%d $p=sprintf('%p',$p);$p=~/^[0-9a-f]+$/ 1 Coarse hack: hex from %p?
%d $p=sprintf('%-8p',$p);$p=~/^[0-9a-f]+\s*$/ 1 Coarse hack: hex from %p?
%#p '' %#p INVALID
%q '' %q INVALID
%r '' %r INVALID
%s 'string' string
%10s 'string' string
%+10s 'string' string
%#10s 'string' string
%010s 'string' 0000string
%0*s [10, 'string'] 0000string
%-10s 'string' string
%3s 'string' string
%.3s 'string' str
%.*s [3, 'string'] str
%t '' %t INVALID
%u 2**32-1 4294967295
%+u 2**32-1 4294967295
%#u 2**32-1 4294967295
%12u 2**32-1 4294967295
%012u 2**32-1 004294967295
%-12u 2**32-1 4294967295
%-012u 2**32-1 4294967295
%v '' %v INVALID
%w '' %w INVALID
%x 2**32-1 ffffffff
%+x 2**32-1 ffffffff
%#x 2**32-1 0xffffffff
%10x 2**32-1 ffffffff
%010x 2**32-1 00ffffffff
%-10x 2**32-1 ffffffff
%-010x 2**32-1 ffffffff
%0-10x 2**32-1 ffffffff
%0*x [-10, ,2**32-1] ffffffff
%vx [version::qv("1.2.3")] 1.2.3
%vx [version::qv("1.20.300")] 1.14.12c
%y '' %y INVALID
%z '' %z INVALID
%2$d %1$d [12, 34] 34 12
%*2$d [12, 3] 12
%2$d %d [12, 34] 34 12
%2$d %d %d [12, 34] 34 12 34
%3$d %d %d [12, 34, 56] 56 12 34
%2$*3$d %d [12, 34, 3] 34 12
%*3$2$d %d [12, 34, 3] %*3$2$d 12 INVALID
%2$d 12 0 UNINIT
%0$d 12 %0$d INVALID
%1$$d 12 %1$$d INVALID
%1$1$d 12 %1$1$d INVALID
%*2$*2$d [12, 3] %*2$*2$d INVALID
%*2*2$d [12, 3] %*2*2$d INVALID
%*2$1d [12, 3] %*2$1d INVALID
%0v2.2d ''
%vc,%d [63, 64, 65] %vc,63 INVALID
%v%,%d [63, 64, 65] %v%,63 INVALID
%vd,%d ["\x1", 2, 3] 1,2
%vf,%d [1, 2, 3] %vf,1 INVALID
%vF,%d [1, 2, 3] %vF,1 INVALID
%ve,%d [1, 2, 3] %ve,1 INVALID
%vE,%d [1, 2, 3] %vE,1 INVALID
%vg,%d [1, 2, 3] %vg,1 INVALID
%vG,%d [1, 2, 3] %vG,1 INVALID
%vp '' %vp INVALID
%vn '' %vn INVALID
%vs,%d [1, 2, 3] %vs,1 INVALID
%v_ '' %v_ INVALID
%v#x '' %v#x INVALID
%v02x "\x66\x6f\x6f\012" 66.6f.6f.0a
%#v.8b "\141\000\142" 0b01100001.00000000.0b01100010 perl #39530
%#v.4o "\141\000\142" 0141.0000.0142 perl #39530
%#v.3i "\141\000\142" 097.000.098 perl #39530
%#v.2x "\141\000\142" 0x61.00.0x62 perl #39530
%#v.2X "\141\000\142" 0X61.00.0X62 perl #39530
%#v.8b "\141\017\142" 0b01100001.0b00001111.0b01100010 perl #39530
%#v.4o "\141\017\142" 0141.0017.0142 perl #39530
%#v.3i "\141\017\142" 097.015.098 perl #39530
%#v.2x "\141\017\142" 0x61.0x0f.0x62 perl #39530
%#v.2X "\141\017\142" 0X61.0X0F.0X62 perl #39530
%#*v.8b ["][", "\141\000\142"] 0b01100001][00000000][0b01100010 perl #39530
%#*v.4o ["][", "\141\000\142"] 0141][0000][0142 perl #39530
%#*v.3i ["][", "\141\000\142"] 097][000][098 perl #39530
%#*v.2x ["][", "\141\000\142"] 0x61][00][0x62 perl #39530
%#*v.2X ["][", "\141\000\142"] 0X61][00][0X62 perl #39530
%#*v.8b ["][", "\141\017\142"] 0b01100001][0b00001111][0b01100010 perl #39530
%#*v.4o ["][", "\141\017\142"] 0141][0017][0142 perl #39530
%#*v.3i ["][", "\141\017\142"] 097][015][098 perl #39530
%#*v.2x ["][", "\141\017\142"] 0x61][0x0f][0x62 perl #39530
%#*v.2X ["][", "\141\017\142"] 0X61][0X0F][0X62 perl #39530
%#v.8b "\141\x{1e01}\000\142\x{1e03}" 0b01100001.0b1111000000001.00000000.0b01100010.0b1111000000011 perl #39530
%#v.4o "\141\x{1e01}\000\142\x{1e03}" 0141.017001.0000.0142.017003 perl #39530
%#v.3i "\141\x{1e01}\000\142\x{1e03}" 097.7681.000.098.7683 perl #39530
%#v.2x "\141\x{1e01}\000\142\x{1e03}" 0x61.0x1e01.00.0x62.0x1e03 perl #39530
%#v.2X "\141\x{1e01}\000\142\x{1e03}" 0X61.0X1E01.00.0X62.0X1E03 perl #39530
%#v.8b "\141\x{1e01}\017\142\x{1e03}" 0b01100001.0b1111000000001.0b00001111.0b01100010.0b1111000000011 perl #39530
%#v.4o "\141\x{1e01}\017\142\x{1e03}" 0141.017001.0017.0142.017003 perl #39530
%#v.3i "\141\x{1e01}\017\142\x{1e03}" 097.7681.015.098.7683 perl #39530
%#v.2x "\141\x{1e01}\017\142\x{1e03}" 0x61.0x1e01.0x0f.0x62.0x1e03 perl #39530
%#v.2X "\141\x{1e01}\017\142\x{1e03}" 0X61.0X1E01.0X0F.0X62.0X1E03 perl #39530
%V-%s ["Hello"] %V-Hello INVALID
%K %d %d [13, 29] %K 13 29 INVALID
%*.*K %d [13, 29, 76] %*.*K 13 INVALID
%4$K %d [45, 67] %4$K 45 INVALID
%d %K %d [23, 45] 23 %K 45 INVALID
%*v*999\$d %d %d [11, 22, 33] %*v*999\$d 11 22 INVALID
%#b 0 0
%#o 0 0
%#x 0 0
%2147483647$v2d ''
%*2147483647$v2d '' UNINIT

# vim: sw=4 et

0 comments on commit ccfa814

Please sign in to comment.