public virtual SetVerificationResult Match(Cell[] cells, IEnumerable<StepValues> expectedValues,
IEnumerable<StepValues> actualValues)
{
var result = new SetVerificationResult();
foreach (var expected in expectedValues)
{
var actual = actualValues.FirstOrDefault(x => cells.Matches(expected, x));
if (actual == null)
{
result.MarkMissing(expected.id);
}
else
{
processMatch(actual, result, expected);
}
}
actualValues.Where(x => !x.IsMatched).Each(result.MarkExtra);
return result;
}