# New Ticket Created by  Steven Schubiger 
# Please include the string:  [perl #34531]
# in the subject line of all future correspondence about this issue. 
# <URL: https://rt.perl.org/rt3/Ticket/Display.html?id=34531 >


> 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/perlstring.t
===================================================================
RCS file: /cvs/public/parrot/t/pmc/perlstring.t,v
retrieving revision 1.35
diff -u -r1.35 perlstring.t
--- t/pmc/perlstring.t  Fri Mar  4 18:49:11 2005
+++ t/pmc/perlstring.t  Tue Mar 22 03:36:44 2005
@@ -16,7 +16,7 @@
 
 =cut
 
-use Parrot::Test tests => 54;
+use Parrot::Test tests => 65;
 use Test::More; # Included for skip().
 
 my $fp_equality_macro = <<'ENDOFMACRO';
@@ -110,6 +110,54 @@
 ok 6
 OUTPUT
 
+output_is(<<'CODE', <<'OUTPUT', "set/get string value");
+       new P0, .PerlString
+        set P0, "foo"
+        set S0, P0
+        eq S0, "foo", 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, 0
+        set S0, P0
+        eq S0, "0", OK4
+        print "not "
+OK4:    print "ok 4\n"
+
+        set P0, 0.0
+        set S0, P0
+        eq S0, "0", OK5
+        print "not "
+OK5:    print "ok 5\n"
+
+        set P0, "0b000001"
+        set S0, P0
+        eq S0, "0b000001", 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, "Setting integers");
         new P0, .PerlString
         set P0, "1"
@@ -204,6 +252,35 @@
 ok 6
 OUTPUT
 
+output_is(<<'CODE', <<OUTPUT, "assign string");
+    new P0, .PerlInt
+    assign P0, "Albert"
+    print P0
+    print "\n"
+
+    new P1, .PerlNum
+    assign P1, "Beth"
+    print P1
+    print "\n"
+
+    new P2, .PerlString
+    assign P2, "Charlie"
+    print P2
+    print "\n"
+
+    new P3, .PerlUndef
+    assign P3, "Doris"
+    print P3
+    print "\n"
+
+    end
+CODE
+Albert
+Beth
+Charlie
+Doris
+OUTPUT
+
 output_is(<<CODE, <<OUTPUT, "ensure that concat ppp copies strings");
        new P0, .PerlString
        new P1, .PerlString
@@ -290,6 +367,305 @@
 C2H5OH + 10H20
 OUTPUT
 
+#
+# Basic string number conversion
+#
+output_is(<<CODE, <<OUTPUT, "string to int");
+       new     P0, .PerlString
+
+       set     P0, "1"
+       set     I0, P0
+       print   I0
+       print   P0
+       print   "\\n"
+
+       set     P0, " 1"
+       set     I0, P0
+       print   I0
+       print   P0
+       print   "\\n"
+
+       set     P0, "-1"
+       set     I0, P0
+       print   I0
+       print   P0
+       print   "\\n"
+
+       set     P0, "dull and void"
+       set     I0, P0
+       print   I0
+       print   "\\n"
+
+       set     P0, ""
+       set     I0, P0
+       print   I0
+       print   "\\n"
+       end
+CODE
+11
+1 1
+-1-1
+0
+0
+OUTPUT
+
+output_is(<<'CODE', <<OUTPUT, "nasty string -> int");
+       new     P0, .PerlInt
+       set     P0, "Z1"
+       set     I0, P0
+       print   I0
+       print   P0
+       print   "\n"
+
+       set     P0, "\x0 1"
+       set     I0, P0
+       print   I0
+       print   "\n"
+
+       set     P0, "1.23e2"
+       set     I0, P0
+       print   I0
+       print   "\n"
+       end
+CODE
+0Z1
+0
+123
+OUTPUT
+
+output_is(<<CODE, <<OUTPUT, "string to number conversion");
[EMAIL PROTECTED] $fp_equality_macro ]}
+       new     P0, .PerlNum
+
+       set     P0, "1"
+       set     N0, P0
+       .fp_eq( N0, 1, EQ1)
+       print   N0
+       print   "not "
+EQ1:   print   "ok 1\\n"
+
+       set     P0, "1.2"
+       set     N0, P0
+       .fp_eq( N0, 1.2, EQ2)
+       print   N0
+       print   "not "
+EQ2:   print   "ok 2\\n"
+
+       set     P0, "1.2e1"
+       set     N0, P0
+       .fp_eq( N0, 12, EQ3)
+       print   N0
+       print   "not "
+EQ3:   print   "ok 3\\n"
+
+       set     P0, "1.2e-1"
+       set     N0, P0
+       .fp_eq( N0, 0.12, EQ4)
+       print   N0
+       print   "not "
+EQ4:   print   "ok 4\\n"
+
+       set     P0, "1.2e2.1"
+       set     N0, P0
+       .fp_eq( N0, 120, EQ5)
+       print   N0
+       print   "not "
+EQ5:   print   "ok 5\\n"
+
+       set     P0, "X1.2X"
+       set     N0, P0
+       .fp_eq( N0, 0.0, EQ6)
+       print   N0
+       print   "not "
+EQ6:   print   "ok 6\\n"
+
+       set     P0, "E1-1.2e+2"
+       set     N0, P0
+       .fp_eq( N0, 0.0, EQ7)
+       print   N0
+       print   "not "
+EQ7:   print   "ok 7\\n"
+
+       set     P0, "++-1"
+       set     N0, P0
+       .fp_eq( N0, 0.0, EQ8)
+       print   N0
+       print   "not "
+EQ8:   print   "ok 8\\n"
+
+       set     P0, "1234.1234.5"
+       set     N0, P0
+       .fp_eq( N0, 1234.1234, EQ9)
+       print   N0
+       print   "not "
+EQ9:   print   "ok 9\\n"
+
+       set     P0, "this is empty!"
+       set     N0, P0
+       .fp_eq( N0, 0.0, EQ10)
+       print   N0
+       print   " not "
+EQ10:  print   "ok 10\\n"
+
+       set     P0, "0e123"
+       set     N0, P0
+       .fp_eq( N0, 0, EQ11)
+       print   N0
+       print   " not "
+EQ11:  print   "ok 11\\n"
+
+       set     P0, "000000000000000000000000000000000000000001e-0"
+       set     N0, P0
+       .fp_eq( N0, 1, EQ12)
+       print   N0
+       print   " not "
+EQ12:  print   "ok 12\\n"
+
+       end
+CODE
+ok 1
+ok 2
+ok 3
+ok 4
+ok 5
+ok 6
+ok 7
+ok 8
+ok 9
+ok 10
+ok 11
+ok 12
+OUTPUT
+
+output_is(<<'CODE', <<OUTPUT, "concatenate string to number");
+       new P0, .PerlString
+       new P1, .PerlNum
+       set P0, "bar"
+       set P1, 2.7
+       concat P0,P0,P1
+       print P0
+       print "\n"
+       end
+CODE
+bar2.700000
+OUTPUT
+
+output_is(<<'CODE', <<OUTPUT, "concatenate string to string");
+       new P0, .PerlString
+       new P1, .PerlString
+       set P0, "foo"
+       set P1, "bar"
+       concat P0,P0,P1
+       print P0
+       print "\n"
+       end
+CODE
+foobar
+OUTPUT
+
+output_is(<<'CODE', <<OUTPUT, "concatenate <foo> to undef");
+       new P0, .PerlUndef
+       new P1, .PerlInt
+       set P1, 10
+       concat P0, P0, P1
+        set S0, P0
+        eq S0, "10", OK1
+        print "not "
+OK1:    print "ok 1\n"
+
+       new P0, .PerlUndef
+       new P1, .PerlNum
+       set P1, 1.2
+       concat P0, P0, P1
+        set S0, P0
+        eq S0, "1.200000", OK2
+        print "not "
+OK2:    print "ok 2\n"
+
+       new P0, .PerlUndef
+       new P1, .PerlString
+       set P1, "Foo"
+       concat P0, P0, P1
+        set S0, P0
+        eq S0, "Foo", OK3
+        print "not "
+OK3:    print "ok 3\n"
+
+       new P0, .PerlUndef
+       new P1, .PerlUndef
+       concat P0, P0, P1
+        set S0, P0
+        eq S0, "", OK4
+        print "not "
+OK4:    print "ok 4\n"
+       end
+CODE
+ok 1
+ok 2
+ok 3
+ok 4
+OUTPUT
+
+output_is(<<'CODE', <<OUTPUT, "concatenate undef to <foo>");
+       new P0, .PerlUndef
+       new P1, .PerlInt
+       set P1, 10
+       concat P1, P1, P0
+        set S0, P1
+        eq S0, "10", OK1
+        print "not "
+OK1:    print "ok 1\n"
+
+       new P0, .PerlUndef
+       new P1, .PerlNum
+       set P1, 1.2
+       concat P1, P1, P0
+        set S0, P1
+        eq S0, "1.200000", OK2
+        print "not "
+OK2:    print "ok 2\n"
+
+       new P0, .PerlUndef
+       new P1, .PerlString
+       set P1, "Foo"
+       concat P1, P1, P0
+        set S0, P1
+        eq S0, "Foo", OK3
+        print "not "
+OK3:    print "ok 3\n"
+
+       end
+CODE
+ok 1
+ok 2
+ok 3
+OUTPUT
+
+output_is(<<'CODE', <<OUTPUT, "concatenate STRING to undef");
+       new P0, .PerlUndef
+       concat P0, P0, "Foo"
+        set S0, P0
+        eq S0, "Foo", OK1
+        print "not "
+OK1:    print "ok 1\n"
+       end
+CODE
+ok 1
+OUTPUT
+
+output_is(<<'CODE', <<OUTPUT, "concatenate number to string");
+       new P0, .PerlNum
+       new P1, .PerlString
+       set P0, 5.43
+       set P1, "bar"
+       concat P0,P0,P1
+       print P0
+       print "\n"
+       end
+CODE
+5.430000bar
+OUTPUT
+
 output_is(<<'CODE', <<OUTPUT, "repeat");
        new P0, .PerlString
        set P0, "x"
@@ -347,7 +723,6 @@
 xxxxxxxxxxxx
 zazaza
 OUTPUT
-
 
 output_is(<<CODE, <<OUTPUT, "if(PerlString)");
         new P0, .PerlString

Reply via email to