///|
fn transition_suite(machine : Machine, maximum : Int32) -> Value {
let (reached, access) = reachable(machine)
let tests : Array[Value] = []
let mut total = 0
for state in reached {
for symbol in machine.alphabet {
if machine.edges.contains(edge_key(state, symbol)) {
total += 1
if tests.length() < maximum {
let sequence = access[state].copy()
sequence.push(symbol)
tests.push(
record([
("word", strings(sequence)),
("expected", observations(machine, sequence)),
]),
)
}
}
}
}
record([
(
"verdict",
String(if tests.length() == total { "complete" } else { "unknown" }),
),
("reset_required", Bool(true)),
("coverage_kind", String("reachable_transition_cover")),
("reachable_transitions", Number(total.to_double())),
("tests", Array(tests)),
])
}