|
1 | 1 | from decimal import Decimal
|
| 2 | +from test import support |
2 | 3 | from test.support import cpython_only, verbose, is_android, linked_to_musl, os_helper
|
3 | 4 | from test.support.warnings_helper import check_warnings
|
4 | 5 | from test.support.import_helper import ensure_lazy_imports, import_fresh_module
|
@@ -425,8 +426,8 @@ def test_hyphenated_encoding(self):
|
425 | 426 | self.check('cs_CZ.ISO8859-2', 'cs_CZ.ISO8859-2')
|
426 | 427 |
|
427 | 428 | def test_euro_modifier(self):
|
428 |
| - self.check('de_DE@euro', 'de_DE.ISO8859-15') |
429 |
| - self.check('en_US.ISO8859-15@euro', 'en_US.ISO8859-15') |
| 429 | + self.check('de_DE@euro', 'de_DE.ISO8859-15@euro') |
| 430 | + self.check('en_US.ISO8859-15@euro', 'en_US.ISO8859-15@euro') |
430 | 431 | self.check('de_DE.utf8@euro', 'de_DE.UTF-8')
|
431 | 432 |
|
432 | 433 | def test_latin_modifier(self):
|
@@ -534,6 +535,105 @@ def test_setlocale_long_encoding(self):
|
534 | 535 | with self.assertRaises(locale.Error):
|
535 | 536 | locale.setlocale(locale.LC_ALL, loc2)
|
536 | 537 |
|
| 538 | + @support.subTests('localename,localetuple', [ |
| 539 | + ('fr_FR.ISO8859-15@euro', ('fr_FR@euro', 'iso885915')), |
| 540 | + ('fr_FR.ISO8859-15@euro', ('fr_FR@euro', 'iso88591')), |
| 541 | + ('fr_FR.ISO8859-15@euro', ('fr_FR@euro', 'ISO8859-15')), |
| 542 | + ('fr_FR.ISO8859-15@euro', ('fr_FR@euro', 'ISO8859-1')), |
| 543 | + ('fr_FR.ISO8859-15@euro', ('fr_FR@euro', None)), |
| 544 | + ('de_DE.ISO8859-15@euro', ('de_DE@euro', 'iso885915')), |
| 545 | + ('de_DE.ISO8859-15@euro', ('de_DE@euro', 'iso88591')), |
| 546 | + ('de_DE.ISO8859-15@euro', ('de_DE@euro', 'ISO8859-15')), |
| 547 | + ('de_DE.ISO8859-15@euro', ('de_DE@euro', 'ISO8859-1')), |
| 548 | + ('de_DE.ISO8859-15@euro', ('de_DE@euro', None)), |
| 549 | + ('el_GR.ISO8859-7@euro', ('el_GR@euro', 'iso88597')), |
| 550 | + ('el_GR.ISO8859-7@euro', ('el_GR@euro', 'ISO8859-7')), |
| 551 | + ('el_GR.ISO8859-7@euro', ('el_GR@euro', None)), |
| 552 | + ('ca_ES.ISO8859-15@euro', ('ca_ES@euro', 'iso885915')), |
| 553 | + ('ca_ES.ISO8859-15@euro', ('ca_ES@euro', 'iso88591')), |
| 554 | + ('ca_ES.ISO8859-15@euro', ('ca_ES@euro', 'ISO8859-15')), |
| 555 | + ('ca_ES.ISO8859-15@euro', ('ca_ES@euro', 'ISO8859-1')), |
| 556 | + ('ca_ES.ISO8859-15@euro', ('ca_ES@euro', None)), |
| 557 | + ('ca_ES.UTF-8@valencia', ('ca_ES@valencia', 'utf8')), |
| 558 | + ('ca_ES.UTF-8@valencia', ('ca_ES@valencia', 'UTF-8')), |
| 559 | + ('ca_ES.UTF-8@valencia', ('ca_ES@valencia', None)), |
| 560 | + ('ks_IN.UTF-8@devanagari', ('ks_IN@devanagari', 'utf8')), |
| 561 | + ('ks_IN.UTF-8@devanagari', ('ks_IN@devanagari', 'UTF-8')), |
| 562 | + ('ks_IN.UTF-8@devanagari', ('ks_IN@devanagari', None)), |
| 563 | + ('sd_IN.UTF-8@devanagari', ('sd_IN@devanagari', 'utf8')), |
| 564 | + ('sd_IN.UTF-8@devanagari', ('sd_IN@devanagari', 'UTF-8')), |
| 565 | + ('sd_IN.UTF-8@devanagari', ('sd_IN@devanagari', None)), |
| 566 | + ('be_BY.UTF-8@latin', ('be_BY@latin', 'utf8')), |
| 567 | + ('be_BY.UTF-8@latin', ('be_BY@latin', 'UTF-8')), |
| 568 | + ('be_BY.UTF-8@latin', ('be_BY@latin', None)), |
| 569 | + ('sr_RS.UTF-8@latin', ('sr_RS@latin', 'utf8')), |
| 570 | + ('sr_RS.UTF-8@latin', ('sr_RS@latin', 'UTF-8')), |
| 571 | + ('sr_RS.UTF-8@latin', ('sr_RS@latin', None)), |
| 572 | + ('ug_CN.UTF-8@latin', ('ug_CN@latin', 'utf8')), |
| 573 | + ('ug_CN.UTF-8@latin', ('ug_CN@latin', 'UTF-8')), |
| 574 | + ('ug_CN.UTF-8@latin', ('ug_CN@latin', None)), |
| 575 | + ('uz_UZ.UTF-8@cyrillic', ('uz_UZ@cyrillic', 'utf8')), |
| 576 | + ('uz_UZ.UTF-8@cyrillic', ('uz_UZ@cyrillic', 'UTF-8')), |
| 577 | + ('uz_UZ.UTF-8@cyrillic', ('uz_UZ@cyrillic', None)), |
| 578 | + ]) |
| 579 | + def test_setlocale_with_modifier(self, localename, localetuple): |
| 580 | + try: |
| 581 | + locale.setlocale(locale.LC_CTYPE, localename) |
| 582 | + except locale.Error as exc: |
| 583 | + self.skipTest(str(exc)) |
| 584 | + loc = locale.setlocale(locale.LC_CTYPE, localetuple) |
| 585 | + self.assertEqual(loc, localename) |
| 586 | + |
| 587 | + loctuple = locale.getlocale(locale.LC_CTYPE) |
| 588 | + loc = locale.setlocale(locale.LC_CTYPE, loctuple) |
| 589 | + self.assertEqual(loc, localename) |
| 590 | + |
| 591 | + @support.subTests('localename,localetuple', [ |
| 592 | + ('fr_FR.iso885915@euro', ('fr_FR@euro', 'ISO8859-15')), |
| 593 | + ('fr_FR.ISO8859-15@euro', ('fr_FR@euro', 'ISO8859-15')), |
| 594 | + ('fr_FR@euro', ('fr_FR@euro', 'ISO8859-15')), |
| 595 | + ('de_DE.iso885915@euro', ('de_DE@euro', 'ISO8859-15')), |
| 596 | + ('de_DE.ISO8859-15@euro', ('de_DE@euro', 'ISO8859-15')), |
| 597 | + ('de_DE@euro', ('de_DE@euro', 'ISO8859-15')), |
| 598 | + ('el_GR.iso88597@euro', ('el_GR@euro', 'ISO8859-7')), |
| 599 | + ('el_GR.ISO8859-7@euro', ('el_GR@euro', 'ISO8859-7')), |
| 600 | + ('el_GR@euro', ('el_GR@euro', 'ISO8859-7')), |
| 601 | + ('ca_ES.iso885915@euro', ('ca_ES@euro', 'ISO8859-15')), |
| 602 | + ('ca_ES.ISO8859-15@euro', ('ca_ES@euro', 'ISO8859-15')), |
| 603 | + ('ca_ES@euro', ('ca_ES@euro', 'ISO8859-15')), |
| 604 | + ('ca_ES.utf8@valencia', ('ca_ES@valencia', 'UTF-8')), |
| 605 | + ('ca_ES.UTF-8@valencia', ('ca_ES@valencia', 'UTF-8')), |
| 606 | + ('ca_ES@valencia', ('ca_ES@valencia', 'UTF-8')), |
| 607 | + ('ks_IN.utf8@devanagari', ('ks_IN@devanagari', 'UTF-8')), |
| 608 | + ('ks_IN.UTF-8@devanagari', ('ks_IN@devanagari', 'UTF-8')), |
| 609 | + ('ks_IN@devanagari', ('ks_IN@devanagari', 'UTF-8')), |
| 610 | + ('sd_IN.utf8@devanagari', ('sd_IN@devanagari', 'UTF-8')), |
| 611 | + ('sd_IN.UTF-8@devanagari', ('sd_IN@devanagari', 'UTF-8')), |
| 612 | + ('sd_IN@devanagari', ('sd_IN@devanagari', 'UTF-8')), |
| 613 | + ('be_BY.utf8@latin', ('be_BY@latin', 'UTF-8')), |
| 614 | + ('be_BY.UTF-8@latin', ('be_BY@latin', 'UTF-8')), |
| 615 | + ('be_BY@latin', ('be_BY@latin', 'UTF-8')), |
| 616 | + ('sr_RS.utf8@latin', ('sr_RS@latin', 'UTF-8')), |
| 617 | + ('sr_RS.UTF-8@latin', ('sr_RS@latin', 'UTF-8')), |
| 618 | + ('sr_RS@latin', ('sr_RS@latin', 'UTF-8')), |
| 619 | + ('ug_CN.utf8@latin', ('ug_CN@latin', 'UTF-8')), |
| 620 | + ('ug_CN.UTF-8@latin', ('ug_CN@latin', 'UTF-8')), |
| 621 | + ('ug_CN@latin', ('ug_CN@latin', 'UTF-8')), |
| 622 | + ('uz_UZ.utf8@cyrillic', ('uz_UZ@cyrillic', 'UTF-8')), |
| 623 | + ('uz_UZ.UTF-8@cyrillic', ('uz_UZ@cyrillic', 'UTF-8')), |
| 624 | + ('uz_UZ@cyrillic', ('uz_UZ@cyrillic', 'UTF-8')), |
| 625 | + ]) |
| 626 | + def test_getlocale_with_modifier(self, localename, localetuple): |
| 627 | + try: |
| 628 | + locale.setlocale(locale.LC_CTYPE, localename) |
| 629 | + except locale.Error as exc: |
| 630 | + self.skipTest(str(exc)) |
| 631 | + loctuple = locale.getlocale(locale.LC_CTYPE) |
| 632 | + self.assertEqual(loctuple, localetuple) |
| 633 | + |
| 634 | + locale.setlocale(locale.LC_CTYPE, loctuple) |
| 635 | + self.assertEqual(locale.getlocale(locale.LC_CTYPE), localetuple) |
| 636 | + |
537 | 637 |
|
538 | 638 | class TestMiscellaneous(unittest.TestCase):
|
539 | 639 | def test_defaults_UTF8(self):
|
|
0 commit comments