public ICollection <ICollectionMemberCompareResult <TMember> > Compare(IEnumerable <TMember> left, IEnumerable <TMember> right) { var list = new List <ICollectionMemberCompareResult <TMember> >(); using (var leftEnumerator = new SafeNullableEnumerator <TMember>(left)) using (var rightEnumerator = new SafeNullableEnumerator <TMember>(right)) { leftEnumerator.MoveNext(); rightEnumerator.MoveNext(); while (!leftEnumerator.Completed || !rightEnumerator.Completed) { var typeComparerResult = _typeComparer.Compare(leftEnumerator.Current, rightEnumerator.Current); list.Add(new CollectionTypeMemberCompareResult <TMember> { Match = typeComparerResult.Match, Left = leftEnumerator.Current, Right = rightEnumerator.Current, TypeCompareResult = typeComparerResult }); leftEnumerator.MoveNext(); rightEnumerator.MoveNext(); } } return(list); }
public void MoveNext_CurrentIsNull_ReturnsTrue() { var values = new[] { "" }; var enumerator = new SafeNullableEnumerator <string>(values); enumerator.MoveNext(); Assert.NotNull(enumerator.Current); enumerator.MoveNext(); Assert.Null(enumerator.Current); enumerator.MoveNext(); Assert.Null(enumerator.Current); }