summaryrefslogtreecommitdiffstats
path: root/Lib/test/string_tests.py
diff options
context:
space:
mode:
authorFacundo Batista <facundobatista@gmail.com>2008-02-24 03:17:21 (GMT)
committerFacundo Batista <facundobatista@gmail.com>2008-02-24 03:17:21 (GMT)
commitc11cecf3d0f816893f5765a7b5e25d5f4e3fe531 (patch)
tree681e7a9b0d25d0e246b30dbab2de465e2e212997 /Lib/test/string_tests.py
parentb93e7d16d50a6055309d9ff4e105ade453079c41 (diff)
downloadcpython-c11cecf3d0f816893f5765a7b5e25d5f4e3fe531.zip
cpython-c11cecf3d0f816893f5765a7b5e25d5f4e3fe531.tar.gz
cpython-c11cecf3d0f816893f5765a7b5e25d5f4e3fe531.tar.bz2
Issue 1742669. Now %d accepts very big float numbers.
Thanks Gabriel Genellina.
Diffstat (limited to 'Lib/test/string_tests.py')
-rw-r--r--Lib/test/string_tests.py9
1 files changed, 9 insertions, 0 deletions
diff --git a/Lib/test/string_tests.py b/Lib/test/string_tests.py
index cefdcac..4e2b37e 100644
--- a/Lib/test/string_tests.py
+++ b/Lib/test/string_tests.py
@@ -1033,7 +1033,14 @@ class MixinStrUnicodeUserStringTest:
# unicode raises ValueError, str raises OverflowError
self.checkraises((ValueError, OverflowError), '%c', '__mod__', ordinal)
+ longvalue = sys.maxint + 10L
+ slongvalue = str(longvalue)
+ if slongvalue[-1] in ("L","l"): slongvalue = slongvalue[:-1]
self.checkequal(' 42', '%3ld', '__mod__', 42)
+ self.checkequal('42', '%d', '__mod__', 42L)
+ self.checkequal('42', '%d', '__mod__', 42.0)
+ self.checkequal(slongvalue, '%d', '__mod__', longvalue)
+ self.checkcall('%d', '__mod__', float(longvalue))
self.checkequal('0042.00', '%07.2f', '__mod__', 42)
self.checkequal('0042.00', '%07.2F', '__mod__', 42)
@@ -1043,6 +1050,8 @@ class MixinStrUnicodeUserStringTest:
self.checkraises(TypeError, '%c', '__mod__', (None,))
self.checkraises(ValueError, '%(foo', '__mod__', {})
self.checkraises(TypeError, '%(foo)s %(bar)s', '__mod__', ('foo', 42))
+ self.checkraises(TypeError, '%d', '__mod__', "42") # not numeric
+ self.checkraises(TypeError, '%d', '__mod__', (42+0j)) # no int/long conversion provided
# argument names with properly nested brackets are supported
self.checkequal('bar', '%((foo))s', '__mod__', {'(foo)': 'bar'})