def test_badandgoodbackslashreplaceexceptions(self):
# "backslashreplace" complains about a non-exception passed in
self.assertRaises(
TypeError,
codecs.backslashreplace_errors,
42
)
# "backslashreplace" complains about the wrong exception types
self.assertRaises(
TypeError,
codecs.backslashreplace_errors,
UnicodeError("ouch")
)
# "backslashreplace" can only be used for encoding
self.assertRaises(
TypeError,
codecs.backslashreplace_errors,
UnicodeDecodeError("ascii", "\xff", 0, 1, "ouch")
)
self.assertRaises(
TypeError,
codecs.backslashreplace_errors,
UnicodeTranslateError(u"\u3042", 0, 1, "ouch")
)
# Use the correct exception
tests = [
(u"\u3042", u"\\u3042"),
(u"\n", u"\\x0a"),
(u"a", u"\\x61"),
(u"\x00", u"\\x00"),
(u"\xff", u"\\xff"),
(u"\u0100", u"\\u0100"),
(u"\uffff", u"\\uffff"),
# Lone surrogates
(u"\ud800", u"\\ud800"),
(u"\udfff", u"\\udfff"),
]
if sys.maxunicode > 0xffff:
tests += [
(u"\U00010000", u"\\U00010000"),
(u"\U0010ffff", u"\\U0010ffff"),
]
else:
tests += [
(u"\U00010000", u"\\ud800\\udc00"),
(u"\U0010ffff", u"\\udbff\\udfff"),
]
for s, r in tests:
self.assertEqual(
codecs.backslashreplace_errors(
UnicodeEncodeError("ascii", u"a" + s + u"b",
1, 1 + len(s), "ouch")),
(r, 1 + len(s))
)
test_codeccallbacks.py 文件源码
python
阅读 22
收藏 0
点赞 0
评论 0
评论列表
文章目录