lhs, rhs = map(str.strip, line.split('->'))
fmt, arg = lhs.split()
- self.assertEqual(fmt % float(arg), rhs)
- self.assertEqual(fmt % -float(arg), '-' + rhs)
+ f = float(arg)
+ self.assertEqual(fmt % f, rhs)
+ self.assertEqual(fmt % -f, '-' + rhs)
+ if fmt != '%r':
+ fmt2 = fmt[1:]
+ self.assertEqual(format(f, fmt2), rhs)
+ self.assertEqual(format(-f, fmt2), '-' + rhs)
def test_issue5864(self):
self.assertEqual(format(123.456, '.4'), '123.5')
import operator
import fractions
import functools
+import os
import sys
import typing
import unittest
from pickle import dumps, loads
F = fractions.Fraction
+#locate file with float format test values
+test_dir = os.path.dirname(__file__) or os.curdir
+format_testfile = os.path.join(test_dir, 'formatfloat_testcases.txt')
class DummyFloat(object):
"""Dummy float class for testing comparisons with Fractions"""
with self.assertRaises(ValueError):
format(fraction, spec)
+ @requires_IEEE_754
+ def test_float_format_testfile(self):
+ with open(format_testfile, encoding="utf-8") as testfile:
+ for line in testfile:
+ if line.startswith('--'):
+ continue
+ line = line.strip()
+ if not line:
+ continue
+
+ lhs, rhs = map(str.strip, line.split('->'))
+ fmt, arg = lhs.split()
+ if fmt == '%r':
+ continue
+ fmt2 = fmt[1:]
+ with self.subTest(fmt=fmt, arg=arg):
+ f = F(float(arg))
+ self.assertEqual(format(f, fmt2), rhs)
+ if f: # skip negative zero
+ self.assertEqual(format(-f, fmt2), '-' + rhs)
+ f = F(arg)
+ self.assertEqual(float(format(f, fmt2)), float(rhs))
+ self.assertEqual(float(format(-f, fmt2)), float('-' + rhs))
+
if __name__ == '__main__':
unittest.main()