diff options
| author | Serhiy Storchaka <storchaka@gmail.com> | 2014-11-10 10:43:14 (GMT) | 
|---|---|---|
| committer | Serhiy Storchaka <storchaka@gmail.com> | 2014-11-10 10:43:14 (GMT) | 
| commit | 5619ab926b83b3ce8ed8f24d52bcedc96835cb35 (patch) | |
| tree | 1cfe1235c168d150762ace73b822ce8587e98243 /Lib/test/test_re.py | |
| parent | 5a8dacf9c682734dd96ab25731faf5610179fa57 (diff) | |
| parent | 0c938f6d248e7dbf50a1f00b0c6bca3845859fc0 (diff) | |
| download | cpython-5619ab926b83b3ce8ed8f24d52bcedc96835cb35.zip cpython-5619ab926b83b3ce8ed8f24d52bcedc96835cb35.tar.gz cpython-5619ab926b83b3ce8ed8f24d52bcedc96835cb35.tar.bz2  | |
Issue #12728: Different Unicode characters having the same uppercase but
different lowercase are now matched in case-insensitive regular expressions.
Diffstat (limited to 'Lib/test/test_re.py')
| -rw-r--r-- | Lib/test/test_re.py | 51 | 
1 files changed, 51 insertions, 0 deletions
diff --git a/Lib/test/test_re.py b/Lib/test/test_re.py index 8baf3b4..3bd716d 100644 --- a/Lib/test/test_re.py +++ b/Lib/test/test_re.py @@ -637,6 +637,43 @@ class ReTests(unittest.TestCase):          self.assertEqual(re.match(r"((a)\s(abc|a))", "a a", re.I).group(1), "a a")          self.assertEqual(re.match(r"((a)\s(abc|a)*)", "a aa", re.I).group(1), "a aa") +        assert '\u212a'.lower() == 'k' # 'K' +        self.assertTrue(re.match(r'K', '\u212a', re.I)) +        self.assertTrue(re.match(r'k', '\u212a', re.I)) +        self.assertTrue(re.match(r'\u212a', 'K', re.I)) +        self.assertTrue(re.match(r'\u212a', 'k', re.I)) +        assert '\u017f'.upper() == 'S' # 'ſ' +        self.assertTrue(re.match(r'S', '\u017f', re.I)) +        self.assertTrue(re.match(r's', '\u017f', re.I)) +        self.assertTrue(re.match(r'\u017f', 'S', re.I)) +        self.assertTrue(re.match(r'\u017f', 's', re.I)) +        assert '\ufb05'.upper() == '\ufb06'.upper() == 'ST' # 'ſt', 'st' +        self.assertTrue(re.match(r'\ufb05', '\ufb06', re.I)) +        self.assertTrue(re.match(r'\ufb06', '\ufb05', re.I)) + +    def test_ignore_case_set(self): +        self.assertTrue(re.match(r'[19A]', 'A', re.I)) +        self.assertTrue(re.match(r'[19a]', 'a', re.I)) +        self.assertTrue(re.match(r'[19a]', 'A', re.I)) +        self.assertTrue(re.match(r'[19A]', 'a', re.I)) +        self.assertTrue(re.match(br'[19A]', b'A', re.I)) +        self.assertTrue(re.match(br'[19a]', b'a', re.I)) +        self.assertTrue(re.match(br'[19a]', b'A', re.I)) +        self.assertTrue(re.match(br'[19A]', b'a', re.I)) +        assert '\u212a'.lower() == 'k' # 'K' +        self.assertTrue(re.match(r'[19K]', '\u212a', re.I)) +        self.assertTrue(re.match(r'[19k]', '\u212a', re.I)) +        self.assertTrue(re.match(r'[19\u212a]', 'K', re.I)) +        self.assertTrue(re.match(r'[19\u212a]', 'k', re.I)) +        assert '\u017f'.upper() == 'S' # 'ſ' +        self.assertTrue(re.match(r'[19S]', '\u017f', re.I)) +        self.assertTrue(re.match(r'[19s]', '\u017f', re.I)) +        self.assertTrue(re.match(r'[19\u017f]', 'S', re.I)) +        self.assertTrue(re.match(r'[19\u017f]', 's', re.I)) +        assert '\ufb05'.upper() == '\ufb06'.upper() == 'ST' # 'ſt', 'st' +        self.assertTrue(re.match(r'[19\ufb05]', '\ufb06', re.I)) +        self.assertTrue(re.match(r'[19\ufb06]', '\ufb05', re.I)) +      def test_ignore_case_range(self):          # Issues #3511, #17381.          self.assertTrue(re.match(r'[9-a]', '_', re.I)) @@ -656,6 +693,20 @@ class ReTests(unittest.TestCase):          self.assertTrue(re.match(r'[\U00010400-\U00010427]', '\U00010428', re.I))          self.assertTrue(re.match(r'[\U00010400-\U00010427]', '\U00010400', re.I)) +        assert '\u212a'.lower() == 'k' # 'K' +        self.assertTrue(re.match(r'[J-M]', '\u212a', re.I)) +        self.assertTrue(re.match(r'[j-m]', '\u212a', re.I)) +        self.assertTrue(re.match(r'[\u2129-\u212b]', 'K', re.I)) +        self.assertTrue(re.match(r'[\u2129-\u212b]', 'k', re.I)) +        assert '\u017f'.upper() == 'S' # 'ſ' +        self.assertTrue(re.match(r'[R-T]', '\u017f', re.I)) +        self.assertTrue(re.match(r'[r-t]', '\u017f', re.I)) +        self.assertTrue(re.match(r'[\u017e-\u0180]', 'S', re.I)) +        self.assertTrue(re.match(r'[\u017e-\u0180]', 's', re.I)) +        assert '\ufb05'.upper() == '\ufb06'.upper() == 'ST' # 'ſt', 'st' +        self.assertTrue(re.match(r'[\ufb04-\ufb05]', '\ufb06', re.I)) +        self.assertTrue(re.match(r'[\ufb06-\ufb07]', '\ufb05', re.I)) +      def test_category(self):          self.assertEqual(re.match(r"(\s)", " ").group(1), " ")  | 
