2 # Copyright (C) 2001-2007, The Perl Foundation.
7 use lib qw( . lib ../lib ../../lib );
9 use Parrot::Test tests => 19;
13 t/pmc/resizablefloatarray.t - ResizableFloatArray PMC
17 % prove t/pmc/resizablefloatarray.t
21 Tests C<ResizableFloatArray> PMC. Checks size, sets various elements, including
22 out-of-bounds test. Checks INT and PMC keys.
26 my $fp_equality_macro = <<'ENDOFMACRO';
27 .macro fp_eq ( J, K, L )
36 gt N2, 0.000001, .$FPEQNOK
56 lt N2, 0.000001, .$FPNENOK
69 pasm_output_is( <<'CODE', <<'OUTPUT', 'creation' );
70 new P0, 'ResizableFloatArray'
77 pasm_output_is( <<'CODE', <<'OUTPUT', "Setting array size" );
78 new P0, 'ResizableFloatArray'
118 pasm_error_output_like( <<'CODE', <<'OUTPUT', "Setting negative array size" );
119 new P0, 'ResizableFloatArray'
123 /ResizableFloatArray: Can't resize to negative value!/
126 pasm_output_is( <<'CODE', <<'OUTPUT', "Setting first element" );
127 new P0, 'ResizableFloatArray'
155 pasm_output_is( <<'CODE', <<'OUTPUT', "Setting second element" );
156 new P0, 'ResizableFloatArray'
183 # RT#46823: Rewrite these properly when we have exceptions
185 pasm_output_is( <<'CODE', <<'OUTPUT', "Setting out-of-bounds elements" );
186 new P0, 'ResizableFloatArray'
197 pasm_output_is( <<'CODE', <<'OUTPUT', "Getting out-of-bounds elements" );
198 new P0, 'ResizableFloatArray'
208 pasm_output_is( <<"CODE", <<'OUTPUT', "Set via PMC keys, access via INTs" );
209 @{[ $fp_equality_macro ]}
210 new P0, 'ResizableFloatArray'
244 pasm_output_is( <<"CODE", <<'OUTPUT', "Set via INTs, access via PMC Keys" );
245 @{[ $fp_equality_macro ]}
246 new P0, 'ResizableFloatArray'
265 .fp_eq(N0, 10.2, OK2)
290 pasm_output_is( <<"CODE", <<'OUTPUT', 'basic push' );
291 @{[ $fp_equality_macro ]}
292 new P0, 'ResizableFloatArray'
317 pasm_output_is( <<"CODE", <<'OUTPUT', 'push many values' );
318 @{[ $fp_equality_macro ]}
319 new P0, 'ResizableFloatArray'
327 .fp_eq(N0, 99999.0, OK1)
336 pasm_output_is( <<"CODE", <<'OUTPUT', 'basic pop' );
337 @{[ $fp_equality_macro ]}
338 new P0, 'ResizableFloatArray'
363 pasm_output_is( <<"CODE", <<'OUTPUT', 'pop many values' );
364 @{[ $fp_equality_macro ]}
365 new P0, 'ResizableFloatArray'
391 pasm_output_is( <<"CODE", <<'OUTPUT', 'push/pop' );
392 @{[ $fp_equality_macro ]}
393 new P0, 'ResizableFloatArray'
406 pasm_error_output_like( <<'CODE', <<'OUTPUT', 'pop from empty array' );
407 new P0, 'ResizableFloatArray'
411 /ResizableFloatArray: Can't pop from an empty array!/
414 pir_output_is( << 'CODE', << 'OUTPUT', "check whether interface is done" );
418 pmc1 = new 'ResizableFloatArray'
420 does bool1, pmc1, "scalar"
423 does bool1, pmc1, "array"
426 does bool1, pmc1, "no_interface"
437 pir_output_is( << 'CODE', << 'OUTPUT', "push float" );
441 pmc1 = new 'ResizableFloatArray'
442 pmc1[9999] = 10000.10000
459 pir_output_is( << 'CODE', << 'OUTPUT', "shift float" );
462 ar = new 'ResizableFloatArray'
482 2 10.100000 1 20.200000 0
485 pir_output_is( << 'CODE', << 'OUTPUT', "unshift float" );
488 ar = new 'ResizableFloatArray'
502 2 20.200000 10.100000
507 # cperl-indent-level: 4
510 # vim: expandtab shiftwidth=4: