Skip to content

Commit fa11610

Browse files
authored
Rename and refactor test method for the str subclass in test_unicodedata.py
1 parent 40a9cf4 commit fa11610

File tree

1 file changed

+16
-30
lines changed

1 file changed

+16
-30
lines changed

Lib/test/test_unicodedata.py

Lines changed: 16 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -467,45 +467,31 @@ 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
470+
def test_normalize_func_shall_return_exact_str(self):
471+
# See: https://github.com/python/cpython/issues/129569
472+
normalize = unicodedata.normalize
473+
472474
class StrSub(str):
473475
pass
474476

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)
477+
normalization_forms = ("NFC", "NFKC", "NFD", "NFKD")
490478

491479
# normalized strings
492480
empty_str = ""
493-
self.assertEqual(len(StrSub(empty_str)), 0)
494-
self.assertIs(type(NFKC(StrSub(empty_str))), EARLY_RETURN_TYPE)
495-
496481
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)
482+
for form in normalization_forms:
483+
with self.subTest(form=form):
484+
self.assertIs(type(normalize(form, empty_str)), str)
485+
self.assertIs(type(normalize(form, ascii_str)), str)
486+
self.assertIs(type(normalize(form, StrSub(empty_str))), str)
487+
self.assertIs(type(normalize(form, StrSub(ascii_str))), str)
502488

503489
# 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)
490+
strings_to_normalize = ("\u1e0b\u0323", "\ufb01", "\u1e69", "\u1e9b\u0323")
491+
for form, input_str in zip(normalization_forms, strings_to_normalize):
492+
with self.subTest(form=form, input_str=input_str):
493+
self.assertIs(type(normalize(form, input_str)), str)
494+
self.assertIs(type(normalize(form, StrSub(input_str))), str)
509495

510496

511497
if __name__ == "__main__":

0 commit comments

Comments
 (0)