RT#69616: regexp SVs lose regexpness in assignment
[p5sagit/p5-mst-13.2.git] / t / op / lc.t
index 95cf019..6b7625b 100644 (file)
--- a/t/op/lc.t
+++ b/t/op/lc.t
@@ -6,7 +6,12 @@ BEGIN {
     require './test.pl';
 }
 
-plan tests => 77;
+plan tests => 93;
+
+is(lc(undef),     "", "lc(undef) is ''");
+is(lcfirst(undef), "", "lcfirst(undef) is ''");
+is(uc(undef),     "", "uc(undef) is ''");
+is(ucfirst(undef), "", "ucfirst(undef) is ''");
 
 $a = "HELLO.* world";
 $b = "hello.* WORLD";
@@ -136,13 +141,13 @@ $b = "\x{3a3}FOO.BAR"; # \x{3a3} == GREEK CAPITAL LETTER SIGMA.
 ($c = $b) =~ s/(\w+)/lc($1)/ge;
 is($c , $a, "Using s///e to change case.");
 
-($c = $a) =~ s/(\w+)/uc($1)/ge;
+($c = $a) =~ s/(\p{IsWord}+)/uc($1)/ge;
 is($c , $b, "Using s///e to change case.");
 
-($c = $b) =~ s/(\w+)/lcfirst($1)/ge;
+($c = $b) =~ s/(\p{IsWord}+)/lcfirst($1)/ge;
 is($c , "\x{3c3}FOO.bAR", "Using s///e to change case.");
 
-($c = $a) =~ s/(\w+)/ucfirst($1)/ge;
+($c = $a) =~ s/(\p{IsWord}+)/ucfirst($1)/ge;
 is($c , "\x{3a3}foo.Bar", "Using s///e to change case.");
 
 # #18931: perl5.8.0 bug in \U..\E processing
@@ -199,3 +204,19 @@ for (map { $_ } "A\x{100}", "ABC\x{100}", "\x{100}") {
     is($result, $expect, "[perl #38619]");
 }
 
+for (1, 4, 9, 16, 25) {
+    is(uc "\x{03B0}" x $_, "\x{3a5}\x{308}\x{301}" x $_,
+       'uc U+03B0 grows threefold');
+
+    is(lc "\x{0130}" x $_, "i\x{307}" x $_, 'lc U+0130 grows');
+}
+
+# bug #43207
+my $temp = "Hello";
+for ("$temp") {
+    lc $_;
+    is($_, "Hello");
+}
+
+# new in Unicode 5.1.0
+is(lc("\x{1E9E}"), "\x{df}", "lc(LATIN CAPITAL LETTER SHARP S)");