diff options
Diffstat (limited to 'tests/017/ffi-misc.tl')
-rw-r--r-- | tests/017/ffi-misc.tl | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/tests/017/ffi-misc.tl b/tests/017/ffi-misc.tl index 1b729bbc..68f67b6f 100644 --- a/tests/017/ffi-misc.tl +++ b/tests/017/ffi-misc.tl @@ -94,3 +94,18 @@ (mtest (ffi-put (new flex x #\a y "bcd") (ffi (struct flex))) #b'6162636400' (ffi-get #b'6162636400' (ffi (struct flex))) #S(flex x #\a y "bcd")) + +(defvarl %big-endian% (zerop [(ffi-put #x1 (ffi uint32)) 0])) + +(typedef foo + (struct foo + (x (bit 48 uint64)) + (y (bit 16 uint64)))) + +(if %big-endian% + (mtest + (ffi-put (new foo x 1 y 1) (ffi foo)) #b'0000000000010001' + (ffi-put (new foo x #xABCDFFFFB00B y #x1234) (ffi foo)) #b'ABCDFFFFB00B1234') + (mtest + (ffi-put (new foo x 1 y 1) (ffi foo)) #b'0100000000000100' + (ffi-put (new foo x #xABCDFFFFB00B y #x1234) (ffi foo)) #b'0BB0FFFFCDAB3412')) |