Refactor tests (better grouping + cocotb support) (#15)
* initial refactor * fix cocotb tests * fix typecheck * install verilator
This commit is contained in:
59
tests/body/test_struct_body.py
Normal file
59
tests/body/test_struct_body.py
Normal file
@@ -0,0 +1,59 @@
|
||||
from peakrdl_busdecoder.body import StructBody
|
||||
|
||||
|
||||
class TestStructBody:
|
||||
"""Test the StructBody class."""
|
||||
|
||||
def test_simple_struct(self) -> None:
|
||||
"""Test simple struct definition."""
|
||||
body = StructBody("my_struct_t", packed=True, typedef=True)
|
||||
body += "logic [7:0] field1;"
|
||||
body += "logic field2;"
|
||||
|
||||
result = str(body)
|
||||
assert "typedef struct packed" in result
|
||||
assert "my_struct_t" in result
|
||||
assert "logic [7:0] field1;" in result
|
||||
assert "logic field2;" in result
|
||||
|
||||
def test_unpacked_struct(self) -> None:
|
||||
"""Test unpacked struct definition."""
|
||||
body = StructBody("unpacked_t", packed=False, typedef=True)
|
||||
body += "int field1;"
|
||||
|
||||
result = str(body)
|
||||
assert "typedef struct" in result
|
||||
assert "packed" not in result or "typedef struct {" in result
|
||||
assert "unpacked_t" in result
|
||||
|
||||
def test_struct_without_typedef(self) -> None:
|
||||
"""Test struct without typedef."""
|
||||
body = StructBody("my_struct", packed=True, typedef=False)
|
||||
body += "logic field;"
|
||||
|
||||
result = str(body)
|
||||
# When typedef=False, packed is not used
|
||||
assert "struct {" in result
|
||||
assert "typedef" not in result
|
||||
assert "my_struct" in result
|
||||
|
||||
def test_empty_struct(self) -> None:
|
||||
"""Test empty struct."""
|
||||
body = StructBody("empty_t", packed=True, typedef=True)
|
||||
result = str(body)
|
||||
assert "typedef struct packed" in result
|
||||
assert "empty_t" in result
|
||||
|
||||
def test_nested_struct(self) -> None:
|
||||
"""Test struct with nested struct."""
|
||||
outer = StructBody("outer_t", packed=True, typedef=True)
|
||||
inner = StructBody("inner_t", packed=True, typedef=True)
|
||||
inner += "logic field1;"
|
||||
outer += "logic field2;"
|
||||
outer += str(inner) # Include inner struct as a string
|
||||
|
||||
result = str(outer)
|
||||
assert "outer_t" in result
|
||||
assert "field2;" in result
|
||||
# Inner struct should appear in the string
|
||||
assert "inner_t" in result
|
||||
Reference in New Issue
Block a user