check method
void
check()
Implementation
void check() {
final map = <(String, String), List<Transition>>{};
_states = {};
for (final entry in transitions.entries) {
final transition = entry.value;
final source = transition.source;
final target = transition.target;
_states.add(source.name);
_states.add(target.name);
(map[(source.name, target.name)] ??= []).add(transition);
}
for (final entry in _paths.entries) {
final name = entry.key;
final states = entry.value;
var count = 0;
for (var i = 1; i < states.length; i++) {
final source = states[i - 1];
final target = states[i];
_checkState(source, states);
_checkState(target, states);
final transition = map[(source, target)];
if (transition == null) {
break;
}
count++;
}
if (count != states.length - 1) {
throw StateError('''
The graph path '$name' is not complete..
Expected path: ${states.join(' -> ')}
Resolved path: ${states.take(count + 1).join(' -> ')}''');
}
}
}