# New Ticket Created by Steven Schubiger
# Please include the string: [perl #34530]
# in the subject line of all future correspondence about this issue.
# <URL: https://rt.perl.org/rt3/Ticket/Display.html?id=34530 >
> The test file t/pmc/pmc.t is full of Perl* tests.
> These should be factored out into t/pmc/perl*.t.
> The file itself should contain just common PMC functionality tests,
> like the range or type checks.
> Thanks,
> leo
Index: t/pmc/perlnum.t
===================================================================
RCS file: /cvs/public/parrot/t/pmc/perlnum.t,v
retrieving revision 1.12
diff -u -r1.12 perlnum.t
--- t/pmc/perlnum.t Fri Mar 4 18:49:11 2005
+++ t/pmc/perlnum.t Tue Mar 22 03:02:14 2005
@@ -16,7 +16,7 @@
=cut
-use Parrot::Test tests => 43;
+use Parrot::Test tests => 49;
my $fp_equality_macro = <<'ENDOFMACRO';
.macro fp_eq ( J, K, L )
@@ -61,6 +61,140 @@
.endm
ENDOFMACRO
+output_is(<<'CODE', <<'OUTPUT', "set/get string value");
+ new P0, .PerlString
+ set P0, "bar"
+ set S0, P0
+ eq S0, "bar", OK1
+ print "not "
+OK1: print "ok 1\n"
+
+ set P0, "\0"
+ set S0, P0
+ eq S0, "\0", OK2
+ print "not "
+OK2: print "ok 2\n"
+
+ set P0, ""
+ set S0, P0
+ eq S0, "", OK3
+ print "not "
+OK3: print "ok 3\n"
+
+ set P0, -1
+ set S0, P0
+ eq S0, "-1", OK4
+ print "not "
+OK4: print "ok 4\n"
+
+ set P0, -1.0
+ set S0, P0
+ eq S0, "-1", OK5
+ print "not "
+OK5: print "ok 5\n"
+
+ set P0, "1.23e23"
+ set S0, P0
+ eq S0, "1.23e23", OK6
+ print "not "
+OK6: print "ok 6\n"
+
+ end
+CODE
+ok 1
+ok 2
+ok 3
+ok 4
+ok 5
+ok 6
+OUTPUT
+
+output_is(<<"CODE", <<OUTPUT, "assign number");
[EMAIL PROTECTED] $fp_equality_macro ]}
+ new P0, .PerlInt
+ assign P0, 42.21
+ .fp_eq(P0, 42.21, OK1)
+ print "not "
+OK1:
+ print "ok 1\\n"
+
+ new P1, .PerlNum
+ assign P1, 21.01
+ .fp_eq(P1, 21.01, OK2)
+ print "not "
+OK2:
+ print "ok 2\\n"
+
+ new P2, .PerlString
+ assign P2, 7.65
+ .fp_eq(P2, 7.65, OK3)
+ print "not "
+OK3:
+ print "ok 3\\n"
+
+ new P3, .PerlUndef
+ assign P3, 1.23
+ .fp_eq(P3, 1.23, OK4)
+ print "not "
+OK4:
+ print "ok 4\\n"
+
+ end
+CODE
+ok 1
+ok 2
+ok 3
+ok 4
+OUTPUT
+
+output_is(<<"CODE", <<OUTPUT, "add number to string integer");
[EMAIL PROTECTED] $fp_equality_macro ]}
+ new P0, .PerlNum
+ new P1, .PerlString
+ set P0, 6.1
+ set P1, "7"
+ add P0,P0,P1
+ .fp_eq( P0, 13.1, EQ1)
+ print P0
+ print "not "
+EQ1: print "ok 1\\n"
+ end
+CODE
+ok 1
+OUTPUT
+
+output_is(<<"CODE", <<OUTPUT, "add number to string");
[EMAIL PROTECTED] $fp_equality_macro ]}
+ new P0, .PerlNum
+ new P1, .PerlString
+ set P0, 6.1
+ set P1, "ab"
+ add P0,P0,P1
+ .fp_eq( P0, 6.1, EQ1)
+ print P0
+ print "not "
+EQ1: print "ok 1\\n"
+ end
+CODE
+ok 1
+OUTPUT
+
+output_is(<<"CODE", <<OUTPUT, "add number to string number");
[EMAIL PROTECTED] $fp_equality_macro ]}
+ new P0, .PerlNum
+ new P1, .PerlString
+ set P0, 6.1
+ set P1, "7.5"
+ add P0,P0,P1
+ .fp_eq( P0, 13.6, EQ1)
+ print P0
+ print "not "
+EQ1: print "ok 1\\n"
+ end
+CODE
+ok 1
+OUTPUT
+
output_is(<<"CODE", <<OUTPUT, "add number to self");
@{[ $fp_equality_macro ]}
new P0, .PerlNum
@@ -678,6 +812,34 @@
print "not "
OK3: print "ok 3\\n"
end
+CODE
+ok 1
+ok 2
+ok 3
+OUTPUT
+
+output_is(<<CODE, <<OUTPUT, "p = fmod(p,p)");
[EMAIL PROTECTED] $fp_equality_macro ]}
+ new P0, .PerlNum
+ new P1, .PerlNum
+ new P2, .PerlNum
+ new P3, .PerlInt
+ set P0, 13.4
+ set P1, 6.0
+ cmod P2, P0, P1
+ .fp_eq(P2, 1.4, OK1)
+ print "not "
+OK1: print "ok 1\\n"
+ set P0, -25.1
+ cmod P3, P0, P1
+ .fp_eq(P3, -1.1, OK2)
+ print "not "
+OK2: print "ok 2\\n"
+ cmod P0, P0, P1
+ .fp_eq(P0, -1.1, OK3)
+ print "not "
+OK3: print "ok 3\\n"
+ end
CODE
ok 1
ok 2