Skip to content

Commit 0028ffb

Browse files
authored
Add NormalizationTest.test_issue129569() to test_unicodedata.py
1 parent 59c6b8c commit 0028ffb

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

Lib/test/test_unicodedata.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -467,6 +467,46 @@ def test_bug_834676(self):
467467
# Check for bug 834676
468468
unicodedata.normalize('NFC', '\ud55c\uae00')
469469

470+
def test_issue129569(self):
471+
# subclass of str
472+
class StrSub(str):
473+
pass
474+
475+
# must always be str
476+
EARLY_RETURN_TYPE = str
477+
RETURN_TYPE = str
478+
479+
def NFC(s: str):
480+
return unicodedata.normalize("NFC", s)
481+
482+
def NFKC(s: str):
483+
return unicodedata.normalize("NFKC", s)
484+
485+
def NFD(s: str):
486+
return unicodedata.normalize("NFD", s)
487+
488+
def NFKD(s: str):
489+
return unicodedata.normalize("NFKD", s)
490+
491+
# normalized strings
492+
empty_str = ""
493+
self.assertEqual(len(StrSub(empty_str)), 0)
494+
self.assertIs(type(NFKC(StrSub(empty_str))), EARLY_RETURN_TYPE)
495+
496+
ascii_str = "ascii"
497+
self.assertTrue(StrSub(ascii_str).isascii())
498+
self.assertIs(type(NFC(StrSub(ascii_str))), EARLY_RETURN_TYPE)
499+
self.assertIs(type(NFKC(StrSub(ascii_str))), EARLY_RETURN_TYPE)
500+
self.assertIs(type(NFD(StrSub(ascii_str))), EARLY_RETURN_TYPE)
501+
self.assertIs(type(NFKD(StrSub(ascii_str))), EARLY_RETURN_TYPE)
502+
503+
# unnormalized strings
504+
s1, s2, s3, s4 = "\u1e0b\u0323", "\ufb01", "\u1e69", "\u1e9b\u0323"
505+
self.assertIs(type(NFC(StrSub(s1))), RETURN_TYPE)
506+
self.assertIs(type(NFKC(StrSub(s2))), RETURN_TYPE)
507+
self.assertIs(type(NFD(StrSub(s3))), RETURN_TYPE)
508+
self.assertIs(type(NFKD(StrSub(s4))), RETURN_TYPE)
509+
470510

471511
if __name__ == "__main__":
472512
unittest.main()

0 commit comments

Comments
 (0)