MCPcopy Index your code
hub / github.com/python/cpython / test_decodehelper

Method test_decodehelper

Lib/test/test_codeccallbacks.py:928–985  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

926 s.encode(enc, err)
927
928 def test_decodehelper(self):
929 # enhance coverage of:
930 # Objects/unicodeobject.c::unicode_decode_call_errorhandler()
931 # and callers
932 self.assertRaises(LookupError, b"\xff".decode, "ascii", "test.unknown")
933
934 def baddecodereturn1(exc):
935 return 42
936 codecs.register_error("test.baddecodereturn1", baddecodereturn1)
937 self.assertRaises(TypeError, b"\xff".decode, "ascii", "test.baddecodereturn1")
938 self.assertRaises(TypeError, b"\\".decode, "unicode-escape", "test.baddecodereturn1")
939 self.assertRaises(TypeError, b"\\x0".decode, "unicode-escape", "test.baddecodereturn1")
940 self.assertRaises(TypeError, b"\\x0y".decode, "unicode-escape", "test.baddecodereturn1")
941 self.assertRaises(TypeError, b"\\Uffffeeee".decode, "unicode-escape", "test.baddecodereturn1")
942 self.assertRaises(TypeError, b"\\uyyyy".decode, "raw-unicode-escape", "test.baddecodereturn1")
943
944 def baddecodereturn2(exc):
945 return ("?", None)
946 codecs.register_error("test.baddecodereturn2", baddecodereturn2)
947 self.assertRaises(TypeError, b"\xff".decode, "ascii", "test.baddecodereturn2")
948
949 handler = PosReturn()
950 codecs.register_error("test.posreturn", handler.handle)
951
952 # Valid negative position
953 handler.pos = -1
954 self.assertEqual(b"\xff0".decode("ascii", "test.posreturn"), "<?>0")
955
956 # Valid negative position
957 handler.pos = -2
958 self.assertEqual(b"\xff0".decode("ascii", "test.posreturn"), "<?><?>")
959
960 # Negative position out of bounds
961 handler.pos = -3
962 self.assertRaises(IndexError, b"\xff0".decode, "ascii", "test.posreturn")
963
964 # Valid positive position
965 handler.pos = 1
966 self.assertEqual(b"\xff0".decode("ascii", "test.posreturn"), "<?>0")
967
968 # Largest valid positive position (one beyond end of input)
969 handler.pos = 2
970 self.assertEqual(b"\xff0".decode("ascii", "test.posreturn"), "<?>")
971
972 # Invalid positive position
973 handler.pos = 3
974 self.assertRaises(IndexError, b"\xff0".decode, "ascii", "test.posreturn")
975
976 # Restart at the "0"
977 handler.pos = 6
978 self.assertEqual(b"\\uyyyy0".decode("raw-unicode-escape", "test.posreturn"), "<?>0")
979
980 class D(dict):
981 def __getitem__(self, key):
982 raise ValueError
983 self.assertRaises(UnicodeError, codecs.charmap_decode, b"\xff", "strict", {0xff: None})
984 self.assertRaises(ValueError, codecs.charmap_decode, b"\xff", "strict", D())
985 self.assertRaises(TypeError, codecs.charmap_decode, b"\xff", "strict", {0xff: sys.maxunicode+1})

Callers

nothing calls this directly

Calls 5

PosReturnClass · 0.85
DClass · 0.70
assertRaisesMethod · 0.45
assertEqualMethod · 0.45
decodeMethod · 0.45

Tested by

no test coverage detected