/// <summary> /// Display the failure information for two collections that did not match. /// </summary> /// <param name="writer">The MessageWriter on which to display</param> /// <param name="expected">The expected collection.</param> /// <param name="actual">The actual collection</param> /// <param name="depth">The depth of this failure in a set of nested collections</param> private void DisplayCollectionDifferences(MessageWriter writer, ICollection expected, ICollection actual, int depth) { int failurePoint = comparer.FailurePoints.Count > depth ? (int)comparer.FailurePoints[depth] : -1; DisplayCollectionTypesAndSizes(writer, expected, actual, depth); if (failurePoint >= 0) { DisplayFailurePoint(writer, expected, actual, failurePoint, depth); if (failurePoint < expected.Count && failurePoint < actual.Count) { DisplayDifferences( writer, GetValueFromCollection(expected, failurePoint), GetValueFromCollection(actual, failurePoint), ++depth); } else if (expected.Count < actual.Count) { writer.Write(" Extra: "); writer.WriteCollectionElements(actual, failurePoint, 3); } else { writer.Write(" Missing: "); writer.WriteCollectionElements(expected, failurePoint, 3); } } }