mirror of https://github.com/python/cpython
Merged revisions 76632 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r76632 | eric.smith | 2009-12-02 12:43:06 -0500 (Wed, 02 Dec 2009) | 1 line Issue #4482: Add tests for special float value formatting. ........
This commit is contained in:
parent
bb21e50cdd
commit
8a10ecc051
|
@ -495,6 +495,41 @@ class RoundTestCase(unittest.TestCase):
|
|||
self.assertEqual(float(format(x, '.3f')), round(x, 3))
|
||||
|
||||
|
||||
@unittest.skipUnless(float.__getformat__("double").startswith("IEEE"),
|
||||
"test requires IEEE 754 doubles")
|
||||
def test_format_specials(self):
|
||||
# Test formatting of nans and infs.
|
||||
|
||||
def test(fmt, value, expected):
|
||||
# Test with both % and format().
|
||||
self.assertEqual(fmt % value, expected, fmt)
|
||||
if not '#' in fmt:
|
||||
# Until issue 7094 is implemented, format() for floats doesn't
|
||||
# support '#' formatting
|
||||
fmt = fmt[1:] # strip off the %
|
||||
self.assertEqual(format(value, fmt), expected, fmt)
|
||||
|
||||
for fmt in ['%e', '%f', '%g', '%.0e', '%.6f', '%.20g',
|
||||
'%#e', '%#f', '%#g', '%#.20e', '%#.15f', '%#.3g']:
|
||||
pfmt = '%+' + fmt[1:]
|
||||
sfmt = '% ' + fmt[1:]
|
||||
test(fmt, INF, 'inf')
|
||||
test(fmt, -INF, '-inf')
|
||||
test(fmt, NAN, 'nan')
|
||||
test(fmt, -NAN, 'nan')
|
||||
# When asking for a sign, it's always provided. nans are
|
||||
# always positive.
|
||||
test(pfmt, INF, '+inf')
|
||||
test(pfmt, -INF, '-inf')
|
||||
test(pfmt, NAN, '+nan')
|
||||
test(pfmt, -NAN, '+nan')
|
||||
# When using ' ' for a sign code, only infs can be negative.
|
||||
# Others have a space.
|
||||
test(sfmt, INF, ' inf')
|
||||
test(sfmt, -INF, '-inf')
|
||||
test(sfmt, NAN, ' nan')
|
||||
test(sfmt, -NAN, ' nan')
|
||||
|
||||
|
||||
# Beginning with Python 2.6 float has cross platform compatible
|
||||
# ways to create and represent inf and nan
|
||||
|
|
Loading…
Reference in New Issue