test_codeccallbacks.py 文件源码

python
阅读 22 收藏 0 点赞 0 评论 0

项目:python2-tracer 作者: extremecoders-re 项目源码 文件源码
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))
            )
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号