Re: [perl #34195] Regex: Alternations within negative lookahead assertions
[p5sagit/p5-mst-13.2.git] / t / op / join.t
index 4cbe692..c2829df 100755 (executable)
@@ -1,6 +1,6 @@
 #!./perl
 
-print "1..14\n";
+print "1..22\n";
 
 @x = (1, 2, 3);
 if (join(':',@x) eq '1:2:3') {print "ok 1\n";} else {print "not ok 1\n";}
@@ -45,33 +45,69 @@ if ($f eq 'baeak') {print "ok 6\n";} else {print "# '$f'\nnot ok 6\n";}
   print "ok 10\n";
 };
 
-{ my $s = join("", chr(1234),chr(255));
-  print "not " unless length($s) == 2 &&
-                      ord(substr($s,0,1)) == 1234 &&
-                      ord(substr($s,1,1)) ==  255;
+{ my $s = join("", chr(0x1234), chr(0xff));
+  print "not " unless length($s) == 2 && $s eq "\x{1234}\x{ff}";
   print "ok 11\n";
 }
 
-{ my $s = join(chr(2345), chr(1234),chr(255));
-  print "not " unless length($s) == 3 &&
-                      ord(substr($s,0,1)) == 1234 &&
-                      ord(substr($s,1,1)) == 2345 &&
-                      ord(substr($s,2,1)) ==  255;
+{ my $s = join(chr(0xff), chr(0x1234), "");
+  print "not " unless length($s) == 2 && $s eq "\x{1234}\x{ff}";
   print "ok 12\n";
 }
 
-{ my $s = join(chr(2345), chr(1234),chr(3456));
-  print "not " unless length($s) == 3 &&
-                      ord(substr($s,0,1)) == 1234 &&
-                      ord(substr($s,1,1)) == 2345 &&
-                      ord(substr($s,2,1)) == 3456;
+{ my $s = join(chr(0x1234), chr(0xff), chr(0x2345));
+  print "not " unless length($s) == 3 && $s eq "\x{ff}\x{1234}\x{2345}";
   print "ok 13\n";
 }
 
-{ my $s = join(chr(255), chr(1234),chr(2345));
-  print "not " unless length($s) == 3 &&
-                      ord(substr($s,0,1)) == 1234 &&
-                      ord(substr($s,1,1)) ==  255 &&
-                      ord(substr($s,2,1)) == 2345;
+{ my $s = join(chr(0xff), chr(0x1234), chr(0xfe));
+  print "not " unless length($s) == 3 && $s eq "\x{1234}\x{ff}\x{fe}";
   print "ok 14\n";
 }
+
+{ # [perl #24846] $jb2 should be in bytes, not in utf8.
+  my $b = "abc\304";
+  my $u = "abc\x{0100}";
+
+  sub join_into_my_variable {
+    my $r = join("", @_);
+    return $r;
+  }
+
+  my $jb1 = join_into_my_variable("", $b);
+  my $ju1 = join_into_my_variable("", $u);
+  my $jb2 = join_into_my_variable("", $b);
+  my $ju2 = join_into_my_variable("", $u);
+
+  {
+      use bytes;
+      print "not " unless $jb1 eq $b;
+      print "ok 15\n";
+  }
+  print "not " unless $jb1 eq $b;
+  print "ok 16\n";
+
+  {
+      use bytes;
+      print "not " unless $ju1 eq $u;
+      print "ok 17\n";
+  }
+  print "not " unless $ju1 eq $u;
+  print "ok 18\n";
+
+  {
+      use bytes;
+      print "not " unless $jb2 eq $b;
+      print "ok 19\n";
+  }
+  print "not " unless $jb2 eq $b;
+  print "ok 20\n";
+
+  {
+      use bytes;
+      print "not " unless $ju2 eq $u;
+      print "ok 21\n";
+  }
+  print "not " unless $ju2 eq $u;
+  print "ok 22\n";
+}