mirror of
https://github.com/pocketpy/pocketpy
synced 2026-02-04 14:40:16 +00:00
63 lines
1.3 KiB
Python
63 lines
1.3 KiB
Python
from stdc import *
|
|
|
|
assert sizeof(Int8) == sizeof(UInt8) == 1
|
|
assert sizeof(Int16) == sizeof(UInt16) == 2
|
|
assert sizeof(Int32) == sizeof(UInt32) == 4
|
|
assert sizeof(Int64) == sizeof(UInt64) == 8
|
|
|
|
assert sizeof(Float) == 4
|
|
assert sizeof(Double) == 8
|
|
|
|
assert sizeof(Bool) == 1
|
|
assert sizeof(Pointer) in (4, 8)
|
|
|
|
x = Int32(42)
|
|
assert x.value == 42
|
|
x.value = 100
|
|
assert x.value == 100
|
|
|
|
Int32.read(addressof(x), 0) == 100
|
|
Int32.write(addressof(x), 0, 200)
|
|
assert x.value == 200
|
|
|
|
# test array
|
|
arr = Int32.array(3)
|
|
arr[0] = 10
|
|
arr[1] = 20
|
|
arr[2] = 30
|
|
assert arr[0] == 10
|
|
assert arr[1] == 20
|
|
assert arr[2] == 30
|
|
|
|
# test malloc, memset, memcpy
|
|
p = malloc(3 * sizeof(Int32))
|
|
memset(p, 0, 3 * sizeof(Int32))
|
|
memcpy(p, addressof(arr), 3 * sizeof(Int32))
|
|
for i in range(3):
|
|
assert arr[i] == Int32.read(p, i)
|
|
|
|
assert memcmp(p, addressof(arr), 3 * sizeof(Int32)) == 0
|
|
|
|
# test free
|
|
free(p)
|
|
|
|
# test float
|
|
y = Double.array(3)
|
|
y[0] = 1.1
|
|
y[1] = 2.2
|
|
y[2] = 3.3
|
|
assert Double.read(addressof(y), 0) == 1.1
|
|
assert Double.read(addressof(y), 1) == 2.2
|
|
assert Double.read(addressof(y), 2) == 3.3
|
|
|
|
# test read_cstr and write_cstr
|
|
a = Char.array(20)
|
|
write_cstr(addressof(a), "hello")
|
|
assert read_cstr(addressof(a)) == "hello"
|
|
|
|
a[3] = 0
|
|
assert read_cstr(addressof(a)) == "hel"
|
|
|
|
# test read_bytes and write_bytes
|
|
assert read_bytes(addressof(a), 5) == b'hel\x00o'
|