# New Ticket Created by Steven Schubiger # Please include the string: [perl #34544] # in the subject line of all future correspondence about this issue. # <URL: https://rt.perl.org/rt3/Ticket/Display.html?id=34544 >
> 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/pmc.t =================================================================== RCS file: /cvs/public/parrot/t/pmc/pmc.t,v retrieving revision 1.102 diff -u -r1.102 pmc.t --- t/pmc/pmc.t Tue Mar 22 14:02:11 2005 +++ t/pmc/pmc.t Tue Mar 22 20:35:22 2005 @@ -1,6 +1,6 @@ #! perl -w -# Copyright: 2001-2004 The Perl Foundation. All Rights Reserved. +# Copyright: 2001-2005 The Perl Foundation. All Rights Reserved. # $Id: pmc.t,v 1.102 2005/03/22 13:02:11 leo Exp $ =head1 NAME @@ -17,7 +17,7 @@ =cut -use Parrot::Test tests => 51; +use Parrot::Test tests => 20; use Test::More; use Parrot::PMC qw(%pmc_types); my $max_pmc = scalar(keys(%pmc_types)) + 1; @@ -89,357 +89,6 @@ Illegal PMC enum ($max_pmc) in new OUTPUT -output_is(<<CODE, <<OUTPUT, "if (P) - Int"); - new P0, .PerlInt - - set P0, 1 - if P0, OK1 - print "not " -OK1: print "ok 1\\n" - - set P0, 0 - if P0, BAD2 - branch OK2 -BAD2: print "not " -OK2: print "ok 2\\n" - - end -CODE -ok 1 -ok 2 -OUTPUT - -output_is(<<CODE, <<OUTPUT, "unless (P) - Int"); - new P0, .PerlInt - - set P0, 0 - unless P0, OK1 - print "not " -OK1: print "ok 1\\n" - - set P0, 1 - unless P0, BAD2 - branch OK2 -BAD2: print "not " -OK2: print "ok 2\\n" - - end -CODE -ok 1 -ok 2 -OUTPUT - -output_is(<<CODE, <<OUTPUT, "if (P) - Num"); - new P0, .PerlNum - - set P0, 1.1 - if P0, OK1 - print "not " -OK1: print "ok 1\\n" - - set P0, 0.0 - if P0, BAD2 - branch OK2 -BAD2: print "not " -OK2: print "ok 2\\n" - - end -CODE -ok 1 -ok 2 -OUTPUT - -output_is(<<CODE, <<OUTPUT, "unless (P) - Num"); - new P0, .PerlNum - - set P0, 0.0 - unless P0, OK1 - print "not " -OK1: print "ok 1\\n" - - set P0, 1.1 - unless P0, BAD2 - branch OK2 -BAD2: print "not " -OK2: print "ok 2\\n" - - end -CODE -ok 1 -ok 2 -OUTPUT - -output_is(<<CODE, <<OUTPUT, "if (P) - String"); - new P0, .PerlString - - set P0, "I've told you once, I've told you twice..." - if P0, OK1 - print "not " -OK1: print "ok 1\\n" - - set P0, "0.0" - if P0, OK2 - print "not " -OK2: print "ok 2\\n" - - set P0, "" - if P0, BAD3 - branch OK3 -BAD3: print "not " -OK3: print "ok 3\\n" - - set P0, "0" - if P0, BAD4 - branch OK4 -BAD4: print "not " -OK4: print "ok 4\\n" - - set P0, "0e0" - if P0, OK5 - print "not " -OK5: print "ok 5\\n" - - set P0, "x" - if P0, OK6 - print "not " -OK6: print "ok 6\\n" - - set P0, "\\x0" - if P0, OK7 - print "not " -OK7: print "ok 7\\n" - - set P0, "\\n" - if P0, OK8 - print "not " -OK8: print "ok 8\\n" - - set P0, " " - if P0, OK9 - print "not " -OK9: print "ok 9\\n" - - end -CODE -ok 1 -ok 2 -ok 3 -ok 4 -ok 5 -ok 6 -ok 7 -ok 8 -ok 9 -OUTPUT - -output_is(<<CODE, <<OUTPUT, "unless (P) - String"); - new P0, .PerlString - - set P0, "0" - unless P0, OK1 - print "not" -OK1: print "ok 1\\n" - - set P0, "1" - unless P0, BAD2 - branch OK2 -BAD2: print "not " -OK2: print "ok 2\\n" - - end -CODE -ok 1 -ok 2 -OUTPUT - -output_is(<<"CODE", <<'OUTPUT', "undef-logical"); - new P0, .PerlInt - new P1, .PerlUndef - new P2, .PerlInt - -# undef or undef = 0 - or P0, P1, P1 - print P0 - print "a" - -# undef and undef = 0 - and P0, P1, P1 - print P0 - print "b" - -#undef xor undef = "0" - xor P0, P1, P1 - print P0 - print "c" - -# undef or foo = foo - set P2, 349 - or P0, P1, P2 - print P0 - -# undef and foo = undef - and P0, P1, P2 - print P0 - print "c" - -#undef xor foo = foo - set P2, 910 - xor P0, P1, P2 - print P0 - -# not undef = 1 - not P0, P1 - print "x" - print P1 - print "y" - print P0 - print "z" - print "\\n" - end -CODE -ab0c349c910xy1z -OUTPUT - -output_is(<<"CODE", <<'OUTPUT', "undef-add"); [EMAIL PROTECTED] $fp_equality_macro ]} - new P1, .PerlUndef - -# undef + perlundef - new P0, .PerlUndef - add P0, P1, P1 - print P0 - print "\\n" - -# undef + perlint - - new P0, .PerlUndef - new P2, .PerlInt - set P2, 947 - add P0, P1, P2 - print P0 - print "\\n" - -# undef + perlnum - - new P0, .PerlUndef - new P2, .PerlNum - set P2, 385.623 - add P0, P1, P2 - .fp_eq( P0, 385.623, OK) - - print "not" -OK: print "ok" - print "\\n" - - end -CODE -0 -947 -ok -OUTPUT - -output_is(<<"CODE", <<'OUTPUT', "undef-subtract"); [EMAIL PROTECTED] $fp_equality_macro ]} - new P0, .PerlInt - new P1, .PerlUndef - -# undef - undef - sub P0, P1, P1 - print P0 - print "\\n" - -# undef - perlint - new P2, .PerlInt - set P2, 947 - sub P0, P1, P2 - print P0 - print "\\n" - -# undef - perlnum - - new P2, .PerlNum - set P2, 385.623 - sub P0, P1, P2 - .fp_eq( P0, -385.623, OK2) - - print "not" -OK2: print "ok" - print "\\n" - - end -CODE -0 --947 -ok -OUTPUT - -output_is(<<"CODE", <<'OUTPUT', "undef-multiply"); [EMAIL PROTECTED] $fp_equality_macro ]} - - new P0, .PerlInt - new P1, .PerlUndef - new P2, .PerlInt - -# Undef * Undef - mul P0, P1, P1 - print P0 - print "\\n" - -# Undef * PerlInt - set P2, 983 - mul P0, P1, P2 - print P0 - print "\\n" - -# Undef * PerlNum - new P2, .PerlNum - set P2, 983.3 - mul P0, P1, P2 - print P0 - print "\\n" - - end -CODE -0 -0 -0 -OUTPUT - -output_is(<<"CODE", <<'OUTPUT', "undef-divide"); - new P0, .PerlInt - new P1, .PerlUndef - new P2, .PerlInt - -# Undef / PerlInt - set P2, 19 - div P0, P1, P2 - print P0 - print "\\n" - -# Undef / PerlNum - new P2, .PerlNum - set P2, 343.8 - div P0, P1, P2 - print P0 - print "\\n" - - end -CODE -0 -0 -OUTPUT - -output_is(<<"CODE", <<'OUTPUT', "undef-string"); - new P0, .PerlUndef - set S0, P0 - eq S0, "", OK - print "not " -OK: print "ok\\n" - end -CODE -ok -OUTPUT - output_is(<<CODE, <<OUTPUT, "typeof"); new P0,.PerlInt typeof S0,P0 @@ -458,194 +107,6 @@ ok 2 OUTPUT -output_is(<<'CODE', <<OUTPUT, "inc, PerlInt"); - new P3, .PerlInt - set P3, 0 - inc P3 - print P3 - print "\n" - -LP: inc P3 - set I3, P3 - lt I3, 1000, LP - print P3 - print "\n" - - end -CODE -1 -1000 -OUTPUT - -output_is(<<"CODE", <<OUTPUT, "inc, PerlNum"); [EMAIL PROTECTED] $fp_equality_macro ]} - new P3, .PerlNum - - set P3, -0.999 - inc P3 - .fp_eq(P3, 0.001, OK1) - print "not " -OK1: print "ok 1\\n" - - inc P3 - .fp_eq(P3, 1.001, OK2) - print "not " -OK2: print "ok 2\\n" - - end -CODE -ok 1 -ok 2 -OUTPUT - -output_is(<<'CODE', <<OUTPUT, "dec, PerlInt"); - new P3, .PerlInt - set P3, 0 - dec P3 - print P3 - print "\n" - -LP: dec P3 - set I3, P3 - gt I3, -2000, LP - print P3 - print "\n" - - end -CODE --1 --2000 -OUTPUT - -output_is(<<"CODE", <<OUTPUT, "dec, PerlNum"); [EMAIL PROTECTED] $fp_equality_macro ]} - new P3, .PerlNum - - set P3, 1.001 - dec P3 - .fp_eq(P3, 0.001, OK1) - print "not " -OK1: print "ok 1\\n" - - dec P3 - .fp_eq(P3, -0.999, OK2) - print "not " -OK2: print "ok 2\\n" - - end -CODE -ok 1 -ok 2 -OUTPUT - -output_is(<<CODE, <<OUTPUT, "mul_p_p, PerlInt"); [EMAIL PROTECTED] $fp_equality_macro ]} - new P0,.PerlInt - new P1,.PerlInt - set P0,8 - set P1,2 - mul P0,P1 - .fp_eq(P0,16,EQ1) - print "not " -EQ1: print "ok 1" - print "\\n" - - new P2, .PerlNum - set P2, 0.0625 - mul P0, P2 - .fp_eq(P0,1,EQ2) - print "not " -EQ2: print "ok 2" - print "\\n" - end -CODE -ok 1 -ok 2 -OUTPUT - -output_is(<<CODE, <<OUTPUT, "mul_p_p, PerlNum"); [EMAIL PROTECTED] $fp_equality_macro ]} - new P0,.PerlNum - new P1,.PerlNum - set P0,-2.5 - set P1,2.5 - mul P0,P1 - .fp_eq(P0,-6.25,EQ1) - print "not " -EQ1: print "ok 1" - print "\\n" - - new P2, .PerlInt - set P2, 2 - mul P0, P2 - .fp_eq(P0,-12.5,EQ2) - print "not " -EQ2: print "ok 2" - print "\\n" - - end -CODE -ok 1 -ok 2 -OUTPUT - -output_is(<<CODE, <<OUTPUT, "mul_p_i, PerlInt"); [EMAIL PROTECTED] $fp_equality_macro ]} - new P0,.PerlInt - set P0,8 - mul P0,2 - .fp_eq(P0,16,EQ1) - print "not " -EQ1: print "ok 1" - print "\\n" - end -CODE -ok 1 -OUTPUT - -output_is(<<CODE, <<OUTPUT, "div_p_i, PerlInt"); [EMAIL PROTECTED] $fp_equality_macro ]} - new P0,.PerlInt - set P0,8 - div P0,2 - .fp_eq(P0,4,EQ1) - print "not " -EQ1: print "ok 1" - print "\\n" - end -CODE -ok 1 -OUTPUT - -output_is(<<CODE, <<OUTPUT, "mod_p_i, PerlInt"); [EMAIL PROTECTED] $fp_equality_macro ]} - new P0,.PerlInt - set P0,3 - mod P0,6 - .fp_eq(P0,3,EQ1) - print "not " -EQ1: print "ok 1" - print "\\n" - end -CODE -ok 1 -OUTPUT - -output_is(<<CODE, <<OUTPUT, "mod_p_p_i, PerlInt"); [EMAIL PROTECTED] $fp_equality_macro ]} - new P0,.PerlInt - set P0,7 - new P1,.PerlInt - mod P1, P0, 6 - .fp_eq(P1,1,EQ1) - print "not " -EQ1: print "ok 1" - print "\\n" - end -CODE -ok 1 -OUTPUT - my $checkTypes; while (my ($type, $id) = each %pmc_types) { next if $type eq "Null"; @@ -839,86 +300,6 @@ ok 6 OUTPUT -output_is(<<'CODE', <<OUTPUT, "arithmetic with PerlUndef and native ints"); - new P0, .PerlUndef - add P0, 10 - set I1, P0 - print I1 - print "\n" - - new P0, .PerlUndef - sub P0, 20 - set I1, P0 - print I1 - print "\n" - - new P0, .PerlUndef - mul P0, 30 - set I1, P0 - print I1 - print "\n" - - new P0, .PerlUndef - div P0, 40 - set I1, P0 - print I1 - print "\n" - end -CODE -10 --20 -0 -0 -OUTPUT - -output_is(<<"CODE", <<OUTPUT, "arithmetic with PerlUndef and native floats"); [EMAIL PROTECTED] $fp_equality_macro ]} - new P0, .PerlUndef - add P0, 10.0 - set N1, P0 - .fp_ne(N1, 10.0, ERROR) - print "ok 1\\n" - - new P0, .PerlUndef - sub P0, 2.345 - set N1, P0 - .fp_ne(N1, -2.345, ERROR) - print "ok 2\\n" - - new P0, .PerlUndef - mul P0, 32.5 - set N1, P0 - .fp_ne(N1, 0.000, ERROR) - print "ok 3\\n" - - new P0, .PerlUndef - div P0, 0.5 - set N1, P0 - .fp_ne(N1, 0.000, ERROR) - print "ok 4\\n" - branch DONE -ERROR: print "not ok\\n" - print N1 -DONE: - end -CODE -ok 1 -ok 2 -ok 3 -ok 4 -OUTPUT - -output_like(<<"CODE", <<'OUTPUT', "undef warning"); - .include "warnings.pasm" - warningson .PARROT_WARNINGS_UNDEF_FLAG - new P0, .PerlUndef - print P0 - end -CODE -/Use of uninitialized.* -\s+in file .*pasm/i -OUTPUT - output_like(<<"CODE", <<'OUTPUT', "find_method"); new P1, .PerlInt find_method P0, P1, "no_such_meth" @@ -935,49 +316,6 @@ /(unknown macro|unexpected DOT)/ OUTPUT -output_is(<<'CODE', <<OUTPUT, "repeat"); - new P0, .PerlUndef - new P1, .PerlString - new P2, .PerlInt - - set P2, 1024 - repeat P1, P0, P2 - set S1, P1 - eq S1, "", OK1 - print "not " -OK1: print "ok 1\n" - - new P0, .PerlUndef - new P1, .PerlString - repeat P1, P0, 1024 - set S1, P1 - eq S1, "", OK2 - print "not " -OK2: print "ok 2\n" - end -CODE -ok 1 -ok 2 -OUTPUT - -output_is(<<'CODE', <<'OUTPUT', "bor undef"); - new P0, .PerlUndef - bor P0, 0b00001111 - print P0 - print "\n" - - new P0, .PerlUndef - new P1, .PerlInt - set P1, 0b11110000 - bor P0, P1 - print P0 - print "\n" - end -CODE -15 -240 -OUTPUT - output_is(<<'CODE', <<'OUTPUT', "bxor undef"); new P0, .PerlUndef bxor P0, 0b00001111 @@ -1014,55 +352,6 @@ 0 OUTPUT -output_is(<<'CODE', <<'OUTPUT', "bnot"); - new P0, .PerlUndef - -# We use band in these tests to null out the high bits, and make the -# tests independent of the size of our INTVALs - bnot P0, P0 - band P0, 0b01010101 - print P0 - print "\n" - - new P0, .PerlUndef - new P1, .PerlInt - set P1, 0b01100110 - bnot P0, P1 - band P0, 0b10011001 - print P0 - print "\n" - end -CODE -85 -153 -OUTPUT - -output_is(<<'CODE', <<'OUTPUT', "if/unless with Integer PMC"); - new P0, .Integer - set P0, 10 - if P0, OK1 - print "not " -OK1: print "ok 1\n" - unless P0, BAD2 - branch OK2 -BAD2: print "not " -OK2: print "ok 2\n" - set P0, 0 - if P0, BAD3 - branch OK3 -BAD3: print "not " -OK3: print "ok 3\n" - unless P0, OK4 - print "not " -OK4: print "ok 4\n" - end -CODE -ok 1 -ok 2 -ok 3 -ok 4 -OUTPUT - output_is(<<'CODE', <<'OUTPUT', "eq_addr same"); new P0, .Integer set P1, P0 @@ -1120,61 +409,6 @@ end CODE ok -OUTPUT - -output_is(<<'CODE', <<'OUTPUT', "rand int"); - new P0, .Random - time I1 - set P0, I1 # seed - set I0, P0 - set I1, P0 - ne I0, I1, ok1 - print "not " -ok1:print "ok 1\n" - set I2, P0[100] - ne I0, I2, ok2 - print "not " -ok2:print "ok 2\n" - ge I2, 0, ok3 - print "not " -ok3:print "ok 3\n" - lt I2, 100, ok4 - print "not " -ok4:print "ok 4\n" - end -CODE -ok 1 -ok 2 -ok 3 -ok 4 -OUTPUT - -output_is(<<'CODE', <<'OUTPUT', "rand float"); - new P0, .Random - set N0, P0 - set N1, P0 - ne N0, N1, ok1 - print "not " -ok1:print "ok 1\n" - ge N0, 0, ok2 - print "not " -ok2:print "ok 2\n" - lt N0, 1.0, ok3 - print "not " -ok3:print "ok 3\n" - ge N1, 0, ok4 - print "not " -ok4:print "ok 4\n" - lt N1, 1.0, ok5 - print "not " -ok5:print "ok 5\n" - end -CODE -ok 1 -ok 2 -ok 3 -ok 4 -ok 5 OUTPUT output_is(<<'CODE', <<'OUTPUT', "issame");