summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_float.py
diff options
context:
space:
mode:
authorSergey B Kirpichev <skirpichev@gmail.com>2023-11-07 11:40:58 (GMT)
committerGitHub <noreply@github.com>2023-11-07 11:40:58 (GMT)
commita077b2fbb88f5192bb47e514334f760bf08d0295 (patch)
tree24b0e3ee605ea6d5006d3118f6848d905ee44ff3 /Lib/test/test_float.py
parent931f4438c92ec0eb2aa894092a91749f1d5bd216 (diff)
downloadcpython-a077b2fbb88f5192bb47e514334f760bf08d0295.zip
cpython-a077b2fbb88f5192bb47e514334f760bf08d0295.tar.gz
cpython-a077b2fbb88f5192bb47e514334f760bf08d0295.tar.bz2
gh-111765: Move old PyFloat_* tests to Lib/test/test_capi/test_float.py (GH-111766)
Diffstat (limited to 'Lib/test/test_float.py')
-rw-r--r--Lib/test/test_float.py65
1 files changed, 0 insertions, 65 deletions
diff --git a/Lib/test/test_float.py b/Lib/test/test_float.py
index b6daae7..5bd6406 100644
--- a/Lib/test/test_float.py
+++ b/Lib/test/test_float.py
@@ -18,7 +18,6 @@ try:
except ImportError:
_testcapi = None
-HAVE_IEEE_754 = float.__getformat__("double").startswith("IEEE")
INF = float("inf")
NAN = float("nan")
@@ -1505,69 +1504,5 @@ class HexFloatTestCase(unittest.TestCase):
self.assertEqual(getattr(f, 'foo', 'none'), 'bar')
-# Test PyFloat_Pack2(), PyFloat_Pack4() and PyFloat_Pack8()
-# Test PyFloat_Unpack2(), PyFloat_Unpack4() and PyFloat_Unpack8()
-BIG_ENDIAN = 0
-LITTLE_ENDIAN = 1
-EPSILON = {
- 2: 2.0 ** -11, # binary16
- 4: 2.0 ** -24, # binary32
- 8: 2.0 ** -53, # binary64
-}
-
-@unittest.skipIf(_testcapi is None, 'needs _testcapi')
-class PackTests(unittest.TestCase):
- def test_pack(self):
- self.assertEqual(_testcapi.float_pack(2, 1.5, BIG_ENDIAN),
- b'>\x00')
- self.assertEqual(_testcapi.float_pack(4, 1.5, BIG_ENDIAN),
- b'?\xc0\x00\x00')
- self.assertEqual(_testcapi.float_pack(8, 1.5, BIG_ENDIAN),
- b'?\xf8\x00\x00\x00\x00\x00\x00')
- self.assertEqual(_testcapi.float_pack(2, 1.5, LITTLE_ENDIAN),
- b'\x00>')
- self.assertEqual(_testcapi.float_pack(4, 1.5, LITTLE_ENDIAN),
- b'\x00\x00\xc0?')
- self.assertEqual(_testcapi.float_pack(8, 1.5, LITTLE_ENDIAN),
- b'\x00\x00\x00\x00\x00\x00\xf8?')
-
- def test_unpack(self):
- self.assertEqual(_testcapi.float_unpack(b'>\x00', BIG_ENDIAN),
- 1.5)
- self.assertEqual(_testcapi.float_unpack(b'?\xc0\x00\x00', BIG_ENDIAN),
- 1.5)
- self.assertEqual(_testcapi.float_unpack(b'?\xf8\x00\x00\x00\x00\x00\x00', BIG_ENDIAN),
- 1.5)
- self.assertEqual(_testcapi.float_unpack(b'\x00>', LITTLE_ENDIAN),
- 1.5)
- self.assertEqual(_testcapi.float_unpack(b'\x00\x00\xc0?', LITTLE_ENDIAN),
- 1.5)
- self.assertEqual(_testcapi.float_unpack(b'\x00\x00\x00\x00\x00\x00\xf8?', LITTLE_ENDIAN),
- 1.5)
-
- def test_roundtrip(self):
- large = 2.0 ** 100
- values = [1.0, 1.5, large, 1.0/7, math.pi]
- if HAVE_IEEE_754:
- values.extend((INF, NAN))
- for value in values:
- for size in (2, 4, 8,):
- if size == 2 and value == large:
- # too large for 16-bit float
- continue
- rel_tol = EPSILON[size]
- for endian in (BIG_ENDIAN, LITTLE_ENDIAN):
- with self.subTest(value=value, size=size, endian=endian):
- data = _testcapi.float_pack(size, value, endian)
- value2 = _testcapi.float_unpack(data, endian)
- if isnan(value):
- self.assertTrue(isnan(value2), (value, value2))
- elif size < 8:
- self.assertTrue(math.isclose(value2, value, rel_tol=rel_tol),
- (value, value2))
- else:
- self.assertEqual(value2, value)
-
-
if __name__ == '__main__':
unittest.main()