mirror of
https://github.com/python/cpython.git
synced 2025-12-04 00:30:19 +00:00
Patch #415777: new grouping strategy.
fixes bug #414940, and redoes the fix for #129417 in a different way. It also fixes a number of other problems with locale-specific formatting: If there is leading or trailing spaces, then no grouping should be applied in the spaces, and the total length of the string should not be changed due to grouping. Also added test case which works only if the en_US locale is available.
This commit is contained in:
parent
613b2222cf
commit
88ad12afac
3 changed files with 68 additions and 10 deletions
37
Lib/test/test_locale.py
Normal file
37
Lib/test/test_locale.py
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
from test_support import verbose
|
||||
import locale
|
||||
|
||||
oldlocale = locale.setlocale(locale.LC_NUMERIC)
|
||||
|
||||
try:
|
||||
locale.setlocale(locale.LC_NUMERIC, "en_US")
|
||||
except locale.Error:
|
||||
raise ImportError, "test locale en_US not supported"
|
||||
|
||||
def testformat(formatstr, value, grouping = 0, output=None):
|
||||
if verbose:
|
||||
if output:
|
||||
print "%s %% %s =? %s ..." %\
|
||||
(repr(formatstr), repr(value), repr(output)),
|
||||
else:
|
||||
print "%s %% %s works? ..." % (repr(formatstr), repr(value)),
|
||||
result = locale.format(formatstr, value, grouping = grouping)
|
||||
if output and result != output:
|
||||
if verbose:
|
||||
print 'no'
|
||||
print "%s %% %s == %s != %s" %\
|
||||
(repr(formatstr), repr(value), repr(result), repr(output))
|
||||
else:
|
||||
if verbose:
|
||||
print "yes"
|
||||
|
||||
try:
|
||||
testformat("%f", 1024, grouping=1, output='1,024.000000')
|
||||
testformat("%f", 102, grouping=1, output='102.000000')
|
||||
testformat("%f", -42, grouping=1, output='-42.000000')
|
||||
testformat("%+f", -42, grouping=1, output='-42.000000')
|
||||
testformat("%20.f", -42, grouping=1, output=' -42')
|
||||
testformat("%+10.f", -4200, grouping=1, output=' -4,200')
|
||||
testformat("%-10.f", 4200, grouping=1, output='4,200 ')
|
||||
finally:
|
||||
locale.setlocale(locale.LC_NUMERIC, oldlocale)
|
||||
Loading…
Add table
Add a link
Reference in a new issue