public override IEnumerable <Difference> CalculateDifferences(IList <FormulaItem> obj1, IList <FormulaItem> obj2) { if (obj1 == null && obj2 == null) { yield break; } if (obj1 == null || obj2 == null) { yield return(new Difference("", DefaultValueComparer.ToString(obj1), DefaultValueComparer.ToString(obj2))); yield break; } if (obj1.Count != obj2.Count) { yield return(new Difference("Count", obj1.Count.ToString(), obj2.Count.ToString(), DifferenceTypes.NumberOfElementsMismatch)); } foreach (var formulaItem in obj1) { var formulaItem2 = obj2.FirstOrDefault(fi => fi.Id == formulaItem.Id); if (formulaItem2 != null) { var comparer = Factory.GetObjectsComparer <FormulaItem>(); foreach (var difference in comparer.CalculateDifferences(formulaItem, formulaItem2)) { yield return(difference.InsertPath($"[Id={formulaItem.Id}]")); } } } }
public void Compare(object value, string expectedResult) { var comparer = new DefaultValueComparer(); var actualResult = comparer.ToString(value); Assert.AreEqual(expectedResult, actualResult); }