From 66d0c1052a4623ef91afe4c7b883b7f37a68fa2b Mon Sep 17 00:00:00 2001 From: Dave Hylands Date: Sun, 3 Jan 2016 10:38:36 -0800 Subject: extmod: Fix uctypes size calculation for bitfields --- tests/extmod/uctypes_sizeof.py | 9 ++++++++- tests/extmod/uctypes_sizeof.py.exp | 1 + 2 files changed, 9 insertions(+), 1 deletion(-) (limited to 'tests/extmod') diff --git a/tests/extmod/uctypes_sizeof.py b/tests/extmod/uctypes_sizeof.py index 93de2abb0..fcfd8ecd7 100644 --- a/tests/extmod/uctypes_sizeof.py +++ b/tests/extmod/uctypes_sizeof.py @@ -6,7 +6,11 @@ desc = { # arr2 is array at offset 0, size 2, of structures defined recursively "arr2": (uctypes.ARRAY | 0, 2, {"b": uctypes.UINT8 | 0}), "arr3": (uctypes.ARRAY | 2, uctypes.UINT16 | 2), - "arr4": (uctypes.ARRAY | 0, 2, {"b": uctypes.UINT8 | 0, "w": uctypes.UINT16 | 1}) + "arr4": (uctypes.ARRAY | 0, 2, {"b": uctypes.UINT8 | 0, "w": uctypes.UINT16 | 1}), + "sub": (0, { + 'b1': uctypes.BFUINT8 | 0 | 4 << uctypes.BF_POS | 4 << uctypes.BF_LEN, + 'b2': uctypes.BFUINT8 | 0 | 0 << uctypes.BF_POS | 4 << uctypes.BF_LEN, + }), } data = bytearray(b"01234567") @@ -29,3 +33,6 @@ except TypeError: print(uctypes.sizeof(S.arr4)) assert uctypes.sizeof(S.arr4) == 6 +print(uctypes.sizeof(S.sub)) +assert uctypes.sizeof(S.sub) == 1 + diff --git a/tests/extmod/uctypes_sizeof.py.exp b/tests/extmod/uctypes_sizeof.py.exp index b0e3a0ac6..fb74def60 100644 --- a/tests/extmod/uctypes_sizeof.py.exp +++ b/tests/extmod/uctypes_sizeof.py.exp @@ -3,3 +3,4 @@ 4 TypeError 6 +1 -- cgit v1.2.3