summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_float.py
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2023-11-07 12:06:21 (GMT)
committerGitHub <noreply@github.com>2023-11-07 12:06:21 (GMT)
commitf70ae99cb47b9727d0d66fd636986cbfc0530b41 (patch)
treec39011816d8364244c8ace68708960aeb2d96ce8 /Lib/test/test_float.py
parent35141842d350bfa2c8dc04e7cc886bdff03cf3b7 (diff)
downloadcpython-f70ae99cb47b9727d0d66fd636986cbfc0530b41.zip
cpython-f70ae99cb47b9727d0d66fd636986cbfc0530b41.tar.gz
cpython-f70ae99cb47b9727d0d66fd636986cbfc0530b41.tar.bz2
[3.12] gh-111765: Move old PyFloat_* tests to Lib/test/test_capi/test_float.py (GH-111766) (GH-111818)
(cherry picked from commit a077b2fbb88f5192bb47e514334f760bf08d0295) Co-authored-by: Sergey B Kirpichev <skirpichev@gmail.com>
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 84270ce..32aaf3a 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")
@@ -1504,69 +1503,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()