100% test coverage

This commit is contained in:
David Gil de Gómez Pérez
2026-07-15 17:13:07 +03:00
parent 159ad3b140
commit 000495e055
2 changed files with 16 additions and 10 deletions
+4 -10
View File
@@ -29,9 +29,6 @@ class State:
def __str__(self) -> str:
return f"[State {self.__name}]"
def __hash__(self) -> int:
return hash(self.__name)
class Transition(Generic[TransitionInput]):
def __init__(self, transition_input: TransitionInput, origin_name: str, destination_name: str,
@@ -51,10 +48,6 @@ class Transition(Generic[TransitionInput]):
def __str__(self) -> str:
return f"[Transition ({self.__origin_name}, {self.__destination_name}, {self.__transition_input})]"
def __hash__(self) -> int:
# A tuple is only hashable if all its elements are hashable
return hash((self.__origin_name, self.__destination_name, self.__transition_input))
class Machine(Generic[Input]):
def __init__(self, initial_context=None) -> None:
@@ -151,8 +144,9 @@ class Machine(Generic[Input]):
def __str__(self) -> str:
r = [f"=MACHINE=", "\tSTATES"]
for state in self.__states.values():
r.append(f"\t\t{state}")
r.append(f"\t\t{str(state)}")
r.append("\tTRANSITIONS")
for transition in self.__transitions.values():
r.append(f"\t\t{transition}")
for transition_origin in self.__transitions.keys():
for transition_input in self.__transitions[transition_origin]:
r.append(f"\t\t{str(self.__transitions[transition_origin][transition_input])}")
return "\n".join(r)
+12
View File
@@ -233,4 +233,16 @@ class TestMachine(unittest.TestCase):
t = Transition("TEST_1", "A", "B", lambda context: print("A -> B"))
self.assertEqual(str(t), "[Transition (A, B, TEST_1)]")
# MACHINE
def test_machine_str(self):
m = Machine()
m.add_state("A", True, False)
m.add_state("B", False, False)
m.add_state("C", False, True)
m.add_transition("TEST_1", "A", "B", lambda context: print("A -> B"))
m.add_transition("TEST_2", "B", "C", lambda context: print("B -> C"))
result = "=MACHINE=\n\tSTATES\n\t\t[State A]\n\t\t[State B]\n\t\t[State C]\n\tTRANSITIONS\n\t\t[Transition (A, B, TEST_1)]\n\t\t[Transition (B, C, TEST_2)]"
self.assertEqual(str(m), result)