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

Method test_lone_surrogates

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

Source from the content-addressed store, hash-verified

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

Callers 1

test_lone_surrogatesMethod · 0.45

Calls 6

lenFunction · 0.85
assertRaisesMethod · 0.45
assertEqualMethod · 0.45
encodeMethod · 0.45
decodeMethod · 0.45
joinMethod · 0.45

Tested by

no test coverage detected