More tests for the PerlString test-suite.
Simon --- t/pmc/perlstring.t.old Sun Mar 10 14:14:16 2002 +++ t/pmc/perlstring.t Sun Mar 10 17:14:29 2002 @@ -1,8 +1,51 @@ #! perl -w -use Parrot::Test tests => 6; +use Parrot::Test tests => 8; use Test::More; # Included for skip(). +my $fp_equality_macro = <<'ENDOFMACRO'; +fp_eq macro J,K,L + save N0 + save N1 + save N2 + + set N0, J + set N1, K + sub N2, N1,N0 + abs N2, N2 + gt N2, 0.000001, $FPEQNOK + + restore N2 + restore N1 + restore N0 + branch L +$FPEQNOK: + restore N2 + restore N1 + restore N0 +endm +fp_ne macro J,K,L + save N0 + save N1 + save N2 + + set N0, J + set N1, K + sub N2, N1,N0 + abs N2, N2 + lt N2, 0.000001, $FPNENOK + + restore N2 + restore N1 + restore N0 + branch L +$FPNENOK: + restore N2 + restore N1 + restore N0 +endm +ENDOFMACRO + output_is(<<CODE, <<OUTPUT, "Set/get strings"); new P0, PerlString set P0, "foo" @@ -51,6 +94,100 @@ ok 6 OUTPUT +output_is(<<CODE, <<OUTPUT, "Setting integers"); + new P0, PerlString + set P0, "1" + set I0, P0 + print I0 + print "\\n" + + new P0, PerlString + set P0, "2.0" + set I0, P0 + print I0 + print "\\n" + + new P0, PerlString + set P0, "" + set I0, P0 + print I0 + print "\\n" + + new P0, PerlString + set P0, "\0" + set I0, P0 + print I0 + print "\\n" + + new P0, PerlString + set P0, "foo" + set I0, P0 + print I0 + print "\\n" + + end +CODE +1 +2 +0 +0 +0 +OUTPUT + +output_is(<<"CODE", <<OUTPUT, "Setting numbers"); +@{[ $fp_equality_macro ]} + new P0, PerlString + set P0, "1" + set N0, P0 + fp_eq N0, 1.0, OK1 + print "not " +OK1: print "ok 1\\n" + + new P0, PerlString + set P0, "2.0" + set N0, P0 + fp_eq N0, 2.0, OK2 + print "not " +OK2: print "ok 2\\n" + + new P0, PerlString + set P0, "" + set N0, P0 + fp_eq N0, 0.0, OK3 + print "not " +OK3: print "ok 3\\n" + + new P0, PerlString + set P0, "\0" + set N0, P0 + fp_eq N0, 0.0, OK4 + print "not " +OK4: print "ok 4\\n" + + new P0, PerlString + set P0, "foo" + set N0, P0 + fp_eq N0, 0.0, OK5 + print "not " +OK5: print "ok 5\\n" + + new P0, PerlString + set P0, "1.3e5" + set N0, P0 + fp_eq N0, 130000.0, 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, "ensure that concat ppp copies strings"); new P0, PerlString new P1, PerlString @@ -125,31 +262,46 @@ C2H5OH + 10H20 OUTPUT -output_is(<<CODE, <<OUTPUT, "repeat"); +output_is(<<'CODE', <<OUTPUT, "repeat"); new P0, PerlString set P0, "x" new P1, PerlInt set P1, 12 new P2, PerlString - repeat P2, P0, P1 - bsr PRINTA + print P2 + print "\n" - end + set P0, "y" + new P1, PerlNum + set P1, 6.5 + repeat P2, P0, P1 + print P2 + print "\n" + + set P0, "z" + new P1, PerlString + set P1, "3" + repeat P2, P0, P1 + print P2 + print "\n" + + set P0, "a" + new P1, PerlUndef + repeat P2, P0, P1 + print P2 + print "\n" -PRINTA: print P0 - print "\\n" - print P1 - print "\\n" - print P2 - print "\\n" - ret + end CODE -x -12 xxxxxxxxxxxx +yyyyyy +zzz + OUTPUT + + output_is(<<CODE, <<OUTPUT, "if(PerlString)"); new P0, PerlString set S0, "True"