[pypy-svn] r75207 - in pypy/branch/fast-forward/pypy/objspace/std: . test
benjamin at codespeak.net
benjamin at codespeak.net
Tue Jun 8 18:15:41 CEST 2010
Author: benjamin
Date: Tue Jun 8 18:15:40 2010
New Revision: 75207
Modified:
pypy/branch/fast-forward/pypy/objspace/std/newformat.py
pypy/branch/fast-forward/pypy/objspace/std/test/test_newformat.py
Log:
fix padding with grouped digits
Modified: pypy/branch/fast-forward/pypy/objspace/std/newformat.py
==============================================================================
--- pypy/branch/fast-forward/pypy/objspace/std/newformat.py (original)
+++ pypy/branch/fast-forward/pypy/objspace/std/newformat.py Tue Jun 8 18:15:40 2010
@@ -493,7 +493,8 @@
buf.extend(thousands_sep)
for i in range(d_state - 1, d_state - n_chars - 1, -1):
buf.append(digits[i])
- buf.extend(digits[d_state:d_state - n_chars])
+ for i in range(n_zeros):
+ buf.append("0")
def _group_digits(self, spec, digits):
buf = []
@@ -515,14 +516,14 @@
previous = group
else:
group = previous
- final_grouping = min(group, max(group, min_width, 1))
+ final_grouping = min(group, max(left, min_width, 1))
n_zeros = max(0, final_grouping - left)
n_chars = max(0, min(left, final_grouping))
ts = self._loc_thousands if need_separator else None
self._fill_digits(buf, digits, left, n_chars, n_zeros, ts)
need_separator = True
left -= n_chars
- min_width -= 1
+ min_width -= final_grouping
if left <= 0 and min_width <= 0:
done = True
break
Modified: pypy/branch/fast-forward/pypy/objspace/std/test/test_newformat.py
==============================================================================
--- pypy/branch/fast-forward/pypy/objspace/std/test/test_newformat.py (original)
+++ pypy/branch/fast-forward/pypy/objspace/std/test/test_newformat.py Tue Jun 8 18:15:40 2010
@@ -180,6 +180,7 @@
assert format(self.i(6), "=3") == " 6"
assert format(self.i(6), "=+3") == "+ 6"
assert format(self.i(6), "a^3") == "a6a"
+ assert format(self.i(6), "03") == "006"
def test_width_overflow(self):
big = "92387405982730948052983740958230948524"
@@ -200,6 +201,8 @@
assert format(self.i(123456789), ",") == "123,456,789"
assert format(self.i(12345), "7,") == " 12,345"
assert format(self.i(12345), "<7,") == "12,345 "
+ assert format(self.i(1234), "0=10,") == "00,001,234"
+ assert format(self.i(1234), "010,") == "00,001,234"
class AppTestIntFormatting(BaseIntegralFormattingTest):
More information about the Pypy-commit
mailing list