[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