/// <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 internalActual 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) { DisplayTypesAndSizes(writer, expected, actual, depth); if (comparer.FailurePoints.Count > depth) { FailurePoint failurePoint = comparer.FailurePoints[depth]; DisplayFailurePoint(writer, expected, actual, failurePoint, depth); if (failurePoint.ExpectedHasData && failurePoint.ActualHasData) { DisplayDifferences( writer, failurePoint.ExpectedValue, failurePoint.ActualValue, ++depth); } else if (failurePoint.ActualHasData) { writer.Write(" Extra: "); writer.WriteCollectionElements(actual, failurePoint.Position, 3); } else { writer.Write(" Missing: "); writer.WriteCollectionElements(expected, failurePoint.Position, 3); } } }