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

Method test_encodehelper

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

Source from the content-addressed store, hash-verified

985 self.assertRaises(TypeError, codecs.charmap_decode, b"\xff", "strict", {0xff: sys.maxunicode+1})
986
987 def test_encodehelper(self):
988 # enhance coverage of:
989 # Objects/unicodeobject.c::unicode_encode_call_errorhandler()
990 # and callers
991 self.assertRaises(LookupError, "\xff".encode, "ascii", "test.unknown")
992
993 def badencodereturn1(exc):
994 return 42
995 codecs.register_error("test.badencodereturn1", badencodereturn1)
996 self.assertRaises(TypeError, "\xff".encode, "ascii", "test.badencodereturn1")
997
998 def badencodereturn2(exc):
999 return ("?", None)
1000 codecs.register_error("test.badencodereturn2", badencodereturn2)
1001 self.assertRaises(TypeError, "\xff".encode, "ascii", "test.badencodereturn2")
1002
1003 handler = PosReturn()
1004 codecs.register_error("test.posreturn", handler.handle)
1005
1006 # Valid negative position
1007 handler.pos = -1
1008 self.assertEqual("\xff0".encode("ascii", "test.posreturn"), b"<?>0")
1009
1010 # Valid negative position
1011 handler.pos = -2
1012 self.assertEqual("\xff0".encode("ascii", "test.posreturn"), b"<?><?>")
1013
1014 # Negative position out of bounds
1015 handler.pos = -3
1016 self.assertRaises(IndexError, "\xff0".encode, "ascii", "test.posreturn")
1017
1018 # Valid positive position
1019 handler.pos = 1
1020 self.assertEqual("\xff0".encode("ascii", "test.posreturn"), b"<?>0")
1021
1022 # Largest valid positive position (one beyond end of input
1023 handler.pos = 2
1024 self.assertEqual("\xff0".encode("ascii", "test.posreturn"), b"<?>")
1025
1026 # Invalid positive position
1027 handler.pos = 3
1028 self.assertRaises(IndexError, "\xff0".encode, "ascii", "test.posreturn")
1029
1030 handler.pos = 0
1031
1032 class D(dict):
1033 def __getitem__(self, key):
1034 raise ValueError
1035 for err in ("strict", "replace", "xmlcharrefreplace",
1036 "backslashreplace", "namereplace", "test.posreturn"):
1037 self.assertRaises(UnicodeError, codecs.charmap_encode, "\xff", err, {0xff: None})
1038 self.assertRaises(ValueError, codecs.charmap_encode, "\xff", err, D())
1039 self.assertRaises(TypeError, codecs.charmap_encode, "\xff", err, {0xff: 300})
1040
1041 def test_decodehelper_bug36819(self):
1042 handler = RepeatedPosReturn("x")

Callers

nothing calls this directly

Calls 5

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

Tested by

no test coverage detected