MCPcopy Index your code
hub / github.com/RustPython/RustPython / test_encodehelper

Method test_encodehelper

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

Source from the content-addressed store, hash-verified

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

Callers

nothing calls this directly

Calls 6

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

Tested by

no test coverage detected