|
15 | 15 | # aligned |
16 | 16 | "arr5": (uctypes.ARRAY | 0, uctypes.UINT32 | 1), |
17 | 17 | "arr7": (uctypes.ARRAY | 0, 1, {"l": uctypes.UINT32 | 0}), |
| 18 | + |
| 19 | + "arr8": (uctypes.ARRAY | 0, uctypes.INT8 | 1), |
| 20 | + "arr9": (uctypes.ARRAY | 0, uctypes.INT16 | 1), |
| 21 | + "arr10": (uctypes.ARRAY | 0, uctypes.INT32 | 1), |
| 22 | + "arr11": (uctypes.ARRAY | 0, uctypes.INT64 | 1), |
| 23 | + "arr12": (uctypes.ARRAY | 0, uctypes.UINT64| 1), |
| 24 | + "arr13": (uctypes.ARRAY | 1, 1, {"l": {}}), |
18 | 25 | } |
19 | 26 |
|
20 | | -data = bytearray(5) |
| 27 | +data = bytearray(8) |
21 | 28 |
|
22 | 29 | S = uctypes.struct(uctypes.addressof(data), desc) |
23 | 30 |
|
|
44 | 51 | print(S.arr5[0] == S.arr7[0].l) |
45 | 52 | assert S.arr5[0] == S.arr7[0].l |
46 | 53 |
|
| 54 | +# assign int8 |
| 55 | +S.arr8[0] = 0x11 |
| 56 | +print(hex(S.arr8[0])) |
| 57 | +assert hex(S.arr8[0]) == "0x11" |
| 58 | + |
| 59 | +# assign int16 |
| 60 | +S.arr9[0] = 0x1122 |
| 61 | +print(hex(S.arr9[0])) |
| 62 | +assert hex(S.arr9[0]) == "0x1122" |
| 63 | + |
| 64 | +# assign int32 |
| 65 | +S.arr10[0] = 0x11223344 |
| 66 | +print(hex(S.arr10[0])) |
| 67 | +assert hex(S.arr10[0]) == "0x11223344" |
| 68 | + |
| 69 | +# assign int64 |
| 70 | +S.arr11[0] = 0x11223344 |
| 71 | +print(hex(S.arr11[0])) |
| 72 | +assert hex(S.arr11[0]) == "0x11223344" |
| 73 | + |
| 74 | +# assign uint64 |
| 75 | +S.arr12[0] = 0x11223344 |
| 76 | +print(hex(S.arr12[0])) |
| 77 | +assert hex(S.arr12[0]) == "0x11223344" |
| 78 | + |
| 79 | +# index out of range |
| 80 | +try: |
| 81 | + print(S.arr8[2]) |
| 82 | +except IndexError: |
| 83 | + print("IndexError") |
| 84 | + |
| 85 | +# syntax error in descriptor |
| 86 | +try: |
| 87 | + S.arr13[0].l = 0x11 |
| 88 | +except TypeError: |
| 89 | + print("TypeError") |
| 90 | + |
| 91 | +# operation not supported |
| 92 | +try: |
| 93 | + S.arr13[0] = 0x11 |
| 94 | +except TypeError: |
| 95 | + print("TypeError") |
0 commit comments