|  | 
| 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 | 
| @@ -691,6 +692,32 @@ def test_cache(self): | 
| 691 | 692 |         self.assertEqual(t.__class__, DummyGNUTranslations) | 
| 692 | 693 | 
 | 
| 693 | 694 | 
 | 
|  | 695 | +class ExpandLangTestCase(unittest.TestCase): | 
|  | 696 | +    def test_expand_lang(self): | 
|  | 697 | +        # Test all combinations of territory, charset and | 
|  | 698 | +        # modifier (locale extension) | 
|  | 699 | +        locales = { | 
|  | 700 | +            'cs': ['cs'], | 
|  | 701 | +            'cs_CZ': ['cs_CZ', 'cs'], | 
|  | 702 | +            'cs.ISO8859-2': ['cs.ISO8859-2', 'cs'], | 
|  | 703 | +            'cs@euro': ['cs@euro', 'cs'], | 
|  | 704 | +            'cs_CZ.ISO8859-2': ['cs_CZ.ISO8859-2', 'cs_CZ', 'cs.ISO8859-2', | 
|  | 705 | +                                'cs'], | 
|  | 706 | +            'cs_CZ@euro': ['cs_CZ@euro', 'cs@euro', 'cs_CZ', 'cs'], | 
|  | 707 | +            'cs.ISO8859-2@euro': ['cs.ISO8859-2@euro', 'cs@euro', | 
|  | 708 | +                                  'cs.ISO8859-2', 'cs'], | 
|  | 709 | +            'cs_CZ.ISO8859-2@euro': ['cs_CZ.ISO8859-2@euro', 'cs_CZ@euro', | 
|  | 710 | +                                     'cs.ISO8859-2@euro', 'cs@euro', | 
|  | 711 | +                                     'cs_CZ.ISO8859-2', 'cs_CZ', | 
|  | 712 | +                                     'cs.ISO8859-2', 'cs'], | 
|  | 713 | +        } | 
|  | 714 | +        for locale, expanded in locales.items(): | 
|  | 715 | +            with self.subTest(locale=locale): | 
|  | 716 | +                with unittest.mock.patch("locale.normalize", | 
|  | 717 | +                                         return_value=locale): | 
|  | 718 | +                    self.assertEqual(gettext._expand_lang(locale), expanded) | 
|  | 719 | + | 
|  | 720 | + | 
| 694 | 721 | class MiscTestCase(unittest.TestCase): | 
| 695 | 722 |     def test__all__(self): | 
| 696 | 723 |         support.check__all__(self, gettext, | 
|  | 
0 commit comments