This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Math::BigRat 0.22
[perl5.git] / lib / utf8.t
index 70ef1e3..a5827f4 100644 (file)
@@ -37,7 +37,7 @@ no utf8; # Ironic, no?
 #
 #
 
-plan tests => 146;
+plan tests => 150;
 
 {
     # bug id 20001009.001
@@ -349,7 +349,11 @@ SKIP: {
     ok( utf8::is_utf8($c), "utf8::is_utf8 unicode");
 
     is(utf8::upgrade($a), 1, "utf8::upgrade basic");
-    is(utf8::upgrade($b), 2, "utf8::upgrade beyond");
+    if (ord('A') == 193) { # EBCDIC.
+       is(utf8::upgrade($b), 1, "utf8::upgrade beyond");
+    } else {
+       is(utf8::upgrade($b), 2, "utf8::upgrade beyond");
+    }
     is(utf8::upgrade($c), 2, "utf8::upgrade unicode");
 
     is($a, "A",       "basic");
@@ -381,7 +385,11 @@ SKIP: {
     utf8::encode($c);
 
     is($a, "A",       "basic");
-    is(length($b), 2, "beyond length");
+    if (ord('A') == 193) { # EBCDIC.
+       is(length($b), 1, "beyond length");
+    } else {
+       is(length($b), 2, "beyond length");
+    }
     is(length($c), 2, "unicode length");
 
     ok(utf8::valid($a), "utf8::valid basic");
@@ -406,7 +414,11 @@ SKIP: {
     ok(utf8::valid($c), " utf8::valid unicode");
 
     ok(!utf8::is_utf8($a), "!utf8::is_utf8 basic");
-    ok( utf8::is_utf8($b), " utf8::is_utf8 beyond"); # $b stays in UTF-8.
+    if (ord('A') == 193) { # EBCDIC.
+       ok( utf8::is_utf8(pack('U',0x0ff)), " utf8::is_utf8 beyond");
+    } else {
+       ok( utf8::is_utf8($b), " utf8::is_utf8 beyond"); # $b stays in UTF-8.
+    }
     ok( utf8::is_utf8($c), " utf8::is_utf8 unicode");
 }
 
@@ -431,3 +443,11 @@ SKIP: {
                     qr/Undefined subroutine utf8::moo/, {stderr=>1},
                    "Check Carp is loaded for AUTOLOADing errors")
 }
+
+{
+    # failure of is_utf8_char() without NATIVE_TO_UTF on EBCDIC (0260..027F)
+    ok(utf8::valid(chr(0x250)), "0x250");
+    ok(utf8::valid(chr(0x260)), "0x260");
+    ok(utf8::valid(chr(0x270)), "0x270");
+    ok(utf8::valid(chr(0x280)), "0x280");
+}