40 lines
1.9 KiB
Python
40 lines
1.9 KiB
Python
#import pytest
|
|
from src.basic_data_handling.control_flow_nodes import IfElse, SwitchCase
|
|
|
|
|
|
def test_if_else():
|
|
node = IfElse()
|
|
|
|
# Test where condition is True
|
|
assert node.execute(True, "Value if True", "Value if False") == ("Value if True",)
|
|
|
|
# Test where condition is False
|
|
assert node.execute(False, "Value if True", "Value if False") == ("Value if False",)
|
|
|
|
# Test edge cases
|
|
assert node.execute(True, 1, 2) == (1,) # Integers
|
|
assert node.execute(False, [1, 2, 3], None) == (None,) # Complex types
|
|
assert node.execute(True, None, "fallback") == (None,) # Fallback to True branch
|
|
|
|
|
|
def test_switch_case():
|
|
node = SwitchCase()
|
|
|
|
# Selector within range, valid cases
|
|
assert node.execute(0, case_0="Case 0", case_1="Case 1", case_2="Case 2", case_3="Case 3") == ("Case 0",)
|
|
assert node.execute(1, case_0="Case 0", case_1="Case 1", case_2="Case 2", case_3="Case 3") == ("Case 1",)
|
|
assert node.execute(3, case_0="Case 0", case_1="Case 1", case_2="Case 2", case_3="Case 3") == ("Case 3",)
|
|
|
|
# Selector out of range, fallback to default case
|
|
assert node.execute(4, case_0="Case 0", case_1="Case 1", case_2="Case 2", case_3="Case 3", default="Default") == ("Default",)
|
|
assert node.execute(99, case_0="Case 0", case_1="Case 1", case_2="Case 2", case_3="Case 3", default="Default") == ("Default",)
|
|
|
|
# Selector out of range, no default provided
|
|
assert node.execute(4, case_0="Case 0", case_1="Case 1", case_2="Case 2", case_3="Case 3") == (None,)
|
|
|
|
# Edge cases
|
|
assert node.execute(0, case_0=None, case_1="Case 1", case_2="Case 2") == (None,) # Case with None
|
|
assert node.execute(2, case_0="Case 0", case_1="Case 1", case_2="Case 2") == ("Case 2",)
|
|
assert node.execute(0, case_0=123, case_1=False, case_2="Case 2") == (123,) # Different data types
|
|
assert node.execute(10, case_0="Case 0", case_1="Case 1", case_2="Case 2", default="Fallback") == ("Fallback",)
|