|  | 
| 2 | 2 | import base64 | 
| 3 | 3 | import gettext | 
| 4 | 4 | import unittest | 
|  | 5 | +import unittest.mock | 
| 5 | 6 | from functools import partial | 
| 6 | 7 | 
 | 
| 7 | 8 | from test import support | 
| @@ -741,6 +742,32 @@ def test_cache(self): | 
| 741 | 742 |         self.assertEqual(t.__class__, DummyGNUTranslations) | 
| 742 | 743 | 
 | 
| 743 | 744 | 
 | 
|  | 745 | +class ExpandLangTestCase(unittest.TestCase): | 
|  | 746 | +    def test_expand_lang(self): | 
|  | 747 | +        # Test all combinations of territory, charset and | 
|  | 748 | +        # modifier (locale extension) | 
|  | 749 | +        locales = { | 
|  | 750 | +            'cs': ['cs'], | 
|  | 751 | +            'cs_CZ': ['cs_CZ', 'cs'], | 
|  | 752 | +            'cs.ISO8859-2': ['cs.ISO8859-2', 'cs'], | 
|  | 753 | +            'cs@euro': ['cs@euro', 'cs'], | 
|  | 754 | +            'cs_CZ.ISO8859-2': ['cs_CZ.ISO8859-2', 'cs_CZ', 'cs.ISO8859-2', | 
|  | 755 | +                                'cs'], | 
|  | 756 | +            'cs_CZ@euro': ['cs_CZ@euro', 'cs@euro', 'cs_CZ', 'cs'], | 
|  | 757 | +            'cs.ISO8859-2@euro': ['cs.ISO8859-2@euro', 'cs@euro', | 
|  | 758 | +                                  'cs.ISO8859-2', 'cs'], | 
|  | 759 | +            'cs_CZ.ISO8859-2@euro': ['cs_CZ.ISO8859-2@euro', 'cs_CZ@euro', | 
|  | 760 | +                                     'cs.ISO8859-2@euro', 'cs@euro', | 
|  | 761 | +                                     'cs_CZ.ISO8859-2', 'cs_CZ', | 
|  | 762 | +                                     'cs.ISO8859-2', 'cs'], | 
|  | 763 | +        } | 
|  | 764 | +        for locale, expanded in locales.items(): | 
|  | 765 | +            with self.subTest(locale=locale): | 
|  | 766 | +                with unittest.mock.patch("locale.normalize", | 
|  | 767 | +                                         return_value=locale): | 
|  | 768 | +                    self.assertEqual(gettext._expand_lang(locale), expanded) | 
|  | 769 | + | 
|  | 770 | + | 
| 744 | 771 | class MiscTestCase(unittest.TestCase): | 
| 745 | 772 |     def test__all__(self): | 
| 746 | 773 |         support.check__all__(self, gettext, | 
|  | 
0 commit comments