CIRCT 23.0.0git
Loading...
Searching...
No Matches
test_types.py
Go to the documentation of this file.
1import esiaccel.types as types
2
3
5 void_type = types.VoidType("void")
6 assert void_type is not None
7 assert isinstance(void_type, types.VoidType)
8
9 bits_type = types.BitsType("bits8", 8)
10 assert bits_type is not None
11 assert isinstance(bits_type, types.BitsType)
12
13 uint_type = types.UIntType("uint32", 32)
14 assert uint_type is not None
15 assert isinstance(uint_type, types.UIntType)
16
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
21
22 struct_type = types.StructType(
23 "mystruct",
24 [("field1", types.UIntType("uint8", 8)),
25 ("field2", types.UIntType("uint16", 16))],
26 )
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)
32
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
40
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)
45 assert not valid
46 assert "any type" in reason
47 assert any_type.bit_width == -1
48 try:
49 any_type.serialize(0)
50 except ValueError as exc:
51 assert "any type" in str(exc)
52 else:
53 assert False, "AnyType.serialize should raise"
54
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(
70 serialized)
71 assert str(type_alias) == "aliasName"