Ejemplo n.º 1
0
        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);
        }