diff options
author | Karl Williamson <khw@cpan.org> | 2021-07-08 17:55:22 -0600 |
---|---|---|
committer | Karl Williamson <khw@cpan.org> | 2021-07-25 10:15:29 -0600 |
commit | 9ab40e4a9ef6ccc7dac62ecfaa69d6b79a7a1399 (patch) | |
tree | b2f7a9b11d4c6586970fc518fb38a76386f75416 | |
parent | 726f0605ed00fdfa7041c3f91c84273723f61555 (diff) | |
download | perl-9ab40e4a9ef6ccc7dac62ecfaa69d6b79a7a1399.tar.gz |
op/length.t: Use modern tools for EBCDIC
This uses the tools furnished in a test helper file instead of
hand-rolling our own code, greatly simplifying things.
-rw-r--r-- | t/op/length.t | 71 |
1 files changed, 23 insertions, 48 deletions
diff --git a/t/op/length.t b/t/op/length.t index 2084633f49..023ed85e34 100644 --- a/t/op/length.t +++ b/t/op/length.t @@ -5,10 +5,11 @@ use strict; BEGIN { chdir 't' if -d 't'; require './test.pl'; + require './charset_tools.pl'; set_up_inc('../lib'); } -plan (tests => 46); +plan (tests => 46 + 3 * $::IS_ASCII); is(length(""), 0); is(length("abc"), 3); @@ -26,23 +27,24 @@ is(length(), 6); is(length($a), 1); } -{ +if ($::IS_ASCII) { # Generally UTF-8 invariant on EBCDIC, so skip there my $a = pack("U", 0xFF); is(length($a), 1); use bytes; - if (ord('A') == 193) - { - printf "#%vx for 0xFF\n",$a; - ok($a eq "\x8b\x73"); - is(length($a), 2); - } - else - { - ok($a eq "\xc3\xbf"); - is(length($a), 2); - } + ok($a eq byte_utf8a_to_utf8n("\xc3\xbf")); + is(length($a), 2); +} + +{ + my $a = pack("U", 0xB6); # Works on both ASCII and EBCDIC + + is(length($a), 1); + + use bytes; + ok($a eq byte_utf8a_to_utf8n("\xc2\xb6")); + is(length($a), 2); } { @@ -51,55 +53,28 @@ is(length(), 6); is(length($a), 1); use bytes; - if (ord('A') == 193) - { - printf "#%vx for 0x100\n",$a; - ok($a eq "\x8c\x41"); - is(length($a), 2); - } - else - { - ok($a eq "\xc4\x80"); - is(length($a), 2); - } + ok($a eq byte_utf8a_to_utf8n("\xc4\x80")); + is(length($a), 2); } { - my $a = "\x{100}\x{80}"; + my $a = "\x{100}\x{B6}"; is(length($a), 2); use bytes; - if (ord('A') == 193) - { - printf "#%vx for 0x100 0x80\n",$a; - ok($a eq "\x8c\x41\x8a\x67"); - is(length($a), 4); - } - else - { - ok($a eq "\xc4\x80\xc2\x80"); - is(length($a), 4); - } + ok($a eq byte_utf8a_to_utf8n("\xc4\x80\xc2\xb6")); + is(length($a), 4); } { - my $a = "\x{80}\x{100}"; + my $a = "\x{b6}\x{100}"; is(length($a), 2); use bytes; - if (ord('A') == 193) - { - printf "#%vx for 0x80 0x100\n",$a; - ok($a eq "\x8a\x67\x8c\x41"); - is(length($a), 4); - } - else - { - ok($a eq "\xc2\x80\xc4\x80"); - is(length($a), 4); - } + ok($a eq byte_utf8a_to_utf8n("\xc2\xb6\xc4\x80")); + is(length($a), 4); } # Now for Unicode with magical vtbls |