5 void_type = types.VoidType(
"void")
6 assert void_type
is not None
7 assert isinstance(void_type, types.VoidType)
9 bits_type = types.BitsType(
"bits8", 8)
10 assert bits_type
is not None
11 assert isinstance(bits_type, types.BitsType)
13 uint_type = types.UIntType(
"uint32", 32)
14 assert uint_type
is not None
15 assert isinstance(uint_type, types.UIntType)
17 sint_type = types.SIntType(
"sint8", 8)
18 assert sint_type
is not None
19 assert isinstance(sint_type, types.SIntType)
20 assert sint_type.bit_width == 8
22 struct_type = types.StructType(
24 [(
"field1", types.UIntType(
"uint8", 8)),
25 (
"field2", types.UIntType(
"uint16", 16))],
27 assert struct_type
is not None
28 assert isinstance(struct_type, types.StructType)
29 field_map = {name: field_type
for name, field_type
in struct_type.fields}
30 assert isinstance(field_map[
"field1"], types.UIntType)
31 assert isinstance(field_map[
"field2"], types.UIntType)
33 array_type = types.ArrayType(
"uint8_array", types.UIntType(
"uint8", 8), 10)
34 assert array_type
is not None
35 assert isinstance(array_type, types.ArrayType)
36 assert hasattr(array_type,
"element_type")
37 assert isinstance(array_type.element_type, types.UIntType)
38 assert hasattr(array_type,
"size")
39 assert array_type.size == 10
41 any_type = types.AnyType(
"any")
42 assert any_type
is not None
43 assert isinstance(any_type, types.AnyType)
44 valid, reason = any_type.is_valid(0)
46 assert "any type" in reason
47 assert any_type.bit_width == -1
50 except ValueError
as exc:
51 assert "any type" in str(exc)
53 assert False,
"AnyType.serialize should raise"
55 alias_inner = types.UIntType(
"alias_inner", 16)
56 type_alias = types.TypeAlias(
"alias_scope",
"aliasName", alias_inner)
57 assert type_alias
is not None
58 assert isinstance(type_alias, types.TypeAlias)
59 assert type_alias.name ==
"aliasName"
60 assert isinstance(type_alias.inner_type, types.UIntType)
61 assert type_alias.bit_width == alias_inner.bit_width
62 alias_valid, alias_reason = type_alias.is_valid(42)
63 inner_valid, inner_reason = alias_inner.is_valid(42)
64 assert alias_valid == inner_valid
65 assert alias_reason == inner_reason
66 serialized = type_alias.serialize(42)
67 inner_serialized = alias_inner.serialize(42)
68 assert serialized == inner_serialized
69 assert type_alias.deserialize(serialized) == alias_inner.deserialize(
71 assert str(type_alias) ==
"aliasName"