micropython: add micropython component
This commit is contained in:
98
components/language/micropython/tests/basics/struct1.py
Normal file
98
components/language/micropython/tests/basics/struct1.py
Normal file
@@ -0,0 +1,98 @@
|
||||
try:
|
||||
import ustruct as struct
|
||||
except:
|
||||
try:
|
||||
import struct
|
||||
except ImportError:
|
||||
print("SKIP")
|
||||
raise SystemExit
|
||||
|
||||
print(struct.calcsize("<bI"))
|
||||
print(struct.unpack("<bI", b"\x80\0\0\x01\0"))
|
||||
print(struct.calcsize(">bI"))
|
||||
print(struct.unpack(">bI", b"\x80\0\0\x01\0"))
|
||||
|
||||
# 32-bit little-endian specific
|
||||
#print(struct.unpack("bI", b"\x80\xaa\x55\xaa\0\0\x01\0"))
|
||||
|
||||
print(struct.pack("<l", 1))
|
||||
print(struct.pack(">l", 1))
|
||||
print(struct.pack("<i", 1))
|
||||
print(struct.pack(">i", 1))
|
||||
print(struct.pack("<h", 1))
|
||||
print(struct.pack(">h", 1))
|
||||
print(struct.pack("<b", 1))
|
||||
print(struct.pack(">b", 1))
|
||||
|
||||
print(struct.pack("<bI", -128, 256))
|
||||
print(struct.pack(">bI", -128, 256))
|
||||
|
||||
print(struct.calcsize("100sI"))
|
||||
print(struct.calcsize("97sI"))
|
||||
print(struct.unpack("<6sH", b"foo\0\0\0\x12\x34"))
|
||||
print(struct.pack("<6sH", b"foo", 10000))
|
||||
|
||||
s = struct.pack("BHBI", 10, 100, 200, 300)
|
||||
v = struct.unpack("BHBI", s)
|
||||
print(v == (10, 100, 200, 300))
|
||||
|
||||
# network byte order
|
||||
print(struct.pack('!i', 123))
|
||||
|
||||
# check that we get an error if the buffer is too small
|
||||
try:
|
||||
struct.unpack('I', b'\x00\x00\x00')
|
||||
except:
|
||||
print('struct.error')
|
||||
|
||||
# first arg must be a string
|
||||
try:
|
||||
struct.pack(1, 2)
|
||||
except TypeError:
|
||||
print('TypeError')
|
||||
|
||||
# make sure that unknown types are detected
|
||||
try:
|
||||
struct.pack("z", 1)
|
||||
except:
|
||||
print("Unknown type")
|
||||
|
||||
# Initially repitition counters were supported only for strings,
|
||||
# but later were implemented for all.
|
||||
print(struct.unpack("<3B2h", b"foo\x12\x34\xff\xff"))
|
||||
print(struct.pack("<3B", 1, 2, 3))
|
||||
|
||||
# pack_into
|
||||
buf = bytearray(b'>>>123<<<')
|
||||
struct.pack_into('<bbb', buf, 3, 0x41, 0x42, 0x43)
|
||||
print(buf)
|
||||
struct.pack_into('<bbb', buf, -6, 0x44, 0x45, 0x46)
|
||||
print(buf)
|
||||
|
||||
# check that we get an error if the buffer is too small
|
||||
try:
|
||||
struct.pack_into('I', bytearray(1), 0, 0)
|
||||
except:
|
||||
print('struct.error')
|
||||
|
||||
try:
|
||||
struct.pack_into('<bbb', buf, 7, 0x41, 0x42, 0x43)
|
||||
except:
|
||||
print('struct.error')
|
||||
try:
|
||||
struct.pack_into('<bbb', buf, -10, 0x41, 0x42, 0x43)
|
||||
except:
|
||||
print('struct.error')
|
||||
|
||||
# unpack_from
|
||||
buf = b'0123456789'
|
||||
print(struct.unpack_from('<b', buf, 4))
|
||||
print(struct.unpack_from('<b', buf, -4))
|
||||
try:
|
||||
print(struct.unpack_from('<b', buf, 10))
|
||||
except:
|
||||
print('struct.error')
|
||||
try:
|
||||
print(struct.unpack_from('<b', buf, -11))
|
||||
except:
|
||||
print('struct.error')
|
Reference in New Issue
Block a user