The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

BEGIN { $| = 1; print "1..23\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";

##### 2..7

our $string = pack('U*', 0x81, 0x40, 0x42, 0x82, 0xA0);

print sjis2004_to_utf16be($string) eq "\x30\x00\x00\x42\x30\x42"
    ? "ok" : "not ok" , " ", ++$loaded, "\n";

print sjis2004_to_utf16le($string) eq "\x00\x30\x42\x00\x42\x30"
    ? "ok" : "not ok" , " ", ++$loaded, "\n";

print sjis2004_to_utf32be($string) eq "\0\0\x30\x00\0\0\x00\x42\0\0\x30\x42"
    ? "ok" : "not ok" , " ", ++$loaded, "\n";

print sjis2004_to_utf32le($string) eq "\x00\x30\0\0\x42\x00\0\0\x42\x30\0\0"
    ? "ok" : "not ok" , " ", ++$loaded, "\n";

print sjis2004_to_utf8   ($string) eq "\xE3\x80\x80\x42\xE3\x81\x82"
    ? "ok" : "not ok" , " ", ++$loaded, "\n";

print sjis2004_to_unicode($string) eq pack('U*', 0x3000, 0x42, 0x3042)
    ? "ok" : "not ok" , " ", ++$loaded, "\n";

##### 8..11

print unicode_to_sjis2004(pack 'C*', 0xD7, 0xF7) eq "\x81\x7E\x81\x80"
    ? "ok" : "not ok" , " ", ++$loaded, "\n";

print unicode_to_sjis2004(pack 'C*', 0x41, 0xF7) eq "\x41\x81\x80"
    ? "ok" : "not ok" , " ", ++$loaded, "\n";

print unicode_to_sjis2004(pack 'C*', 0x41, 0x80) eq "\x41"
    ? "ok" : "not ok" , " ", ++$loaded, "\n";

print unicode_to_sjis2004(pack('C*', 0x41, 0x81)) eq "\x41"
    ? "ok" : "not ok" , " ", ++$loaded, "\n";

##### 12..23

print "\xFF\x9D" eq pack('U*', 0xFF, 0x9D)
    ? "ok" : "not ok" , " ", ++$loaded, "\n";

print utf16be_to_sjis2004(pack 'U*', 0xFF,0x9D) eq "\xDD"
    ? "ok" : "not ok" , " ", ++$loaded, "\n";

print utf16le_to_sjis2004(pack 'U*', 0x9D,0xFF) eq "\xDD"
    ? "ok" : "not ok" , " ", ++$loaded, "\n";

print utf32be_to_sjis2004(pack 'U*', 0,0,0xFF,0x9D) eq "\xDD"
    ? "ok" : "not ok" , " ", ++$loaded, "\n";

print utf32le_to_sjis2004(pack 'U*', 0x9D,0xFF,0,0) eq "\xDD"
    ? "ok" : "not ok" , " ", ++$loaded, "\n";

print utf8_to_sjis2004(pack 'U*', 0xEF,0xBE,0x9D) eq "\xDD"
    ? "ok" : "not ok" , " ", ++$loaded, "\n";

print utf16_to_sjis2004(pack 'U*', 0xFF,0x9D) eq "\xDD"
    ? "ok" : "not ok" , " ", ++$loaded, "\n";

print utf16_to_sjis2004(pack 'U*', 0xFE,0xFF, 0xFF,0x9D) eq "\xDD"
    ? "ok" : "not ok" , " ", ++$loaded, "\n";

print utf16_to_sjis2004(pack 'U*', 0xFF,0xFE, 0x9D,0xFF) eq "\xDD"
    ? "ok" : "not ok" , " ", ++$loaded, "\n";

print utf32_to_sjis2004(pack 'U*', 0,0,0xFF,0x9D) eq "\xDD"
    ? "ok" : "not ok" , " ", ++$loaded, "\n";

print utf32_to_sjis2004(pack 'U*', 0,0,0xFE,0xFF, 0,0,0xFF,0x9D) eq "\xDD"
    ? "ok" : "not ok" , " ", ++$loaded, "\n";

print utf32_to_sjis2004(pack 'U*', 0xFF,0xFE,0,0, 0x9D,0xFF,0,0) eq "\xDD"
    ? "ok" : "not ok" , " ", ++$loaded, "\n";