tests/extmod/uctypes_sizeof_layout: Test for sizeof of different layout.
On almost all realistic platforms, native layout should be larger (or equal) than packed layout.
This commit is contained in:
parent
2411f42ccb
commit
c638d86660
|
@ -0,0 +1,27 @@
|
|||
try:
|
||||
import uctypes
|
||||
except ImportError:
|
||||
print("SKIP")
|
||||
raise SystemExit
|
||||
|
||||
desc = {
|
||||
"f1": 0 | uctypes.UINT32,
|
||||
"f2": 4 | uctypes.UINT8,
|
||||
}
|
||||
|
||||
|
||||
# uctypes.NATIVE is default
|
||||
print(uctypes.sizeof(desc) == uctypes.sizeof(desc, uctypes.NATIVE))
|
||||
|
||||
# Here we assume that that we run on a platform with convential ABI
|
||||
# (which rounds up structure size based on max alignment). For platforms
|
||||
# where that doesn't hold, this tests should be just disabled in the runner.
|
||||
print(uctypes.sizeof(desc, uctypes.NATIVE) > uctypes.sizeof(desc, uctypes.LITTLE_ENDIAN))
|
||||
|
||||
# When taking sizeof of instantiated structure, layout type param
|
||||
# is prohibited (because structure already has its layout type).
|
||||
s = uctypes.struct(0, desc, uctypes.LITTLE_ENDIAN)
|
||||
try:
|
||||
uctypes.sizeof(s, uctypes.LITTLE_ENDIAN)
|
||||
except TypeError:
|
||||
print("TypeError")
|
|
@ -0,0 +1,3 @@
|
|||
True
|
||||
True
|
||||
TypeError
|
Loading…
Reference in New Issue