"David Whipp" <[EMAIL PROTECTED]> wrote in message
news:[EMAIL PROTECTED]
m...
>
> Here's an updated numbers.t file: I'm not sure that everything is
> up-to-date; but I find it clearer. I fixed a few bugs, and merged in the
> radii tests.
>
The attachments on that previous post seemed to go wrong: here it is,
inline. (Note that this version actually prints the .t file to stdout: It
would be easy to have it actually call C<output_is>). I'm pretty sure a few
of the test cases are incorrect (e.g. upper-case 0X00cc should be an
error). -- easier for people to see/comment this way, anyway.
print <<'HEADER';
#!perl
use strict;
use P6C::TestCompiler tests => 18;
use Test::More qw(skip);
HEADER
my $todo = 0;
my $test_name = "";
my @cases = ();
sub write_test
{
print "TODO: {\n" if $todo;
my @results = ();
print "output_is(<<'CODE', <<'OUT', '$test_name');\n";
my $count = 1;
while (@cases)
{
my @case = @{shift @cases};
push @results, pop @case;
if (@case == 1)
{
printf 'print %s; print "\n";', $case[0];
}
elsif (@case == 2)
{
printf '%s t%d = %s; print $t%d; print "\n";',
$case[0], $count, $case[1], $count;
}
else
{
die "unexpected test-case format: @case";
}
print "\n";
$count++;
}
print "CODE\n";
print join("\n", @results);
print "\nOUT\n";
print "}\n" if $todo;
}
do {
/TEST: (.*)/ and do { write_test(); $test_name = $1; $todo=0;
next };
/TODO: (.*)/ and do { write_test(); $test_name = $1; $todo=1;
next };
my @F = split;
next unless @F;
push @cases, [@F];
} for split "\n", <<'END_OF_TEST_DATA'; write_test;
TEST: Simple Integers
42 42
1 1
0 0
TEST: Negative Numbers
-5 -5
TEST: Simple Floats
4.5 4.5
0.0 0.0
13.12343 13.12343
TEST: Int Type
int 1 1
int 2.2 2
TEST: Num type
num 1 1
num 2.2 2.2
TODO: Format
1234567890 1234567890
1_234_567_890 1234567890
12_34_56_78_90 1234567890
1_2_3_4_5_6_7_8_9 1234567890
1_234_567_890.3_5 1234567890.35
TODO: Exponential
1.23e1 12.3
1.23E2 123
-1.23e3 -1230
-1.23E4 -12300
TODO: Big Numbers
4611686018427387904 4611686018427387904
1.3209583289235829340 1.3209583289235829340
TODO: Bigger Than Big Number (Infinity)
Inf Inf
TODO: NaN
NaN NaN
TODO: Binary
0b0110 6
0B0110 6
-0b0110 -6
0b0_1_1_0 6
TODO: Octal
0c0777 511
0C0777 511
-0c0777 -511
0c0_7_7_7 511
TODO: Hex
0x00ff 255
0x00CC 204
0X00ff 255
0X00CC 204
-0x00ff -255
0x0_0_f_f 255
TODO: Simple Radii
2#101110 78
3#1210112 1311
8#1270 696
16#1E3A7 123815
TODO: Floating Radii
2#101110.0101 46.3125
3#1210112.21 1311.77777777778
8#1270.674 696.8671875
16#1E3A7.AE7 123815.681396484
TODO: Formatted Radii
2#10_11_10 78
16#1_E3_A7 123815
TODO: High Range Radii
20#1gj 550
20#1GJ 550
20#1_g_j 550
20#1_GJ 550
TODO: Dotted Notation
12#10:11:10 1582
256#255:255:0:34 4294901794
END_OF_TEST_DATA