diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm860.t |
Initial commit
Diffstat (limited to 'macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm860.t')
-rw-r--r-- | macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm860.t | 399 |
1 files changed, 399 insertions, 0 deletions
diff --git a/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm860.t b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm860.t new file mode 100644 index 0000000000..7ea02bdeac --- /dev/null +++ b/macros/texinfo/texinfo/tp/maintain/lib/libintl-perl/tests/02ibm860.t @@ -0,0 +1,399 @@ +#! /usr/local/bin/perl -w + +# vim: tabstop=4 +# vim: syntax=perl + +use strict; + +use Test; + +BEGIN { + plan tests => 7; +} + +use Locale::Recode; + +sub int2utf8; + +my $local2ucs = {}; +my $ucs2local = {}; + +while (<DATA>) { + my ($code, $ucs, undef) = map { oct $_ } split /\s+/, $_; + $local2ucs->{$code} = $ucs; + $ucs2local->{$ucs} = $code unless $ucs == 0xfffd; +} + +my $cd_int = Locale::Recode->new (from => 'IBM860', + to => 'INTERNAL'); +ok !$cd_int->getError; + +my $cd_utf8 = Locale::Recode->new (from => 'IBM860', + to => 'UTF-8'); +ok !$cd_utf8->getError; + +my $cd_rev = Locale::Recode->new (from => 'INTERNAL', + to => 'IBM860'); +ok !$cd_rev->getError; + +# Convert into internal representation. +my $result_int = 1; +while (my ($code, $ucs) = each %$local2ucs) { + my $outbuf = chr $code; + my $result = $cd_int->recode ($outbuf); + unless ($result && $outbuf->[0] == $ucs) { + $result_int = 0; + last; + } +} +ok $result_int; + +# Convert to UTF-8. +my $result_utf8 = 1; +while (my ($code, $ucs) = each %$local2ucs) { + my $outbuf = chr $code; + my $result = $cd_utf8->recode ($outbuf); + unless ($result && $outbuf eq int2utf8 $ucs) { + $result_utf8 = 0; + last; + } +} +ok $result_utf8; + +# Convert from internal representation. +my $result_rev = 1; +while (my ($ucs, $code) = each %$ucs2local) { + my $outbuf = [ $ucs ]; + my $result = $cd_rev->recode ($outbuf); + unless ($result && $code == ord $outbuf) { + $result_int = 0; + last; + } +} +ok $result_int; + +# Check handling of unknown characters. +my $test_string1 = [ unpack 'c*', ' Supergirl ' ]; +$test_string1->[0] = 0xad0be; +$test_string1->[-1] = 0xbeefbabe; +my $test_string2 = [ unpack 'c*', 'Supergirl' ]; + +my $unknown = "\x3f"; # Unknown character! + +$cd_rev = Locale::Recode->new (from => 'INTERNAL', + to => 'IBM860', + ) +&& $cd_rev->recode ($test_string1) +&& $cd_rev->recode ($test_string2) +&& ($test_string2 = $unknown . $test_string2 . $unknown); + +ok $test_string1 eq $test_string2; + +sub int2utf8 +{ + my $ucs4 = shift; + + if ($ucs4 <= 0x7f) { + return chr $ucs4; + } elsif ($ucs4 <= 0x7ff) { + return pack ("C2", + (0xc0 | (($ucs4 >> 6) & 0x1f)), + (0x80 | ($ucs4 & 0x3f))); + } elsif ($ucs4 <= 0xffff) { + return pack ("C3", + (0xe0 | (($ucs4 >> 12) & 0xf)), + (0x80 | (($ucs4 >> 6) & 0x3f)), + (0x80 | ($ucs4 & 0x3f))); + } elsif ($ucs4 <= 0x1fffff) { + return pack ("C4", + (0xf0 | (($ucs4 >> 18) & 0x7)), + (0x80 | (($ucs4 >> 12) & 0x3f)), + (0x80 | (($ucs4 >> 6) & 0x3f)), + (0x80 | ($ucs4 & 0x3f))); + } elsif ($ucs4 <= 0x3ffffff) { + return pack ("C5", + (0xf0 | (($ucs4 >> 24) & 0x3)), + (0x80 | (($ucs4 >> 18) & 0x3f)), + (0x80 | (($ucs4 >> 12) & 0x3f)), + (0x80 | (($ucs4 >> 6) & 0x3f)), + (0x80 | ($ucs4 & 0x3f))); + } else { + return pack ("C6", + (0xf0 | (($ucs4 >> 30) & 0x3)), + (0x80 | (($ucs4 >> 24) & 0x1)), + (0x80 | (($ucs4 >> 18) & 0x3f)), + (0x80 | (($ucs4 >> 12) & 0x3f)), + (0x80 | (($ucs4 >> 6) & 0x3f)), + (0x80 | ($ucs4 & 0x3f))); + } +} + +#Local Variables: +#mode: perl +#perl-indent-level: 4 +#perl-continued-statement-offset: 4 +#perl-continued-brace-offset: 0 +#perl-brace-offset: -4 +#perl-brace-imaginary-offset: 0 +#perl-label-offset: -4 +#tab-width: 4 +#End: + + +__DATA__ +0x00 0x0000 +0x01 0x0001 +0x02 0x0002 +0x03 0x0003 +0x04 0x0004 +0x05 0x0005 +0x06 0x0006 +0x07 0x0007 +0x08 0x0008 +0x09 0x0009 +0x0a 0x000a +0x0b 0x000b +0x0c 0x000c +0x0d 0x000d +0x0e 0x000e +0x0f 0x000f +0x10 0x0010 +0x11 0x0011 +0x12 0x0012 +0x13 0x0013 +0x14 0x0014 +0x15 0x0015 +0x16 0x0016 +0x17 0x0017 +0x18 0x0018 +0x19 0x0019 +0x1a 0x001a +0x1b 0x001b +0x1c 0x001c +0x1d 0x001d +0x1e 0x001e +0x1f 0x001f +0x20 0x0020 +0x21 0x0021 +0x22 0x0022 +0x23 0x0023 +0x24 0x0024 +0x25 0x0025 +0x26 0x0026 +0x27 0x0027 +0x28 0x0028 +0x29 0x0029 +0x2a 0x002a +0x2b 0x002b +0x2c 0x002c +0x2d 0x002d +0x2e 0x002e +0x2f 0x002f +0x30 0x0030 +0x31 0x0031 +0x32 0x0032 +0x33 0x0033 +0x34 0x0034 +0x35 0x0035 +0x36 0x0036 +0x37 0x0037 +0x38 0x0038 +0x39 0x0039 +0x3a 0x003a +0x3b 0x003b +0x3c 0x003c +0x3d 0x003d +0x3e 0x003e +0x3f 0x003f +0x40 0x0040 +0x41 0x0041 +0x42 0x0042 +0x43 0x0043 +0x44 0x0044 +0x45 0x0045 +0x46 0x0046 +0x47 0x0047 +0x48 0x0048 +0x49 0x0049 +0x4a 0x004a +0x4b 0x004b +0x4c 0x004c +0x4d 0x004d +0x4e 0x004e +0x4f 0x004f +0x50 0x0050 +0x51 0x0051 +0x52 0x0052 +0x53 0x0053 +0x54 0x0054 +0x55 0x0055 +0x56 0x0056 +0x57 0x0057 +0x58 0x0058 +0x59 0x0059 +0x5a 0x005a +0x5b 0x005b +0x5c 0x005c +0x5d 0x005d +0x5e 0x005e +0x5f 0x005f +0x60 0x0060 +0x61 0x0061 +0x62 0x0062 +0x63 0x0063 +0x64 0x0064 +0x65 0x0065 +0x66 0x0066 +0x67 0x0067 +0x68 0x0068 +0x69 0x0069 +0x6a 0x006a +0x6b 0x006b +0x6c 0x006c +0x6d 0x006d +0x6e 0x006e +0x6f 0x006f +0x70 0x0070 +0x71 0x0071 +0x72 0x0072 +0x73 0x0073 +0x74 0x0074 +0x75 0x0075 +0x76 0x0076 +0x77 0x0077 +0x78 0x0078 +0x79 0x0079 +0x7a 0x007a +0x7b 0x007b +0x7c 0x007c +0x7d 0x007d +0x7e 0x007e +0x7f 0x007f +0x80 0x00c7 +0x81 0x00fc +0x82 0x00e9 +0x83 0x00e2 +0x84 0x00e3 +0x85 0x00e0 +0x86 0x00c1 +0x87 0x00e7 +0x88 0x00ea +0x89 0x00ca +0x8a 0x00e8 +0x8b 0x00cd +0x8c 0x00d4 +0x8d 0x00ec +0x8e 0x00c3 +0x8f 0x00c2 +0x90 0x00c9 +0x91 0x00c0 +0x92 0x00c8 +0x93 0x00f4 +0x94 0x00f5 +0x95 0x00f2 +0x96 0x00da +0x97 0x00f9 +0x98 0x00cc +0x99 0x00d5 +0x9a 0x00dc +0x9b 0x00a2 +0x9c 0x00a3 +0x9d 0x00d9 +0x9e 0x20a7 +0x9f 0x00d3 +0xa0 0x00e1 +0xa1 0x00ed +0xa2 0x00f3 +0xa3 0x00fa +0xa4 0x00f1 +0xa5 0x00d1 +0xa6 0x00aa +0xa7 0x00ba +0xa8 0x00bf +0xa9 0x00d2 +0xaa 0x00ac +0xab 0x00bd +0xac 0x00bc +0xad 0x00a1 +0xae 0x00ab +0xaf 0x00bb +0xb0 0x2591 +0xb1 0x2592 +0xb2 0x2593 +0xb3 0x2502 +0xb4 0x2524 +0xb5 0x2561 +0xb6 0x2562 +0xb7 0x2556 +0xb8 0x2555 +0xb9 0x2563 +0xba 0x2551 +0xbb 0x2557 +0xbc 0x255d +0xbd 0x255c +0xbe 0x255b +0xbf 0x2510 +0xc0 0x2514 +0xc1 0x2534 +0xc2 0x252c +0xc3 0x251c +0xc4 0x2500 +0xc5 0x253c +0xc6 0x255e +0xc7 0x255f +0xc8 0x255a +0xc9 0x2554 +0xca 0x2569 +0xcb 0x2566 +0xcc 0x2560 +0xcd 0x2550 +0xce 0x256c +0xcf 0x2567 +0xd0 0x2568 +0xd1 0x2564 +0xd2 0x2565 +0xd3 0x2559 +0xd4 0x2558 +0xd5 0x2552 +0xd6 0x2553 +0xd7 0x256b +0xd8 0x256a +0xd9 0x2518 +0xda 0x250c +0xdb 0x2588 +0xdc 0x2584 +0xdd 0x258c +0xde 0x2590 +0xdf 0x2580 +0xe0 0x03b1 +0xe1 0x00df +0xe2 0x0393 +0xe3 0x03c0 +0xe4 0x03a3 +0xe5 0x03c3 +0xe6 0x00b5 +0xe7 0x03c4 +0xe8 0x03a6 +0xe9 0x0398 +0xea 0x03a9 +0xeb 0x03b4 +0xec 0x221e +0xed 0x03c6 +0xee 0x03b5 +0xef 0x2229 +0xf0 0x2261 +0xf1 0x00b1 +0xf2 0x2265 +0xf3 0x2264 +0xf4 0x2320 +0xf5 0x2321 +0xf6 0x00f7 +0xf7 0x2248 +0xf8 0x00b0 +0xf9 0x2219 +0xfa 0x00b7 +0xfb 0x221a +0xfc 0x207f +0xfd 0x00b2 +0xfe 0x25a0 +0xff 0x00a0 |