diff options
author | Damien George <damien@micropython.org> | 2020-11-05 22:35:02 +1100 |
---|---|---|
committer | Damien George <damien@micropython.org> | 2020-11-11 22:18:24 +1100 |
commit | 1fef5662ab96a27c2b279082607103bbe5da9de5 (patch) | |
tree | c8724e5b2a6ef3e22aa361e329041393fcfddbd4 /tests/basics/struct1_intbig.py | |
parent | 7789cd5f16b068f032e58be8e5e60bf17cb03d40 (diff) |
py/mpz: Do sign extension in mpz_as_bytes for negative values.
Signed-off-by: Damien George <damien@micropython.org>
Diffstat (limited to 'tests/basics/struct1_intbig.py')
-rw-r--r-- | tests/basics/struct1_intbig.py | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/tests/basics/struct1_intbig.py b/tests/basics/struct1_intbig.py index 380293f36..24541c8a4 100644 --- a/tests/basics/struct1_intbig.py +++ b/tests/basics/struct1_intbig.py @@ -36,3 +36,11 @@ 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')) + +# test with negative big integers that are actually small in magnitude +bigzero = (1 << 70) - (1 << 70) +for endian in "<>": + for type_ in "bhiq": + fmt = endian + type_ + b = struct.pack(fmt, -2 + bigzero) + print(fmt, b, struct.unpack(fmt, b)) |