mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00
Merged revisions 70356 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r70356 | antoine.pitrou | 2009-03-14 01:07:21 +0100 (sam., 14 mars 2009) | 3 lines Issue #1222: locale.format() bug when the thousands separator is a space character. ........
This commit is contained in:
parent
a28fcfdbda
commit
350370c25f
3 changed files with 131 additions and 33 deletions
|
@ -103,6 +103,32 @@ class EnUSCookedTest(BaseCookedTest):
|
|||
}
|
||||
|
||||
|
||||
class FrFRCookedTest(BaseCookedTest):
|
||||
# A cooked "fr_FR" locale with a space character as decimal separator
|
||||
# and a non-ASCII currency symbol.
|
||||
|
||||
cooked_values = {
|
||||
'currency_symbol': '\u20ac',
|
||||
'decimal_point': ',',
|
||||
'frac_digits': 2,
|
||||
'grouping': [3, 3, 0],
|
||||
'int_curr_symbol': 'EUR ',
|
||||
'int_frac_digits': 2,
|
||||
'mon_decimal_point': ',',
|
||||
'mon_grouping': [3, 3, 0],
|
||||
'mon_thousands_sep': ' ',
|
||||
'n_cs_precedes': 0,
|
||||
'n_sep_by_space': 1,
|
||||
'n_sign_posn': 1,
|
||||
'negative_sign': '-',
|
||||
'p_cs_precedes': 0,
|
||||
'p_sep_by_space': 1,
|
||||
'p_sign_posn': 1,
|
||||
'positive_sign': '',
|
||||
'thousands_sep': ' '
|
||||
}
|
||||
|
||||
|
||||
class BaseFormattingTest(object):
|
||||
#
|
||||
# Utility functions for formatting tests
|
||||
|
@ -150,6 +176,12 @@ class EnUSNumberFormatting(BaseFormattingTest):
|
|||
self._test_format("%+d", 4200, grouping=True, out='+4%s200' % self.sep)
|
||||
self._test_format("%+d", -4200, grouping=True, out='-4%s200' % self.sep)
|
||||
|
||||
def test_integer_grouping_and_padding(self):
|
||||
self._test_format("%10d", 4200, grouping=True,
|
||||
out=('4%s200' % self.sep).rjust(10))
|
||||
self._test_format("%-10d", -4200, grouping=True,
|
||||
out=('-4%s200' % self.sep).ljust(10))
|
||||
|
||||
def test_simple(self):
|
||||
self._test_format("%f", 1024, grouping=0, out='1024.000000')
|
||||
self._test_format("%f", 102, grouping=0, out='102.000000')
|
||||
|
@ -221,6 +253,49 @@ class TestCNumberFormatting(CCookedTest, BaseFormattingTest):
|
|||
self._test_format("%9.2f", 12345.67, grouping=True, out=' 12345.67')
|
||||
|
||||
|
||||
class TestFrFRNumberFormatting(FrFRCookedTest, BaseFormattingTest):
|
||||
# Test number formatting with a cooked "fr_FR" locale.
|
||||
|
||||
def test_decimal_point(self):
|
||||
self._test_format("%.2f", 12345.67, out='12345,67')
|
||||
|
||||
def test_grouping(self):
|
||||
self._test_format("%.2f", 345.67, grouping=True, out='345,67')
|
||||
self._test_format("%.2f", 12345.67, grouping=True, out='12 345,67')
|
||||
|
||||
def test_grouping_and_padding(self):
|
||||
self._test_format("%6.2f", 345.67, grouping=True, out='345,67')
|
||||
self._test_format("%7.2f", 345.67, grouping=True, out=' 345,67')
|
||||
self._test_format("%8.2f", 12345.67, grouping=True, out='12 345,67')
|
||||
self._test_format("%9.2f", 12345.67, grouping=True, out='12 345,67')
|
||||
self._test_format("%10.2f", 12345.67, grouping=True, out=' 12 345,67')
|
||||
self._test_format("%-6.2f", 345.67, grouping=True, out='345,67')
|
||||
self._test_format("%-7.2f", 345.67, grouping=True, out='345,67 ')
|
||||
self._test_format("%-8.2f", 12345.67, grouping=True, out='12 345,67')
|
||||
self._test_format("%-9.2f", 12345.67, grouping=True, out='12 345,67')
|
||||
self._test_format("%-10.2f", 12345.67, grouping=True, out='12 345,67 ')
|
||||
|
||||
def test_integer_grouping(self):
|
||||
self._test_format("%d", 200, grouping=True, out='200')
|
||||
self._test_format("%d", 4200, grouping=True, out='4 200')
|
||||
|
||||
def test_integer_grouping_and_padding(self):
|
||||
self._test_format("%4d", 4200, grouping=True, out='4 200')
|
||||
self._test_format("%5d", 4200, grouping=True, out='4 200')
|
||||
self._test_format("%10d", 4200, grouping=True, out='4 200'.rjust(10))
|
||||
self._test_format("%-4d", 4200, grouping=True, out='4 200')
|
||||
self._test_format("%-5d", 4200, grouping=True, out='4 200')
|
||||
self._test_format("%-10d", 4200, grouping=True, out='4 200'.ljust(10))
|
||||
|
||||
def test_currency(self):
|
||||
euro = '\u20ac'
|
||||
self._test_currency(50000, "50000,00 " + euro)
|
||||
self._test_currency(50000, "50 000,00 " + euro, grouping=True)
|
||||
# XXX is the trailing space a bug?
|
||||
self._test_currency(50000, "50 000,00 EUR ",
|
||||
grouping=True, international=True)
|
||||
|
||||
|
||||
class TestMiscellaneous(unittest.TestCase):
|
||||
def test_getpreferredencoding(self):
|
||||
# Invoke getpreferredencoding to make sure it does not cause exceptions.
|
||||
|
@ -240,7 +315,8 @@ def test_main():
|
|||
tests = [
|
||||
TestMiscellaneous,
|
||||
TestEnUSNumberFormatting,
|
||||
TestCNumberFormatting
|
||||
TestCNumberFormatting,
|
||||
TestFrFRNumberFormatting,
|
||||
]
|
||||
# TestSkipped can't be raised inside unittests, handle it manually instead
|
||||
try:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue