@@ -369,6 +369,8 @@ def test_fixup(s):
369369 def test_islower (self ):
370370 string_tests .MixinStrUnicodeUserStringTest .test_islower (self )
371371 self .checkequalnofix (False , '\u1FFc ' , 'islower' )
372+ self .assertFalse ('\u2167 ' .islower ())
373+ self .assertTrue ('\u2177 ' .islower ())
372374 # non-BMP, uppercase
373375 self .assertFalse ('\U00010401 ' .islower ())
374376 self .assertFalse ('\U00010427 ' .islower ())
@@ -383,6 +385,8 @@ def test_isupper(self):
383385 string_tests .MixinStrUnicodeUserStringTest .test_isupper (self )
384386 if not sys .platform .startswith ('java' ):
385387 self .checkequalnofix (False , '\u1FFc ' , 'isupper' )
388+ self .assertTrue ('\u2167 ' .isupper ())
389+ self .assertFalse ('\u2177 ' .isupper ())
386390 # non-BMP, uppercase
387391 self .assertTrue ('\U00010401 ' .isupper ())
388392 self .assertTrue ('\U00010427 ' .isupper ())
@@ -548,6 +552,18 @@ def test_lower(self):
548552 '\U0001044F \U0001044F ' )
549553 self .assertEqual ('X\U00010427 x\U0001044F ' .lower (),
550554 'x\U0001044F x\U0001044F ' )
555+ self .assertEqual ('fi' .lower (), 'fi' )
556+ self .assertEqual ('\u0130 ' .lower (), '\u0069 \u0307 ' )
557+ # Special case for GREEK CAPITAL LETTER SIGMA U+03A3
558+ self .assertEqual ('\u03a3 ' .lower (), '\u03c3 ' )
559+ self .assertEqual ('\u0345 \u03a3 ' .lower (), '\u0345 \u03c3 ' )
560+ self .assertEqual ('A\u0345 \u03a3 ' .lower (), 'a\u0345 \u03c2 ' )
561+ self .assertEqual ('A\u0345 \u03a3 a' .lower (), 'a\u0345 \u03c3 a' )
562+ self .assertEqual ('A\u0345 \u03a3 ' .lower (), 'a\u0345 \u03c2 ' )
563+ self .assertEqual ('A\u03a3 \u0345 ' .lower (), 'a\u03c2 \u0345 ' )
564+ self .assertEqual ('\u03a3 \u0345 ' .lower (), '\u03c3 \u0345 ' )
565+ self .assertEqual ('\U0008fffe ' .lower (), '\U0008fffe ' )
566+ self .assertEqual ('\u2177 ' .lower (), '\u2177 ' )
551567
552568 def test_upper (self ):
553569 string_tests .CommonTest .test_upper (self )
@@ -558,6 +574,13 @@ def test_upper(self):
558574 '\U00010427 \U00010427 ' )
559575 self .assertEqual ('X\U00010427 x\U0001044F ' .upper (),
560576 'X\U00010427 X\U00010427 ' )
577+ self .assertEqual ('fi' .upper (), 'FI' )
578+ self .assertEqual ('\u0130 ' .upper (), '\u0130 ' )
579+ self .assertEqual ('\u03a3 ' .upper (), '\u03a3 ' )
580+ self .assertEqual ('ß' .upper (), 'SS' )
581+ self .assertEqual ('\u1fd2 ' .upper (), '\u0399 \u0308 \u0300 ' )
582+ self .assertEqual ('\U0008fffe ' .upper (), '\U0008fffe ' )
583+ self .assertEqual ('\u2177 ' .upper (), '\u2167 ' )
561584
562585 def test_capitalize (self ):
563586 string_tests .CommonTest .test_capitalize (self )
@@ -570,6 +593,11 @@ def test_capitalize(self):
570593 '\U00010427 \U0001044F ' )
571594 self .assertEqual ('X\U00010427 x\U0001044F ' .capitalize (),
572595 'X\U0001044F x\U0001044F ' )
596+ self .assertEqual ('h\u0130 ' .capitalize (), 'H\u0069 \u0307 ' )
597+ exp = '\u0399 \u0308 \u0300 \u0069 \u0307 '
598+ self .assertEqual ('\u1fd2 \u0130 ' .capitalize (), exp )
599+ self .assertEqual ('finnish' .capitalize (), 'FInnish' )
600+ self .assertEqual ('A\u0345 \u03a3 ' .capitalize (), 'A\u0345 \u03c2 ' )
573601
574602 def test_title (self ):
575603 string_tests .MixinStrUnicodeUserStringTest .test_title (self )
@@ -584,6 +612,9 @@ def test_title(self):
584612 '\U00010427 \U0001044F \U00010427 \U0001044F ' )
585613 self .assertEqual ('X\U00010427 x\U0001044F X\U00010427 x\U0001044F ' .title (),
586614 'X\U0001044F x\U0001044F X\U0001044F x\U0001044F ' )
615+ self .assertEqual ('fiNNISH' .title (), 'Finnish' )
616+ self .assertEqual ('A\u03a3 \u1fa1 xy' .title (), 'A\u03c2 \u1fa9 xy' )
617+ self .assertEqual ('A\u03a3 A' .title (), 'A\u03c3 a' )
587618
588619 def test_swapcase (self ):
589620 string_tests .CommonTest .test_swapcase (self )
@@ -597,6 +628,19 @@ def test_swapcase(self):
597628 '\U00010427 \U0001044F ' )
598629 self .assertEqual ('X\U00010427 x\U0001044F ' .swapcase (),
599630 'x\U0001044F X\U00010427 ' )
631+ self .assertEqual ('fi' .swapcase (), 'FI' )
632+ self .assertEqual ('\u0130 ' .swapcase (), '\u0069 \u0307 ' )
633+ # Special case for GREEK CAPITAL LETTER SIGMA U+03A3
634+ self .assertEqual ('\u03a3 ' .swapcase (), '\u03c3 ' )
635+ self .assertEqual ('\u0345 \u03a3 ' .swapcase (), '\u0399 \u03c3 ' )
636+ self .assertEqual ('A\u0345 \u03a3 ' .swapcase (), 'a\u0399 \u03c2 ' )
637+ self .assertEqual ('A\u0345 \u03a3 a' .swapcase (), 'a\u0399 \u03c3 A' )
638+ self .assertEqual ('A\u0345 \u03a3 ' .swapcase (), 'a\u0399 \u03c2 ' )
639+ self .assertEqual ('A\u03a3 \u0345 ' .swapcase (), 'a\u03c2 \u0399 ' )
640+ self .assertEqual ('\u03a3 \u0345 ' .swapcase (), '\u03c3 \u0399 ' )
641+ self .assertEqual ('\u03a3 ' .swapcase (), '\u03c3 ' )
642+ self .assertEqual ('ß' .swapcase (), 'SS' )
643+ self .assertEqual ('\u1fd2 ' .swapcase (), '\u0399 \u0308 \u0300 ' )
600644
601645 def test_contains (self ):
602646 # Testing Unicode contains method
0 commit comments