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:
Paul Sokolovsky 2018-08-26 09:52:03 +03:00 committed by Damien George
parent 2411f42ccb
commit c638d86660
2 changed files with 30 additions and 0 deletions

View File

@ -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")

View File

@ -0,0 +1,3 @@
True
True
TypeError