Skip to content

Commit 0be0bab

Browse files
committed
pythongh-111765: move old PyFloat_* tests to Lib/test/test_capi/test_float.py
Move test_pack/unpack()
1 parent 24b5cbd commit 0be0bab

File tree

2 files changed

+30
-28
lines changed

2 files changed

+30
-28
lines changed

Lib/test/test_capi/test_float.py

+30
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@
1212

1313
NULL = None
1414

15+
# For PyFloat_Pack/Unpack*
16+
BIG_ENDIAN = 0
17+
LITTLE_ENDIAN = 1
18+
1519

1620
class CAPIFloatTest(unittest.TestCase):
1721
def test_check(self):
@@ -112,6 +116,32 @@ def test_getmin(self):
112116

113117
self.assertEqual(getmin(), sys.float_info.min)
114118

119+
def test_pack(self):
120+
# Test PyFloat_Pack2(), PyFloat_Pack4() and PyFloat_Pack8()
121+
pack = _testcapi.float_pack
122+
123+
self.assertEqual(pack(2, 1.5, BIG_ENDIAN), b'>\x00')
124+
self.assertEqual(pack(4, 1.5, BIG_ENDIAN), b'?\xc0\x00\x00')
125+
self.assertEqual(pack(8, 1.5, BIG_ENDIAN),
126+
b'?\xf8\x00\x00\x00\x00\x00\x00')
127+
self.assertEqual(pack(2, 1.5, LITTLE_ENDIAN), b'\x00>')
128+
self.assertEqual(pack(4, 1.5, LITTLE_ENDIAN), b'\x00\x00\xc0?')
129+
self.assertEqual(pack(8, 1.5, LITTLE_ENDIAN),
130+
b'\x00\x00\x00\x00\x00\x00\xf8?')
131+
132+
def test_unpack(self):
133+
# Test PyFloat_Unpack2(), PyFloat_Unpack4() and PyFloat_Unpack8()
134+
unpack = _testcapi.float_unpack
135+
136+
self.assertEqual(unpack(b'>\x00', BIG_ENDIAN), 1.5)
137+
self.assertEqual(unpack(b'?\xc0\x00\x00', BIG_ENDIAN), 1.5)
138+
self.assertEqual(unpack(b'?\xf8\x00\x00\x00\x00\x00\x00', BIG_ENDIAN),
139+
1.5)
140+
self.assertEqual(unpack(b'\x00>', LITTLE_ENDIAN), 1.5)
141+
self.assertEqual(unpack(b'\x00\x00\xc0?', LITTLE_ENDIAN), 1.5)
142+
self.assertEqual(unpack(b'\x00\x00\x00\x00\x00\x00\xf8?', LITTLE_ENDIAN),
143+
1.5)
144+
115145

116146
if __name__ == "__main__":
117147
unittest.main()

Lib/test/test_float.py

-28
Original file line numberDiff line numberDiff line change
@@ -1517,34 +1517,6 @@ def __init__(self, value):
15171517

15181518
@unittest.skipIf(_testcapi is None, 'needs _testcapi')
15191519
class PackTests(unittest.TestCase):
1520-
def test_pack(self):
1521-
self.assertEqual(_testcapi.float_pack(2, 1.5, BIG_ENDIAN),
1522-
b'>\x00')
1523-
self.assertEqual(_testcapi.float_pack(4, 1.5, BIG_ENDIAN),
1524-
b'?\xc0\x00\x00')
1525-
self.assertEqual(_testcapi.float_pack(8, 1.5, BIG_ENDIAN),
1526-
b'?\xf8\x00\x00\x00\x00\x00\x00')
1527-
self.assertEqual(_testcapi.float_pack(2, 1.5, LITTLE_ENDIAN),
1528-
b'\x00>')
1529-
self.assertEqual(_testcapi.float_pack(4, 1.5, LITTLE_ENDIAN),
1530-
b'\x00\x00\xc0?')
1531-
self.assertEqual(_testcapi.float_pack(8, 1.5, LITTLE_ENDIAN),
1532-
b'\x00\x00\x00\x00\x00\x00\xf8?')
1533-
1534-
def test_unpack(self):
1535-
self.assertEqual(_testcapi.float_unpack(b'>\x00', BIG_ENDIAN),
1536-
1.5)
1537-
self.assertEqual(_testcapi.float_unpack(b'?\xc0\x00\x00', BIG_ENDIAN),
1538-
1.5)
1539-
self.assertEqual(_testcapi.float_unpack(b'?\xf8\x00\x00\x00\x00\x00\x00', BIG_ENDIAN),
1540-
1.5)
1541-
self.assertEqual(_testcapi.float_unpack(b'\x00>', LITTLE_ENDIAN),
1542-
1.5)
1543-
self.assertEqual(_testcapi.float_unpack(b'\x00\x00\xc0?', LITTLE_ENDIAN),
1544-
1.5)
1545-
self.assertEqual(_testcapi.float_unpack(b'\x00\x00\x00\x00\x00\x00\xf8?', LITTLE_ENDIAN),
1546-
1.5)
1547-
15481520
def test_roundtrip(self):
15491521
large = 2.0 ** 100
15501522
values = [1.0, 1.5, large, 1.0/7, math.pi]

0 commit comments

Comments
 (0)