findFirstDivergence function
Compares 2 ordered outcome lists (e.g. a recorded session's outcomes vs a fresh replay's outcomes) and returns the FIRST point they differ — including a length mismatch, treated as the shorter list "missing" the longer one's extra entries starting there.
Implementation
ReplayDivergence? findFirstDivergence(
List<Object?> expected,
List<Object?> actual,
) {
final shorter = expected.length < actual.length
? expected.length
: actual.length;
for (var i = 0; i < shorter; i++) {
if (expected[i] != actual[i]) {
return ReplayDivergence(
index: i,
expected: expected[i],
actual: actual[i],
);
}
}
if (expected.length != actual.length) {
return ReplayDivergence(
index: shorter,
expected: shorter < expected.length ? expected[shorter] : null,
actual: shorter < actual.length ? actual[shorter] : null,
);
}
return null;
}