diff options
Diffstat (limited to 'tests/basics/struct1_intbig.py')
-rw-r--r-- | tests/basics/struct1_intbig.py | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/tests/basics/struct1_intbig.py b/tests/basics/struct1_intbig.py new file mode 100644 index 0000000000..7f4c3ce120 --- /dev/null +++ b/tests/basics/struct1_intbig.py @@ -0,0 +1,37 @@ +try: + import ustruct as struct +except: + try: + import struct + except ImportError: + import sys + print("SKIP") + sys.exit() + +# check maximum pack on 32-bit machine +print(struct.pack("<I", 2**32 - 1)) +print(struct.pack("<I", 0xffffffff)) + +# long long ints +print(struct.pack("<Q", 2**64 - 1)) +print(struct.pack(">Q", 2**64 - 1)) +print(struct.pack("<Q", 0xffffffffffffffff)) +print(struct.pack(">Q", 0xffffffffffffffff)) +print(struct.pack("<q", -1)) +print(struct.pack(">q", -1)) +print(struct.pack("<Q", 1234567890123456789)) +print(struct.pack("<q", -1234567890123456789)) +print(struct.pack(">Q", 1234567890123456789)) +print(struct.pack(">q", -1234567890123456789)) +print(struct.unpack("<Q", b"\x12\x34\x56\x78\x90\x12\x34\x56")) +print(struct.unpack(">Q", b"\x12\x34\x56\x78\x90\x12\x34\x56")) +print(struct.unpack("<q", b"\x12\x34\x56\x78\x90\x12\x34\xf6")) +print(struct.unpack(">q", b"\xf2\x34\x56\x78\x90\x12\x34\x56")) + +# check maximum unpack +print(struct.unpack("<I", b"\xff\xff\xff\xff")) +print(struct.unpack("<Q", b"\xff\xff\xff\xff\xff\xff\xff\xff")) + +# check small int overflow +print(struct.unpack("<i", b'\xff\xff\xff\x7f')) +print(struct.unpack("<q", b'\xff\xff\xff\xff\xff\xff\xff\x7f')) |