BEGIN { $| = 1; print "1..7\n"; } END {print "not ok 1\n" unless $loaded;} use String::Multibyte; $big5 = String::Multibyte->new('Big5',1); $big5p = String::Multibyte->new('Big5Plus',1); $bytes = String::Multibyte->new('ShiftJIS',1); $euc = String::Multibyte->new('EUC',1); $eucjp = String::Multibyte->new('EUC_JP',1); $euctw = String::Multibyte->new('EUC_TW',1); $gbk = String::Multibyte->new('GBK',1); $gb18 = String::Multibyte->new('GB18030',1); $johab = String::Multibyte->new('Johab',1); $sjis = String::Multibyte->new('ShiftJIS',1); $uhc = String::Multibyte->new('UHC',1); $utf8 = String::Multibyte->new('UTF8',1); $u16be = String::Multibyte->new('UTF16BE',1); $u16le = String::Multibyte->new('UTF16LE',1); $u32be = String::Multibyte->new('UTF32BE',1); $u32le = String::Multibyte->new('UTF32LE',1); $^W = 1; $loaded = 1; print "ok 1\n"; ##### print $big5 ->islegal("") && $big5p->islegal("") && $bytes->islegal("") && $euc ->islegal("") && $eucjp->islegal("") && $euctw->islegal("") && $gb18 ->islegal("") && $gbk ->islegal("") && $johab->islegal("") && $sjis ->islegal("") && $utf8 ->islegal("") && $u16be->islegal("") && $u16le->islegal("") && $u32be->islegal("") && $u32le->islegal("") && $uhc ->islegal("") ? "ok" : "not ok", " 2\n"; print $big5 ->islegal("\x00\x00") && $big5p->islegal("\x00\x00") && $bytes->islegal("\x00\x00") && $euc ->islegal("\x00\x00") && $eucjp->islegal("\x00\x00") && $euctw->islegal("\x00\x00") && $gb18 ->islegal("\x00\x00") && $gbk ->islegal("\x00\x00") && $johab->islegal("\x00\x00") && $sjis ->islegal("\x00\x00") && $utf8 ->islegal("\x00\x00") && $u16be->islegal("\x00\x00") && $u16le->islegal("\x00\x00") && !$u32be->islegal("\x00\x00") && !$u32le->islegal("\x00\x00") && $uhc ->islegal("\x00\x00") ? "ok" : "not ok", " 3\n"; print $sjis ->islegal("\x81\x40\xAD\x40") && $euc ->islegal("\xA1\xA1\x20\xBD\xBD") && $eucjp->islegal("\xA1\xA1\x20\xBD\xBD") && $utf8 ->islegal("\xC2\xA0\xEF\xBD\xBF\x60") && $u16be->islegal("\xD8\x08\xDF\x45\x00\x3D\x00\x52\x00\x61") && $u16le->islegal("\x08\xD8\x45\xDF\x3D\x00\x52\x00\x61\x00") && $u16be->islegal("\x08\xD8\x45\xDF\x3D\x00\x52\x00\x61\x00") && $u16le->islegal("\xD8\x08\xDF\x45\x00\x3D\x00\x52\x00\x61") && $utf8 ->islegal("\x41\xE2\x89\xA2\xCE\x91\x2E") && $utf8 ->islegal("\xED\x95\x9C\xEA\xB5\xAD\xEC\x96\xB4") && $utf8 ->islegal("\xE6\x97\xA5\xE6\x9C\xAC\xE8\xAA\x9E") ? "ok" : "not ok", " 4\n"; print $big5 ->islegal("\x00\x00\x00") && $big5p->islegal("\x00\x00\x00") && $bytes->islegal("\x00\x00\x00") && $euc ->islegal("\x00\x00\x00") && $eucjp->islegal("\x00\x00\x00") && $euctw->islegal("\x00\x00\x00") && $gb18 ->islegal("\x00\x00\x00") && $gbk ->islegal("\x00\x00\x00") && $johab->islegal("\x00\x00\x00") && $sjis ->islegal("\x00\x00\x00") && $utf8 ->islegal("\x00\x00\x00") && ! $u16be->islegal("\x00\x00\x00") && ! $u16le->islegal("\x00\x00\x00") && ! $u32be->islegal("\x00\x00\x00") && ! $u32le->islegal("\x00\x00\x00") && $u32be->islegal("\x00\x00\x00\x00") && $u32le->islegal("\x00\x00\x00\x00") && $uhc ->islegal("\x00\x00") ? "ok" : "not ok", " 5\n"; print ! $utf8 ->islegal("\x41\xC0\x80") && ! $u16be->islegal("\x41\xC0\x80") && ! $u16le->islegal("\x41\xC0\x80") && $u16be->islegal("\x00\xD8") && ! $u16le->islegal("\x00\xD8") && ! $u16be->islegal("\xD8\x80") && $u16le->islegal("\xD8\x80") ? "ok" : "not ok", " 6\n"; # see perlfaq6 $martian = String::Multibyte->new({ charset => "martian", regexp => '[A-Z][A-Z]|[^A-Z]', },1); print $martian->islegal("AAxBGy") && $martian->islegal("") && $martian->islegal("zzz") && ! $martian->islegal("zXzz") && $martian->islegal("ZZZZ") && ! $martian->islegal("ZZZ") ? "ok" : "not ok", " 7\n"; 1; __END__