add readme, move testing function to lib

This commit is contained in:
Joeri Exelmans 2024-11-29 09:53:49 +01:00
parent 2fb8318506
commit 8b3f543bda
5 changed files with 118 additions and 10 deletions

View file

@ -134,3 +134,14 @@ def run_scenario(input_trace, expected_output_trace, statechart_class, INITIAL,
elif verbose:
print_diff()
return True
def run_scenarios(scenarios, statechart_class, initial, idempotent, verbose=True):
ok = True
for scenario in scenarios:
print(f"Running scenario: {scenario["name"]}")
ok = run_scenario(scenario["input_events"], scenario["output_events"], statechart_class, initial, idempotent, verbose=verbose) and ok
print("--------")
if ok:
print("All scenarios passed.")
else:
print("Some scenarios failed.")

View file

@ -0,0 +1,63 @@
from srcgen import a, b, c, d, e
from lib.test import run_scenarios
SCENARIOS_A = [
{
"name": "A",
"input_events": [],
"output_events": [
(1000000000, "x", None),
(2000000000, "x", None),
(3000000000, "x", None),
],
},
]
SCENARIOS_B = [
{
"name": "B",
"input_events": [],
"output_events": [
(2000000000, "inner", None),
(3000000000, "outer", None),
(5000000000, "inner", None),
(6000000000, "outer", None),
(8000000000, "inner", None),
(9000000000, "outer", None),
],
},
]
SCENARIOS_C = [
{
"name": "C",
"input_events": [],
"output_events": [],
},
]
SCENARIOS_D = [
{
"name": "D",
"input_events": [],
"output_events": [],
},
]
SCENARIOS_E = [
{
"name": "E",
"input_events": [],
"output_events": [
(1000000000, "x", None),
(1000000000, "y", None),
(2000000000, "x", None),
(2000000000, "y", None),
(3000000000, "x", None),
(3000000000, "y", None),
],
},
]
if __name__ == "__main__":
run_scenarios(SCENARIOS_A, a.A, [], [], verbose=True)
run_scenarios(SCENARIOS_B, b.B, [], [], verbose=True)
run_scenarios(SCENARIOS_C, c.C, [], [], verbose=True)
run_scenarios(SCENARIOS_D, d.D, [], [], verbose=True)
run_scenarios(SCENARIOS_E, e.E, [], [], verbose=True)

View file

@ -1,5 +1,6 @@
import tkinter
import atexit
import sys
# load generated Statechart code
from srcgen.water_level_simulator import WaterLevelSimulator

View file

@ -1,5 +1,5 @@
import functools
from lib.test import run_scenario
from lib.test import run_scenarios
# from srcgen.lock_controller import LockController
from srcgen.solution import Solution as LockController # Teacher's solution
@ -229,12 +229,4 @@ INITIAL = [
]
if __name__ == "__main__":
ok = True
for scenario in SCENARIOS:
print(f"Running scenario: {scenario["name"]}")
ok = run_scenario(scenario["input_events"], scenario["output_events"], LockController, INITIAL, IDEMPOTENT, verbose=False) and ok
print("--------")
if ok:
print("All scenarios passed.")
else:
print("Some scenarios failed.")
run_scenarios(SCENARIOS, LockController, INITIAL, IDEMPOTENT)