Test PyUnicode_Translate()
(self)
| 1213 | @support.cpython_only |
| 1214 | @unittest.skipIf(_testlimitedcapi is None, 'need _testlimitedcapi module') |
| 1215 | def test_translate(self): |
| 1216 | """Test PyUnicode_Translate()""" |
| 1217 | from _testlimitedcapi import unicode_translate as translate |
| 1218 | |
| 1219 | self.assertEqual(translate('abcd', {ord('a'): 'A', ord('b'): ord('B'), ord('c'): '<>'}), 'AB<>d') |
| 1220 | self.assertEqual(translate('абвг', {ord('а'): 'А', ord('б'): ord('Б'), ord('в'): '<>'}), 'АБ<>г') |
| 1221 | self.assertEqual(translate('abc', {}), 'abc') |
| 1222 | self.assertEqual(translate('abc', []), 'abc') |
| 1223 | self.assertRaises(UnicodeTranslateError, translate, 'abc', {ord('b'): None}) |
| 1224 | self.assertRaises(UnicodeTranslateError, translate, 'abc', {ord('b'): None}, 'strict') |
| 1225 | self.assertRaises(LookupError, translate, 'abc', {ord('b'): None}, 'foo') |
| 1226 | self.assertEqual(translate('abc', {ord('b'): None}, 'ignore'), 'ac') |
| 1227 | self.assertEqual(translate('abc', {ord('b'): None}, 'replace'), 'a\ufffdc') |
| 1228 | self.assertEqual(translate('abc', {ord('b'): None}, 'backslashreplace'), r'a\x62c') |
| 1229 | # XXX Other error handlers do not support UnicodeTranslateError |
| 1230 | self.assertRaises(TypeError, translate, b'abc', []) |
| 1231 | self.assertRaises(TypeError, translate, 123, []) |
| 1232 | self.assertRaises(TypeError, translate, 'abc', {ord('a'): b'A'}) |
| 1233 | self.assertRaises(TypeError, translate, 'abc', 123) |
| 1234 | self.assertRaises(TypeError, translate, 'abc', NULL) |
| 1235 | self.assertRaises(LookupError, translate, 'abc', {ord('b'): None}, 'foo') |
| 1236 | # CRASHES translate(NULL, []) |
| 1237 | |
| 1238 | @support.cpython_only |
| 1239 | @unittest.skipIf(_testlimitedcapi is None, 'need _testlimitedcapi module') |
nothing calls this directly
no test coverage detected