(self)
| 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") |
nothing calls this directly
no test coverage detected