2 # Copyright (C) 2001-2006, The Perl Foundation.
7 use lib qw( . lib ../lib ../../lib );
10 use Parrot::Test tests => 43;
14 t/pmc/float.t - Floating-point Numbers
26 my $fp_equality_macro = pasm_fp_equality_macro();
28 pasm_output_is( <<"CODE", <<OUTPUT, "basic assignment" );
29 @{[ $fp_equality_macro ]}
33 .fp_eq( P0, 0.001, EQ1)
38 .fp_eq( P0, 1000.0, EQ2)
43 .fp_eq( P0, 12.5, EQ3)
47 set P0, "Twelve point five"
60 .fp_eq(N0, 123.45, EQ6)
81 pasm_output_is( <<"CODE", <<OUTPUT, "add number to self" );
82 @{[ $fp_equality_macro ]}
86 .fp_eq( P0, 0.002, EQ1)
95 pasm_output_is( <<"CODE", <<OUTPUT, "sub number from self" );
96 @{[ $fp_equality_macro ]}
100 .fp_eq( P0, 0.0, EQ1)
109 pasm_output_is( <<"CODE", <<OUTPUT, "multiply number by self" );
110 @{[ $fp_equality_macro ]}
114 .fp_eq( P0, 15227.56, EQ1)
123 pasm_output_is( <<"CODE", <<OUTPUT, "divide number by self" );
124 @{[ $fp_equality_macro ]}
128 .fp_eq( P0, 1.0, EQ1)
137 pir_output_is( <<'CODE', <<OUTPUT, "divide by zero" );
149 get_results '0,0', $P0, $S0
156 float division by zero
159 pir_output_is( << 'CODE', << 'OUTPUT', "Truth of a positive float" );
163 float_1 = new 'Float'
166 if float_1 goto IS_TRUE
177 pir_output_is( << 'CODE', << 'OUTPUT', "Truth of a negative float" );
181 float_1 = new 'Float'
184 if float_1 goto IS_TRUE
195 pir_output_is( << 'CODE', << 'OUTPUT', "Truth of a positive integer" );
199 float_1 = new 'Float'
202 if float_1 goto IS_TRUE
213 pir_output_is( << 'CODE', << 'OUTPUT', "Truth of a negative integer" );
217 float_1 = new 'Float'
220 if float_1 goto IS_TRUE
231 pir_output_is( << 'CODE', << 'OUTPUT', "Falseness of 0" );
235 float_1 = new 'Float'
238 if float_1 goto IS_TRUE
249 pir_output_is( << 'CODE', << 'OUTPUT', "Falseness of 0.000" );
253 float_1 = new 'Float'
256 if float_1 goto IS_TRUE
267 pasm_output_is( << "CODE", << 'OUTPUT', "Basic integer arithmetic: addition" );
268 @{[ $fp_equality_macro ]}
272 .fp_eq(P0, 1.001, EQ1)
278 .fp_eq(P0, -0.999, EQ2)
288 pasm_output_is( << "CODE", << 'OUTPUT', "Basic integer arithmetic: subtraction" );
289 @{[ $fp_equality_macro ]}
293 .fp_eq(P0, 26.45, EQ1)
299 .fp_eq(P0, 50.45, EQ2)
309 pasm_output_is( << "CODE", << 'OUTPUT', "Basic integer arithmetic: multiplication" );
310 @{[ $fp_equality_macro ]}
314 .fp_eq(P0, 10.0, EQ1)
320 .fp_eq(P0, -10.0, EQ2)
337 pasm_output_is( << "CODE", << 'OUTPUT', "Basic integer arithmetic: division" );
338 @{[ $fp_equality_macro ]}
342 .fp_eq(P0, 10000.0, EQ1)
348 .fp_eq(P0, 0.01, EQ2)
358 pasm_output_is( << "CODE", << 'OUTPUT', "Basic numeric arithmetic: addition" );
359 @{[ $fp_equality_macro ]}
363 .fp_eq(P0, 1.201, EQ1)
369 .fp_eq(P0, -1.199, EQ2)
379 pasm_output_is( << "CODE", << 'OUTPUT', "Basic numeric arithmetic: subtraction" );
380 @{[ $fp_equality_macro ]}
384 .fp_eq(P0, 99.99, EQ1)
390 .fp_eq(P0, 100.00, EQ2)
400 pasm_output_is( << "CODE", << 'OUTPUT', "Basic numeric arithmetic: multiplication" );
401 @{[ $fp_equality_macro ]}
405 .fp_eq(P0, 0.1235, EQ1)
411 .fp_eq(P0, -0.3211, EQ2)
428 pasm_output_is( << "CODE", << 'OUTPUT', "Basic numeric arithmetic: division" );
429 @{[ $fp_equality_macro ]}
439 .fp_eq(P0, 50000.0, EQ2)
449 pasm_output_is( << "CODE", << 'OUTPUT', "Increment & decrement" );
450 @{[ $fp_equality_macro ]}
466 .fp_eq(P0, -0.5, EQ3)
484 pasm_output_is( << "CODE", << 'OUTPUT', "Neg" );
485 @{[ $fp_equality_macro ]}
489 .fp_eq(P0, -0.5, EQ1)
507 skip 'failling on win32' => 1 if $^O =~ m/win32/i;
509 pasm_output_like( << 'CODE', << 'OUTPUT', "neg 0" );
521 pasm_output_is( << 'CODE', << 'OUTPUT', "Equality" );
576 pir_output_is( << 'CODE', << 'OUTPUT', "check whether interface is done" );
582 does bool1, pmc1, "scalar"
585 does bool1, pmc1, "float"
588 does bool1, pmc1, "no_interface"
599 pasm_output_is( << "CODE", << 'OUTPUT', "Abs" );
600 @{[ $fp_equality_macro ]}
630 pasm_output_is( << 'CODE', << 'OUTPUT', "comparison ops: lt" );
655 pasm_output_is( << 'CODE', << 'OUTPUT', "comparison ops: lt_num" );
685 pasm_output_is( << 'CODE', << 'OUTPUT', "comparison ops: le" );
709 pasm_output_is( << 'CODE', << 'OUTPUT', "comparison ops: le_num" );
738 pasm_output_is( << 'CODE', << 'OUTPUT', "comparison ops: gt" );
763 pasm_output_is( << 'CODE', << 'OUTPUT', "comparison ops: gt_num" );
793 pasm_output_is( << 'CODE', << 'OUTPUT', "comparison ops: ge" );
817 pasm_output_is( << 'CODE', << 'OUTPUT', "comparison ops: ge_num" );
846 pasm_output_is( << 'CODE', << 'OUTPUT', "comparison ops: cmp_p_n" );
869 pasm_output_is( << 'CODE', << 'OUTPUT', "comparison ops: isgt" );
912 pasm_output_is( << 'CODE', << 'OUTPUT', "comparison ops: isge" );
955 pasm_output_is( << 'CODE', << 'OUTPUT', "comparison ops: islt" );
998 pasm_output_is( << 'CODE', << 'OUTPUT', "comparison ops: isle" );
1041 pasm_output_is( << 'CODE', << 'OUTPUT', "comparison ops: iseq" );
1072 pasm_output_is( << 'CODE', << 'OUTPUT', "comparison ops: isne" );
1103 pir_output_is( <<'CODE', <<OUTPUT, "new_from_string" );
1105 .const .Float pi = "3.1"
1113 pir_output_is( <<'CODE', <<'OUTPUT', 'cmp functions for subclasses' );
1115 $P0 = subclass 'Float', 'Flt'
1138 # cperl-indent-level: 4
1141 # vim: expandtab shiftwidth=4: