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

Method test_lone_surrogates

Lib/test/test_codecs.py:394–436  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

392 ill_formed_sequence_replace = "\ufffd"
393
394 def test_lone_surrogates(self):
395 self.assertRaises(UnicodeEncodeError, "\ud800".encode, self.encoding)
396 self.assertEqual("[\uDC80]".encode(self.encoding, "backslashreplace"),
397 "[\\udc80]".encode(self.encoding))
398 self.assertEqual("[\uDC80]".encode(self.encoding, "namereplace"),
399 "[\\udc80]".encode(self.encoding))
400 self.assertEqual("[\uDC80]".encode(self.encoding, "xmlcharrefreplace"),
401 "[�]".encode(self.encoding))
402 self.assertEqual("[\uDC80]".encode(self.encoding, "ignore"),
403 "[]".encode(self.encoding))
404 self.assertEqual("[\uDC80]".encode(self.encoding, "replace"),
405 "[?]".encode(self.encoding))
406
407 # sequential surrogate characters
408 self.assertEqual("[\uD800\uDC80]".encode(self.encoding, "ignore"),
409 "[]".encode(self.encoding))
410 self.assertEqual("[\uD800\uDC80]".encode(self.encoding, "replace"),
411 "[??]".encode(self.encoding))
412
413 bom = "".encode(self.encoding)
414 for before, after in [("\U00010fff", "A"), ("[", "]"),
415 ("A", "\U00010fff")]:
416 before_sequence = before.encode(self.encoding)[len(bom):]
417 after_sequence = after.encode(self.encoding)[len(bom):]
418 test_string = before + "\uDC80" + after
419 test_sequence = (bom + before_sequence +
420 self.ill_formed_sequence + after_sequence)
421 self.assertRaises(UnicodeDecodeError, test_sequence.decode,
422 self.encoding)
423 self.assertEqual(test_string.encode(self.encoding,
424 "surrogatepass"),
425 test_sequence)
426 self.assertEqual(test_sequence.decode(self.encoding,
427 "surrogatepass"),
428 test_string)
429 self.assertEqual(test_sequence.decode(self.encoding, "ignore"),
430 before + after)
431 self.assertEqual(test_sequence.decode(self.encoding, "replace"),
432 before + self.ill_formed_sequence_replace + after)
433 backslashreplace = ''.join('\\x%02x' % b
434 for b in self.ill_formed_sequence)
435 self.assertEqual(test_sequence.decode(self.encoding, "backslashreplace"),
436 before + backslashreplace + after)
437
438 def test_incremental_surrogatepass(self):
439 # Test incremental decoder for surrogatepass handler:

Callers 1

test_lone_surrogatesMethod · 0.45

Calls 5

assertRaisesMethod · 0.45
assertEqualMethod · 0.45
encodeMethod · 0.45
decodeMethod · 0.45
joinMethod · 0.45

Tested by

no test coverage detected