# Tamito KAJIYAMA <2 March 2002>
import basetests
def test(encoding):
file = "text.shift_jis"
basetests.roundrobin_tests(file, encoding)
basetests.test_backslash_tilde(encoding)
basetests.test_stream(file, encoding)
basetests.test_encode(encoding)
basetests.test_errors(encoding)
basetests.test_error_handling(encoding, (
# invalid bytes
("abc\x80\x80\x82\xa0", "strict", None),
("abc\x80\x80\x82\xa0", "replace", u"abc\ufffd\u3042"),
("abc\x80\x80\x82\xa0", "ignore", u"abc\u3042"),
# a character that has no corresponding character in Shift_JIS
(u"abc\ufffd\u3042", "strict", None),
(u"abc\ufffd\u3042", "replace", "abc\x81\xac\x82\xa0"),
(u"abc\ufffd\u3042", "ignore", "abc\x82\xa0"),
))
test_non_round_trip_mapping(encoding)
# Q170559 - PRB: Conversion Problem Between Shift-JIS and Unicode
# http://support.microsoft.com/default.aspx?scid=kb;en-us;Q170559
NON_ROUND_TRIP_MAPPING = [
["\x87\x9c", u"\u222a", "\x81\xbe"],
["\x87\x9b", u"\u2229", "\x81\xbf"],
["\xee\xf9", u"\uffe2", "\x81\xca"],
["\xfa\x54", u"\uffe2", "\x81\xca"],
["\x87\x97", u"\u2220", "\x81\xda"],
["\x87\x96", u"\u22a5", "\x81\xdb"],
["\x87\x91", u"\u2261", "\x81\xdf"],
["\x87\x90", u"\u2252", "\x81\xe0"],
["\x87\x95", u"\u221a", "\x81\xe3"],
["\x87\x9a", u"\u2235", "\x81\xe6"],
["\xfa\x5b", u"\u2235", "\x81\xe6"],
["\x87\x92", u"\u222b", "\x81\xe7"],
["\xfa\x4a", u"\u2160", "\x87\x54"],
["\xfa\x4b", u"\u2161", "\x87\x55"],
["\xfa\x4c", u"\u2162", "\x87\x56"],
["\xfa\x4d", u"\u2163", "\x87\x57"],
["\xfa\x4e", u"\u2164", "\x87\x58"],
["\xfa\x4f", u"\u2165", "\x87\x59"],
["\xfa\x50", u"\u2166", "\x87\x5a"],
["\xfa\x51", u"\u2167", "\x87\x5b"],
["\xfa\x52", u"\u2168", "\x87\x5c"],
["\xfa\x53", u"\u2169", "\x87\x5d"],
["\xfa\x59", u"\u2116", "\x87\x82"],
["\xfa\x5a", u"\u2121", "\x87\x84"],
["\xfa\x58", u"\u3231", "\x87\x8a"],
["\xee\xef", u"\u2170", "\xfa\x40"],
["\xee\xf0", u"\u2171", "\xfa\x41"],
["\xee\xf1", u"\u2172", "\xfa\x42"],
["\xee\xf2", u"\u2173", "\xfa\x43"],
["\xee\xf3", u"\u2174", "\xfa\x44"],
["\xee\xf4", u"\u2175", "\xfa\x45"],
["\xee\xf5", u"\u2176", "\xfa\x46"],
["\xee\xf6", u"\u2177", "\xfa\x47"],
["\xee\xf7", u"\u2178", "\xfa\x48"],
["\xee\xf8", u"\u2179", "\xfa\x49"],
["\xee\xfa", u"\uffe4", "\xfa\x55"],
["\xee\xfb", u"\uff07", "\xfa\x56"],
["\xee\xfc", u"\uff02", "\xfa\x57"],
["\xed\x40", u"\u7e8a", "\xfa\x5c"],
["\xed\x41", u"\u891c", "\xfa\x5d"],
["\xed\x42", u"\u9348", "\xfa\x5e"],
["\xed\x43", u"\u9288", "\xfa\x5f"],
["\xed\x44", u"\u84dc", "\xfa\x60"],
["\xed\x45", u"\u4fc9", "\xfa\x61"],
["\xed\x46", u"\u70bb", "\xfa\x62"],
["\xed\x47", u"\u6631", "\xfa\x63"],
["\xed\x48", u"\u68c8", "\xfa\x64"],
["\xed\x49", u"\u92f9", "\xfa\x65"],
["\xed\x4a", u"\u66fb", "\xfa\x66"],
["\xed\x4b", u"\u5f45", "\xfa\x67"],
["\xed\x4c", u"\u4e28", "\xfa\x68"],
["\xed\x4d", u"\u4ee1", "\xfa\x69"],
["\xed\x4e", u"\u4efc", "\xfa\x6a"],
["\xed\x4f", u"\u4f00", "\xfa\x6b"],
["\xed\x50", u"\u4f03", "\xfa\x6c"],
["\xed\x51", u"\u4f39", "\xfa\x6d"],
["\xed\x52", u"\u4f56", "\xfa\x6e"],
["\xed\x53", u"\u4f92", "\xfa\x6f"],
["\xed\x54", u"\u4f8a", "\xfa\x70"],
["\xed\x55", u"\u4f9a", "\xfa\x71"],
["\xed\x56", u"\u4f94", "\xfa\x72"],
["\xed\x57", u"\u4fcd", "\xfa\x73"],
["\xed\x58", u"\u5040", "\xfa\x74"],
["\xed\x59", u"\u5022", "\xfa\x75"],
["\xed\x5a", u"\u4fff", "\xfa\x76"],
["\xed\x5b", u"\u501e", "\xfa\x77"],
["\xed\x5c", u"\u5046", "\xfa\x78"],
["\xed\x5d", u"\u5070", "\xfa\x79"],
["\xed\x5e", u"\u5042", "\xfa\x7a"],
["\xed\x5f", u"\u5094", "\xfa\x7b"],
["\xed\x60", u"\u50f4", "\xfa\x7c"],
["\xed\x61", u"\u50d8", "\xfa\x7d"],
["\xed\x62", u"\u514a", "\xfa\x7e"],
["\xed\x63", u"\u5164", "\xfa\x80"],
["\xed\x64", u"\u519d", "\xfa\x81"],
["\xed\x65", u"\u51be", "\xfa\x82"],
["\xed\x66", u"\u51ec", "\xfa\x83"],
["\xed\x67", u"\u5215", "\xfa\x84"],
["\xed\x68", u"\u529c", "\xfa\x85"],
["\xed\x69", u"\u52a6", "\xfa\x86"],
["\xed\x6a", u"\u52c0", "\xfa\x87"],
["\xed\x6b", u"\u52db", "\xfa\x88"],
["\xed\x6c", u"\u5300", "\xfa\x89"],
["\xed\x6d", u"\u5307", "\xfa\x8a"],
["\xed\x6e", u"\u5324", "\xfa\x8b"],
["\xed\x6f", u"\u5372", "\xfa\x8c"],
["\xed\x70", u"\u5393", "\xfa\x8d"],
["\xed\x71", u"\u53b2", "\xfa\x8e"],
["\xed\x72", u"\u53dd", "\xfa\x8f"],
["\xed\x73", u"\ufa0e", "\xfa\x90"],
["\xed\x74", u"\u549c", "\xfa\x91"],
["\xed\x75", u"\u548a", "\xfa\x92"],
["\xed\x76", u"\u54a9", "\xfa\x93"],
["\xed\x77", u"\u54ff", "\xfa\x94"],
["\xed\x78", u"\u5586", "\xfa\x95"],
["\xed\x79", u"\u5759", "\xfa\x96"],
["\xed\x7a", u"\u5765", "\xfa\x97"],
["\xed\x7b", u"\u57ac", "\xfa\x98"],
["\xed\x7c", u"\u57c8", "\xfa\x99"],
["\xed\x7d", u"\u57c7", "\xfa\x9a"],
["\xed\x7e", u"\ufa0f", "\xfa\x9b"],
["\xed\x80", u"\ufa10", "\xfa\x9c"],
["\xed\x81", u"\u589e", "\xfa\x9d"],
["\xed\x82", u"\u58b2", "\xfa\x9e"],
["\xed\x83", u"\u590b", "\xfa\x9f"],
["\xed\x84", u"\u5953", "\xfa\xa0"],
["\xed\x85", u"\u595b", "\xfa\xa1"],
["\xed\x86", u"\u595d", "\xfa\xa2"],
["\xed\x87", u"\u5963", "\xfa\xa3"],
["\xed\x88", u"\u59a4", "\xfa\xa4"],
["\xed\x89", u"\u59ba", "\xfa\xa5"],
["\xed\x8a", u"\u5b56", "\xfa\xa6"],
["\xed\x8b", u"\u5bc0", "\xfa\xa7"],
["\xed\x8c", u"\u752f", "\xfa\xa8"],
["\xed\x8d", u"\u5bd8", "\xfa\xa9"],
["\xed\x8e", u"\u5bec", "\xfa\xaa"],
["\xed\x8f", u"\u5c1e", "\xfa\xab"],
["\xed\x90", u"\u5ca6", "\xfa\xac"],
["\xed\x91", u"\u5cba", "\xfa\xad"],
["\xed\x92", u"\u5cf5", "\xfa\xae"],
["\xed\x93", u"\u5d27", "\xfa\xaf"],
["\xed\x94", u"\u5d53", "\xfa\xb0"],
["\xed\x95", u"\ufa11", "\xfa\xb1"],
["\xed\x96", u"\u5d42", "\xfa\xb2"],
["\xed\x97", u"\u5d6d", "\xfa\xb3"],
["\xed\x98", u"\u5db8", "\xfa\xb4"],
["\xed\x99", u"\u5db9", "\xfa\xb5"],
["\xed\x9a", u"\u5dd0", "\xfa\xb6"],
["\xed\x9b", u"\u5f21", "\xfa\xb7"],
["\xed\x9c", u"\u5f34", "\xfa\xb8"],
["\xed\x9d", u"\u5f67", "\xfa\xb9"],
["\xed\x9e", u"\u5fb7", "\xfa\xba"],
["\xed\x9f", u"\u5fde", "\xfa\xbb"],
["\xed\xa0", u"\u605d", "\xfa\xbc"],
["\xed\xa1", u"\u6085", "\xfa\xbd"],
["\xed\xa2", u"\u608a", "\xfa\xbe"],
["\xed\xa3", u"\u60de", "\xfa\xbf"],
["\xed\xa4", u"\u60d5", "\xfa\xc0"],
["\xed\xa5", u"\u6120", "\xfa\xc1"],
["\xed\xa6", u"\u60f2", "\xfa\xc2"],
["\xed\xa7", u"\u6111", "\xfa\xc3"],
["\xed\xa8", u"\u6137", "\xfa\xc4"],
["\xed\xa9", u"\u6130", "\xfa\xc5"],
["\xed\xaa", u"\u6198", "\xfa\xc6"],
["\xed\xab", u"\u6213", "\xfa\xc7"],
["\xed\xac", u"\u62a6", "\xfa\xc8"],
["\xed\xad", u"\u63f5", "\xfa\xc9"],
["\xed\xae", u"\u6460", "\xfa\xca"],
["\xed\xaf", u"\u649d", "\xfa\xcb"],
["\xed\xb0", u"\u64ce", "\xfa\xcc"],
["\xed\xb1", u"\u654e", "\xfa\xcd"],
["\xed\xb2", u"\u6600", "\xfa\xce"],
["\xed\xb3", u"\u6615", "\xfa\xcf"],
["\xed\xb4", u"\u663b", "\xfa\xd0"],
["\xed\xb5", u"\u6609", "\xfa\xd1"],
["\xed\xb6", u"\u662e", "\xfa\xd2"],
["\xed\xb7", u"\u661e", "\xfa\xd3"],
["\xed\xb8", u"\u6624", "\xfa\xd4"],
["\xed\xb9", u"\u6665", "\xfa\xd5"],
["\xed\xba", u"\u6657", "\xfa\xd6"],
["\xed\xbb", u"\u6659", "\xfa\xd7"],
["\xed\xbc", u"\ufa12", "\xfa\xd8"],
["\xed\xbd", u"\u6673", "\xfa\xd9"],
["\xed\xbe", u"\u6699", "\xfa\xda"],
["\xed\xbf", u"\u66a0", "\xfa\xdb"],
["\xed\xc0", u"\u66b2", "\xfa\xdc"],
["\xed\xc1", u"\u66bf", "\xfa\xdd"],
["\xed\xc2", u"\u66fa", "\xfa\xde"],
["\xed\xc3", u"\u670e", "\xfa\xdf"],
["\xed\xc4", u"\uf929", "\xfa\xe0"],
["\xed\xc5", u"\u6766", "\xfa\xe1"],
["\xed\xc6", u"\u67bb", "\xfa\xe2"],
["\xed\xc7", u"\u6852", "\xfa\xe3"],
["\xed\xc8", u"\u67c0", "\xfa\xe4"],
["\xed\xc9", u"\u6801", "\xfa\xe5"],
["\xed\xca", u"\u6844", "\xfa\xe6"],
["\xed\xcb", u"\u68cf", "\xfa\xe7"],
["\xed\xcc", u"\ufa13", "\xfa\xe8"],
["\xed\xcd", u"\u6968", "\xfa\xe9"],
["\xed\xce", u"\ufa14", "\xfa\xea"],
["\xed\xcf", u"\u6998", "\xfa\xeb"],
["\xed\xd0", u"\u69e2", "\xfa\xec"],
["\xed\xd1", u"\u6a30", "\xfa\xed"],
["\xed\xd2", u"\u6a6b", "\xfa\xee"],
["\xed\xd3", u"\u6a46", "\xfa\xef"],
["\xed\xd4", u"\u6a73", "\xfa\xf0"],
["\xed\xd5", u"\u6a7e", "\xfa\xf1"],
["\xed\xd6", u"\u6ae2", "\xfa\xf2"],
["\xed\xd7", u"\u6ae4", "\xfa\xf3"],
["\xed\xd8", u"\u6bd6", "\xfa\xf4"],
["\xed\xd9", u"\u6c3f", "\xfa\xf5"],
["\xed\xda", u"\u6c5c", "\xfa\xf6"],
["\xed\xdb", u"\u6c86", "\xfa\xf7"],
["\xed\xdc", u"\u6c6f", "\xfa\xf8"],
["\xed\xdd", u"\u6cda", "\xfa\xf9"],
["\xed\xde", u"\u6d04", "\xfa\xfa"],
["\xed\xdf", u"\u6d87", "\xfa\xfb"],
["\xed\xe0", u"\u6d6f", "\xfa\xfc"],
["\xed\xe1", u"\u6d96", "\xfb\x40"],
["\xed\xe2", u"\u6dac", "\xfb\x41"],
["\xed\xe3", u"\u6dcf", "\xfb\x42"],
["\xed\xe4", u"\u6df8", "\xfb\x43"],
["\xed\xe5", u"\u6df2", "\xfb\x44"],
["\xed\xe6", u"\u6dfc", "\xfb\x45"],
["\xed\xe7", u"\u6e39", "\xfb\x46"],
["\xed\xe8", u"\u6e5c", "\xfb\x47"],
["\xed\xe9", u"\u6e27", "\xfb\x48"],
["\xed\xea", u"\u6e3c", "\xfb\x49"],
["\xed\xeb", u"\u6ebf", "\xfb\x4a"],
["\xed\xec", u"\u6f88", "\xfb\x4b"],
["\xed\xed", u"\u6fb5", "\xfb\x4c"],
["\xed\xee", u"\u6ff5", "\xfb\x4d"],
["\xed\xef", u"\u7005", "\xfb\x4e"],
["\xed\xf0", u"\u7007", "\xfb\x4f"],
["\xed\xf1", u"\u7028", "\xfb\x50"],
["\xed\xf2", u"\u7085", "\xfb\x51"],
["\xed\xf3", u"\u70ab", "\xfb\x52"],
["\xed\xf4", u"\u710f", "\xfb\x53"],
["\xed\xf5", u"\u7104", "\xfb\x54"],
["\xed\xf6", u"\u715c", "\xfb\x55"],
["\xed\xf7", u"\u7146", "\xfb\x56"],
["\xed\xf8", u"\u7147", "\xfb\x57"],
["\xed\xf9", u"\ufa15", "\xfb\x58"],
["\xed\xfa", u"\u71c1", "\xfb\x59"],
["\xed\xfb", u"\u71fe", "\xfb\x5a"],
["\xed\xfc", u"\u72b1", "\xfb\x5b"],
["\xee\x40", u"\u72be", "\xfb\x5c"],
["\xee\x41", u"\u7324", "\xfb\x5d"],
["\xee\x42", u"\ufa16", "\xfb\x5e"],
["\xee\x43", u"\u7377", "\xfb\x5f"],
["\xee\x44", u"\u73bd", "\xfb\x60"],
["\xee\x45", u"\u73c9", "\xfb\x61"],
["\xee\x46", u"\u73d6", "\xfb\x62"],
["\xee\x47", u"\u73e3", "\xfb\x63"],
["\xee\x48", u"\u73d2", "\xfb\x64"],
["\xee\x49", u"\u7407", "\xfb\x65"],
["\xee\x4a", u"\u73f5", "\xfb\x66"],
["\xee\x4b", u"\u7426", "\xfb\x67"],
["\xee\x4c", u"\u742a", "\xfb\x68"],
["\xee\x4d", u"\u7429", "\xfb\x69"],
["\xee\x4e", u"\u742e", "\xfb\x6a"],
["\xee\x4f", u"\u7462", "\xfb\x6b"],
["\xee\x50", u"\u7489", "\xfb\x6c"],
["\xee\x51", u"\u749f", "\xfb\x6d"],
["\xee\x52", u"\u7501", "\xfb\x6e"],
["\xee\x53", u"\u756f", "\xfb\x6f"],
["\xee\x54", u"\u7682", "\xfb\x70"],
["\xee\x55", u"\u769c", "\xfb\x71"],
["\xee\x56", u"\u769e", "\xfb\x72"],
["\xee\x57", u"\u769b", "\xfb\x73"],
["\xee\x58", u"\u76a6", "\xfb\x74"],
["\xee\x59", u"\ufa17", "\xfb\x75"],
["\xee\x5a", u"\u7746", "\xfb\x76"],
["\xee\x5b", u"\u52af", "\xfb\x77"],
["\xee\x5c", u"\u7821", "\xfb\x78"],
["\xee\x5d", u"\u784e", "\xfb\x79"],
["\xee\x5e", u"\u7864", "\xfb\x7a"],
["\xee\x5f", u"\u787a", "\xfb\x7b"],
["\xee\x60", u"\u7930", "\xfb\x7c"],
["\xee\x61", u"\ufa18", "\xfb\x7d"],
["\xee\x62", u"\ufa19", "\xfb\x7e"],
["\xee\x63", u"\ufa1a", "\xfb\x80"],
["\xee\x64", u"\u7994", "\xfb\x81"],
["\xee\x65", u"\ufa1b", "\xfb\x82"],
["\xee\x66", u"\u799b", "\xfb\x83"],
["\xee\x67", u"\u7ad1", "\xfb\x84"],
["\xee\x68", u"\u7ae7", "\xfb\x85"],
["\xee\x69", u"\ufa1c", "\xfb\x86"],
["\xee\x6a", u"\u7aeb", "\xfb\x87"],
["\xee\x6b", u"\u7b9e", "\xfb\x88"],
["\xee\x6c", u"\ufa1d", "\xfb\x89"],
["\xee\x6d", u"\u7d48", "\xfb\x8a"],
["\xee\x6e", u"\u7d5c", "\xfb\x8b"],
["\xee\x6f", u"\u7db7", "\xfb\x8c"],
["\xee\x70", u"\u7da0", "\xfb\x8d"],
["\xee\x71", u"\u7dd6", "\xfb\x8e"],
["\xee\x72", u"\u7e52", "\xfb\x8f"],
["\xee\x73", u"\u7f47", "\xfb\x90"],
["\xee\x74", u"\u7fa1", "\xfb\x91"],
["\xee\x75", u"\ufa1e", "\xfb\x92"],
["\xee\x76", u"\u8301", "\xfb\x93"],
["\xee\x77", u"\u8362", "\xfb\x94"],
["\xee\x78", u"\u837f", "\xfb\x95"],
["\xee\x79", u"\u83c7", "\xfb\x96"],
["\xee\x7a", u"\u83f6", "\xfb\x97"],
["\xee\x7b", u"\u8448", "\xfb\x98"],
["\xee\x7c", u"\u84b4", "\xfb\x99"],
["\xee\x7d", u"\u8553", "\xfb\x9a"],
["\xee\x7e", u"\u8559", "\xfb\x9b"],
["\xee\x80", u"\u856b", "\xfb\x9c"],
["\xee\x81", u"\ufa1f", "\xfb\x9d"],
["\xee\x82", u"\u85b0", "\xfb\x9e"],
["\xee\x83", u"\ufa20", "\xfb\x9f"],
["\xee\x84", u"\ufa21", "\xfb\xa0"],
["\xee\x85", u"\u8807", "\xfb\xa1"],
["\xee\x86", u"\u88f5", "\xfb\xa2"],
["\xee\x87", u"\u8a12", "\xfb\xa3"],
["\xee\x88", u"\u8a37", "\xfb\xa4"],
["\xee\x89", u"\u8a79", "\xfb\xa5"],
["\xee\x8a", u"\u8aa7", "\xfb\xa6"],
["\xee\x8b", u"\u8abe", "\xfb\xa7"],
["\xee\x8c", u"\u8adf", "\xfb\xa8"],
["\xee\x8d", u"\ufa22", "\xfb\xa9"],
["\xee\x8e", u"\u8af6", "\xfb\xaa"],
["\xee\x8f", u"\u8b53", "\xfb\xab"],
["\xee\x90", u"\u8b7f", "\xfb\xac"],
["\xee\x91", u"\u8cf0", "\xfb\xad"],
["\xee\x92", u"\u8cf4", "\xfb\xae"],
["\xee\x93", u"\u8d12", "\xfb\xaf"],
["\xee\x94", u"\u8d76", "\xfb\xb0"],
["\xee\x95", u"\ufa23", "\xfb\xb1"],
["\xee\x96", u"\u8ecf", "\xfb\xb2"],
["\xee\x97", u"\ufa24", "\xfb\xb3"],
["\xee\x98", u"\ufa25", "\xfb\xb4"],
["\xee\x99", u"\u9067", "\xfb\xb5"],
["\xee\x9a", u"\u90de", "\xfb\xb6"],
["\xee\x9b", u"\ufa26", "\xfb\xb7"],
["\xee\x9c", u"\u9115", "\xfb\xb8"],
["\xee\x9d", u"\u9127", "\xfb\xb9"],
["\xee\x9e", u"\u91da", "\xfb\xba"],
["\xee\x9f", u"\u91d7", "\xfb\xbb"],
["\xee\xa0", u"\u91de", "\xfb\xbc"],
["\xee\xa1", u"\u91ed", "\xfb\xbd"],
["\xee\xa2", u"\u91ee", "\xfb\xbe"],
["\xee\xa3", u"\u91e4", "\xfb\xbf"],
["\xee\xa4", u"\u91e5", "\xfb\xc0"],
["\xee\xa5", u"\u9206", "\xfb\xc1"],
["\xee\xa6", u"\u9210", "\xfb\xc2"],
["\xee\xa7", u"\u920a", "\xfb\xc3"],
["\xee\xa8", u"\u923a", "\xfb\xc4"],
["\xee\xa9", u"\u9240", "\xfb\xc5"],
["\xee\xaa", u"\u923c", "\xfb\xc6"],
["\xee\xab", u"\u924e", "\xfb\xc7"],
["\xee\xac", u"\u9259", "\xfb\xc8"],
["\xee\xad", u"\u9251", "\xfb\xc9"],
["\xee\xae", u"\u9239", "\xfb\xca"],
["\xee\xaf", u"\u9267", "\xfb\xcb"],
["\xee\xb0", u"\u92a7", "\xfb\xcc"],
["\xee\xb1", u"\u9277", "\xfb\xcd"],
["\xee\xb2", u"\u9278", "\xfb\xce"],
["\xee\xb3", u"\u92e7", "\xfb\xcf"],
["\xee\xb4", u"\u92d7", "\xfb\xd0"],
["\xee\xb5", u"\u92d9", "\xfb\xd1"],
["\xee\xb6", u"\u92d0", "\xfb\xd2"],
["\xee\xb7", u"\ufa27", "\xfb\xd3"],
["\xee\xb8", u"\u92d5", "\xfb\xd4"],
["\xee\xb9", u"\u92e0", "\xfb\xd5"],
["\xee\xba", u"\u92d3", "\xfb\xd6"],
["\xee\xbb", u"\u9325", "\xfb\xd7"],
["\xee\xbc", u"\u9321", "\xfb\xd8"],
["\xee\xbd", u"\u92fb", "\xfb\xd9"],
["\xee\xbe", u"\ufa28", "\xfb\xda"],
["\xee\xbf", u"\u931e", "\xfb\xdb"],
["\xee\xc0", u"\u92ff", "\xfb\xdc"],
["\xee\xc1", u"\u931d", "\xfb\xdd"],
["\xee\xc2", u"\u9302", "\xfb\xde"],
["\xee\xc3", u"\u9370", "\xfb\xdf"],
["\xee\xc4", u"\u9357", "\xfb\xe0"],
["\xee\xc5", u"\u93a4", "\xfb\xe1"],
["\xee\xc6", u"\u93c6", "\xfb\xe2"],
["\xee\xc7", u"\u93de", "\xfb\xe3"],
["\xee\xc8", u"\u93f8", "\xfb\xe4"],
["\xee\xc9", u"\u9431", "\xfb\xe5"],
["\xee\xca", u"\u9445", "\xfb\xe6"],
["\xee\xcb", u"\u9448", "\xfb\xe7"],
["\xee\xcc", u"\u9592", "\xfb\xe8"],
["\xee\xcd", u"\uf9dc", "\xfb\xe9"],
["\xee\xce", u"\ufa29", "\xfb\xea"],
["\xee\xcf", u"\u969d", "\xfb\xeb"],
["\xee\xd0", u"\u96af", "\xfb\xec"],
["\xee\xd1", u"\u9733", "\xfb\xed"],
["\xee\xd2", u"\u973b", "\xfb\xee"],
["\xee\xd3", u"\u9743", "\xfb\xef"],
["\xee\xd4", u"\u974d", "\xfb\xf0"],
["\xee\xd5", u"\u974f", "\xfb\xf1"],
["\xee\xd6", u"\u9751", "\xfb\xf2"],
["\xee\xd7", u"\u9755", "\xfb\xf3"],
["\xee\xd8", u"\u9857", "\xfb\xf4"],
["\xee\xd9", u"\u9865", "\xfb\xf5"],
["\xee\xda", u"\ufa2a", "\xfb\xf6"],
["\xee\xdb", u"\ufa2b", "\xfb\xf7"],
["\xee\xdc", u"\u9927", "\xfb\xf8"],
["\xee\xdd", u"\ufa2c", "\xfb\xf9"],
["\xee\xde", u"\u999e", "\xfb\xfa"],
["\xee\xdf", u"\u9a4e", "\xfb\xfb"],
["\xee\xe0", u"\u9ad9", "\xfb\xfc"],
["\xee\xe1", u"\u9adc", "\xfc\x40"],
["\xee\xe2", u"\u9b75", "\xfc\x41"],
["\xee\xe3", u"\u9b72", "\xfc\x42"],
["\xee\xe4", u"\u9b8f", "\xfc\x43"],
["\xee\xe5", u"\u9bb1", "\xfc\x44"],
["\xee\xe6", u"\u9bbb", "\xfc\x45"],
["\xee\xe7", u"\u9c00", "\xfc\x46"],
["\xee\xe8", u"\u9d70", "\xfc\x47"],
["\xee\xe9", u"\u9d6b", "\xfc\x48"],
["\xee\xea", u"\ufa2d", "\xfc\x49"],
["\xee\xeb", u"\u9e19", "\xfc\x4a"],
["\xee\xec", u"\u9ed1", "\xfc\x4b"]]
def test_non_round_trip_mapping(encoding):
for f, u, t in NON_ROUND_TRIP_MAPPING:
assert u == unicode(f, encoding)
assert t == unicode(f, encoding).encode(encoding)
def sanity():
for h in range(0x81, 0xa0):
for l in range(0x40, 0xed):
if l in (0x7e, 0x7f):
continue
u1=u2="***"
c = chr(h) + chr(l)
u1 = unicode(c, "mbcs", "strict")
try:
u2 = unicode(c, "japanese.ms932", "strict")
except UnicodeError:
if ord(u1) <> 0x30fb:
raise
else:
continue
assert u1 == u2
u1=u2="***"
c = chr(h) + chr(l)
u1 = unicode(c, "mbcs", "strict")
try:
u2 = unicode(c, "japanese.ms932", "strict")
except UnicodeError:
if ord(u1) <> 0x30fb:
raise
else:
continue
assert u1 == u2
for h in range(0xe0, 0xfd):
for l in range(0x40, 0xed):
if l in (0x7e, 0x7f):
continue
u1=u2="***"
c = chr(h) + chr(l)
u1 = unicode(c, "mbcs", "strict")
try:
u2 = unicode(c, "japanese.ms932", "strict")
except UnicodeError:
if ord(u1) <> 0x30fb:
raise
else:
continue
assert u1 == u2
u1=u2="***"
c = chr(h) + chr(l)
u1 = unicode(c, "mbcs", "strict")
try:
u2 = unicode(c, "japanese.ms932", "strict")
except UnicodeError:
if ord(u1) <> 0x30fb:
raise
else:
continue
assert u1 == u2
def sanity2():
for i in range(65536):
try:
u1 = unichr(i).encode("mbcs")
except UnicodeError:
u1 = '____'
try:
u2 = unichr(i).encode("japanese.ms932")
except UnicodeError:
u2 = '____'
if u1 != '?':
assert u1 == u2
test("japanese.c.ms932")
#import sys
#if sys.platform == "win32":
# sanity()
# sanity2()
syntax highlighted by Code2HTML, v. 0.9.1