BEGIN { $| = 1; print "1..181\n"; } END {print "not ok 1\n" unless $loaded;} use ShiftJIS::X0213::MapUTF qw(:all); use strict; $^W = 1; our $loaded = 1; print "ok 1\n"; ##### our @arys = ( [ "", "", "" ], # 2.. 19 [ "\n\n\0\n", "\n\n\0\n", "n:n:0:n" ], # 20.. 37 [ "ABC\0\0\0", "\x41\x42\x43\0\0\0", "41:42:43:0:0:0" ], # 38.. 55 [ "ABC\n\n", "\x41\x42\x43\n\n", "41:42:43:n:n" ], # 56.. 73 [ "\x82\xa0\x82\xa2\x82\xa4\x81\xe0\x82\xa6\x82\xa8", # 74.. 91 "\xE3\x81\x82\xE3\x81\x84\xE3\x81\x86\xE2\x89\x92\xE3\x81\x88\xE3\x81\x8A", "3042:3044:3046:2252:3048:304a", ], [ "\x8a\xbf\x8e\x9a\n\x00\x41\xdf\x81\x40\x88\x9F", # 92..109 "\xE6\xBC\xA2\xE5\xAD\x97\n\0\x41\xEF\xBE\x9F\xE3\x80\x80\xE4\xBA\x9C", "6f22:5b57:n:0:41:FF9F:3000:4E9C", ], [ "abc\x82\xf2pqr\x82\xf2xyz", #110..127 "abc\xE3\x82\x94pqr\xE3\x82\x94xyz", "61:62:63:3094:70:71:72:3094:78:79:7a", ], [ "\xFB\x55\x84\x47\xFB\x5C", #128..145 "\xf0\xa8\xaa\x99\xd0\x96\xf0\xa8\xab\xa4", "28A99:416:28AE4", ], [ "\x82\xF5\x82\xA9", #146..163 "\xe3\x81\x8b\xe3\x82\x9a\xe3\x81\x8b", "304B:309A:304B", ], [ "\x41\x86\x85\x41\x86\x86\x41\x86\x84", #164..181 "\x41\xcb\xa9\xcb\xa5\x41\xcb\xa5\xcb\xa9\x41\xcb\xa9", "41:02E9:02E5:41:02E5:02E9:41:02E9", ], ); sub uv_to_utf16 { my $u = shift; return $u if $u <= 0xFFFF; return if $u > 0x10FFFF; $u -= 0x10000; my $hi = ($u >> 10) + 0xD800; my $lo = ($u & 0x3FF) + 0xDC00; return $hi, $lo; } for my $ary (@arys) { my $sjis = $ary->[0]; my $sjisre = defined $ary->[3] ? $ary->[3] : $ary->[0]; my $utf8 = $ary->[1]; my @char = map { $_ eq 'n' ? ord("\n") : hex $_ } split /:/, $ary->[2]; my $unicode = pack 'U*', @char; my $utf16le = pack 'v*', map uv_to_utf16($_), @char; my $utf16be = pack 'n*', map uv_to_utf16($_), @char; my $utf32le = pack 'V*', @char; my $utf32be = pack 'N*', @char; my $utf16_l = pack 'v*', 0xFEFF, map uv_to_utf16($_), @char; my $utf16_b = pack 'n*', 0xFEFF, map uv_to_utf16($_), @char; my $utf16_n = pack 'n*', map uv_to_utf16($_), @char; my $utf32_l = pack 'V*', 0xFEFF, @char; my $utf32_b = pack 'N*', 0xFEFF, @char; my $utf32_n = pack 'N*', @char; print $unicode eq sjis0213_to_unicode(sub {""}, $sjis) ? "ok" : "not ok" , " ", ++$loaded, "\n"; print $utf8 eq sjis0213_to_utf8(sub {""}, $sjis) ? "ok" : "not ok" , " ", ++$loaded, "\n"; print $utf16le eq sjis0213_to_utf16le(sub {""}, $sjis) ? "ok" : "not ok" , " ", ++$loaded, "\n"; print $utf16be eq sjis0213_to_utf16be(sub {""}, $sjis) ? "ok" : "not ok" , " ", ++$loaded, "\n"; print $utf32le eq sjis0213_to_utf32le(sub {""}, $sjis) ? "ok" : "not ok" , " ", ++$loaded, "\n"; print $utf32be eq sjis0213_to_utf32be(sub {""}, $sjis) ? "ok" : "not ok" , " ", ++$loaded, "\n"; print $sjisre eq unicode_to_sjis0213(sub {""}, $unicode) ? "ok" : "not ok" , " ", ++$loaded, "\n"; print $sjisre eq utf8_to_sjis0213(sub {""}, $utf8) ? "ok" : "not ok" , " ", ++$loaded, "\n"; print $sjisre eq utf16le_to_sjis0213(sub {""}, $utf16le) ? "ok" : "not ok" , " ", ++$loaded, "\n"; print $sjisre eq utf16be_to_sjis0213(sub {""}, $utf16be) ? "ok" : "not ok" , " ", ++$loaded, "\n"; print $sjisre eq utf32le_to_sjis0213(sub {""}, $utf32le) ? "ok" : "not ok" , " ", ++$loaded, "\n"; print $sjisre eq utf32be_to_sjis0213(sub {""}, $utf32be) ? "ok" : "not ok" , " ", ++$loaded, "\n"; print $sjisre eq utf16_to_sjis0213(sub {""}, $utf16_b) ? "ok" : "not ok" , " ", ++$loaded, "\n"; print $sjisre eq utf16_to_sjis0213(sub {""}, $utf16_l) ? "ok" : "not ok" , " ", ++$loaded, "\n"; print $sjisre eq utf16_to_sjis0213(sub {""}, $utf16_n) ? "ok" : "not ok" , " ", ++$loaded, "\n"; print $sjisre eq utf32_to_sjis0213(sub {""}, $utf32_b) ? "ok" : "not ok" , " ", ++$loaded, "\n"; print $sjisre eq utf32_to_sjis0213(sub {""}, $utf32_l) ? "ok" : "not ok" , " ", ++$loaded, "\n"; print $sjisre eq utf32_to_sjis0213(sub {""}, $utf32_n) ? "ok" : "not ok" , " ", ++$loaded, "\n"; }