Damien George
8 months ago
1 changed files with 43 additions and 0 deletions
@ -0,0 +1,43 @@ |
|||
# Test struct pack/unpack with 'e' typecode. |
|||
|
|||
try: |
|||
import struct |
|||
except ImportError: |
|||
print("SKIP") |
|||
raise SystemExit |
|||
|
|||
test_values = ( |
|||
1e-7, |
|||
2e-7, |
|||
1e-6, |
|||
1e-5, |
|||
1e-4, |
|||
1e-3, |
|||
1e-2, |
|||
0.1, |
|||
0, |
|||
1, |
|||
2, |
|||
4, |
|||
8, |
|||
10, |
|||
100, |
|||
1e3, |
|||
1e4, |
|||
6e4, |
|||
float("inf"), |
|||
) |
|||
|
|||
for j in test_values: |
|||
for i in (j, -j): |
|||
x = struct.pack("<e", i) |
|||
v = struct.unpack("<e", x)[0] |
|||
print("%.7f %s %.15f %s" % (i, x, v, i == v)) |
|||
|
|||
# In CPython, packing a float that doesn't fit into a half-float raises OverflowError. |
|||
# But in MicroPython it does not, but rather stores the value as inf. |
|||
# This test is here for coverage. |
|||
try: |
|||
struct.pack("e", 1e15) |
|||
except OverflowError: |
|||
pass |
Loading…
Reference in new issue