86 lines
2.5 KiB
Python
86 lines
2.5 KiB
Python
from peakrdl_busdecoder.body import IfBody
|
|
class TestIfBody:
|
|
"""Test the IfBody class."""
|
|
|
|
def test_simple_if(self):
|
|
"""Test simple if statement."""
|
|
body = IfBody()
|
|
with body.cm("condition1") as b:
|
|
b += "statement1;"
|
|
|
|
result = str(body)
|
|
assert "if (condition1)" in result
|
|
assert "statement1;" in result
|
|
assert "end" in result
|
|
|
|
def test_if_else(self):
|
|
"""Test if-else statement."""
|
|
body = IfBody()
|
|
with body.cm("condition1") as b:
|
|
b += "if_statement;"
|
|
with body.cm(None) as b: # None for else
|
|
b += "else_statement;"
|
|
|
|
result = str(body)
|
|
assert "if (condition1)" in result
|
|
assert "if_statement;" in result
|
|
assert "else" in result
|
|
assert "else_statement;" in result
|
|
|
|
def test_if_elif_else(self):
|
|
"""Test if-elif-else chain."""
|
|
body = IfBody()
|
|
with body.cm("condition1") as b:
|
|
b += "statement1;"
|
|
with body.cm("condition2") as b:
|
|
b += "statement2;"
|
|
with body.cm(None) as b: # None for else
|
|
b += "statement3;"
|
|
|
|
result = str(body)
|
|
assert "if (condition1)" in result
|
|
assert "statement1;" in result
|
|
assert "else if (condition2)" in result
|
|
assert "statement2;" in result
|
|
assert "else" in result
|
|
assert "statement3;" in result
|
|
|
|
def test_multiple_elif(self):
|
|
"""Test multiple elif statements."""
|
|
body = IfBody()
|
|
with body.cm("cond1") as b:
|
|
b += "stmt1;"
|
|
with body.cm("cond2") as b:
|
|
b += "stmt2;"
|
|
with body.cm("cond3") as b:
|
|
b += "stmt3;"
|
|
|
|
result = str(body)
|
|
assert "if (cond1)" in result
|
|
assert "else if (cond2)" in result
|
|
assert "else if (cond3)" in result
|
|
|
|
def test_empty_if_branches(self):
|
|
"""Test if statement with empty branches."""
|
|
body = IfBody()
|
|
with body.cm("condition"):
|
|
pass
|
|
|
|
result = str(body)
|
|
assert "if (condition)" in result
|
|
|
|
def test_nested_if(self):
|
|
"""Test nested if statements."""
|
|
outer = IfBody()
|
|
with outer.cm("outer_cond") as outer_body:
|
|
inner = IfBody()
|
|
with inner.cm("inner_cond") as inner_body:
|
|
inner_body += "nested_statement;"
|
|
outer_body += inner
|
|
|
|
result = str(outer)
|
|
assert "if (outer_cond)" in result
|
|
assert "if (inner_cond)" in result
|
|
assert "nested_statement;" in result
|
|
|