public void Select_With_NullSelector_Must_Throw()
        {
            // Arrange
            var enumerable = Wrap.AsValueEnumerable(new int[0]);
            var selector   = (NullableSelectorAt <int, string>)null;

            // Act
            Action action = () => _ = ValueEnumerableExtensions.Select <Wrap.ValueEnumerableWrapper <int>, Wrap.Enumerator <int>, int, string>(enumerable, selector);

            // Assert
            _ = action.Must()
                .Throw <ArgumentNullException>()
                .EvaluateTrue(exception => exception.ParamName == "selector");
        }
Esempio n. 2
0
        public void Contains_With_DefaultComparer_And_NotContains_Must_ReturnFalse(int[] source)
        {
            // Arrange
            var value   = int.MaxValue;
            var wrapped = Wrap.AsValueEnumerable(source);

            // Act
            var result = ValueEnumerableExtensions
                         .Contains <Wrap.ValueEnumerableWrapper <int>, Wrap.Enumerator <int>, int>(wrapped, value, EqualityComparer <int> .Default);

            // Assert
            _ = result.Must()
                .BeFalse();
        }
Esempio n. 3
0
        public async ValueTask AsAsyncValueEnumerable_With_ValidData_Must_Succeed(int[] source)
        {
            // Arrange
            var wrapped = Wrap
                          .AsValueEnumerable(source);

            // Act
            var result = ValueEnumerableExtensions
                         .AsAsyncValueEnumerable <Wrap.ValueEnumerableWrapper <int>, Wrap.Enumerator <int>, int>(wrapped);

            // Assert
            var enumerator = result.GetAsyncEnumerator();

            await using (enumerator.ConfigureAwait(false))
            {
                var index = 0;
                while (true)
                {
                    var isResultCompleted = !await enumerator.MoveNextAsync();

                    var isSourceCompleted = index == source.Length;

                    if (isResultCompleted && isSourceCompleted)
                    {
                        return;
                    }

                    if (isResultCompleted)
                    {
                        throw new Exception("'result' is shorter.");
                    }

                    if (isSourceCompleted)
                    {
                        throw new Exception("'result' is longer.");
                    }

                    if (!EqualityComparer <int> .Default.Equals(enumerator.Current, source[index]))
                    {
                        throw new Exception($"Items are not equal at index '{index}'.");
                    }

                    index++;
                }
            }
            // TODO: figure out why this doesn't work...
            //_ = result.Must()
            //    .BeAsyncEnumerableOf<int>()
            //    .BeEqualTo(source);
        }
Esempio n. 4
0
        public void Contains_ReferenceType_With_Null_And_Contains_Must_ReturnTrue(int[] source)
        {
            // Arrange
            var value   = Enumerable.Last(source).ToString();
            var wrapped = Wrap.AsValueEnumerable(source.Select(item => item.ToString()).ToArray());

            // Act
            var result = ValueEnumerableExtensions
                         .Contains <Wrap.ValueEnumerableWrapper <string>, Wrap.Enumerator <string>, string>(wrapped, value);

            // Assert
            _ = result.Must()
                .BeTrue();
        }
Esempio n. 5
0
        public void Contains_ValueType_With_Null_And_Contains_Must_ReturnTrue(int[] source)
        {
            // Arrange
            var value   = Enumerable.Last(source);
            var wrapped = Wrap.AsValueEnumerable(source);

            // Act
            var result = ValueEnumerableExtensions
                         .Contains <Wrap.ValueEnumerableWrapper <int>, Wrap.Enumerator <int>, int>(wrapped, value);

            // Assert
            _ = result.Must()
                .BeTrue();
        }
Esempio n. 6
0
        public void AsValueEnumerable_With_ValueType_Must_ReturnCopy()
        {
            // Arrange
            var source  = new int[0];
            var wrapped = Wrap.AsValueEnumerable(source);

            // Act
            var result = ValueEnumerableExtensions
                         .AsValueEnumerable <Wrap.ValueEnumerableWrapper <int>, Wrap.Enumerator <int>, int>(wrapped);

            // Assert
            _ = result.Must()
                .BeEqualTo(wrapped);
        }
Esempio n. 7
0
        public void Single_With_Multiple_Must_Return_None(int[] source)
        {
            // Arrange
            var wrapped = Wrap
                          .AsValueEnumerable(source);

            // Act
            var result = ValueEnumerableExtensions
                         .Single <Wrap.ValueEnumerableWrapper <int>, Wrap.Enumerator <int>, int>(wrapped);

            // Assert
            _ = result.Must()
                .BeOfType <Option <int> >()
                .EvaluateTrue(option => option.IsNone);
        }
Esempio n. 8
0
        public void Skip_With_ValidData_Must_Succeed(int[] source, int count)
        {
            // Arrange
            var wrapped  = Wrap.AsValueEnumerable(source);
            var expected = System.Linq.Enumerable.Skip(source, count);

            // Act
            var result = ValueEnumerableExtensions
                         .Skip <Wrap.ValueEnumerableWrapper <int>, Wrap.Enumerator <int>, int>(wrapped, count);

            // Assert
            _ = result.Must()
                .BeEnumerableOf <int>()
                .BeEqualTo(expected);
        }
Esempio n. 9
0
        public void All_With_ValidData_Must_Succeed(int[] source, Predicate <int> predicate)
        {
            // Arrange
            var wrapped  = Wrap.AsValueEnumerable(source);
            var expected =
                System.Linq.Enumerable.All(wrapped, predicate.AsFunc());

            // Act
            var result = ValueEnumerableExtensions
                         .All <Wrap.ValueEnumerableWrapper <int>, Wrap.Enumerator <int>, int>(wrapped, predicate);

            // Assert
            _ = result.Must()
                .BeEqualTo(expected);
        }
Esempio n. 10
0
        public void All_With_NullPredicate_Must_Throw()
        {
            // Arrange
            var wrapped   = Wrap.AsValueEnumerable(new int[0]);
            var predicate = (Predicate <int>)null;

            // Act
            Action action = () => _ = ValueEnumerableExtensions
                                      .All <Wrap.ValueEnumerableWrapper <int>, Wrap.Enumerator <int>, int>(wrapped, predicate);

            // Assert
            _ = action.Must()
                .Throw <ArgumentNullException>()
                .EvaluateTrue(exception => exception.ParamName == "predicate");
        }
Esempio n. 11
0
        public void AsValueEnumerable_With_ReferenceType_Must_ReturnSame()
        {
            // Arrange
            var source  = new int[0];
            var wrapped = Wrap
                          .AsValueEnumerable(source) as IValueEnumerable <int, Wrap.Enumerator <int> >;

            // Act
            var result = ValueEnumerableExtensions
                         .AsValueEnumerable <IValueEnumerable <int, Wrap.Enumerator <int> >, Wrap.Enumerator <int>, int>(wrapped);

            // Assert
            _ = result.Must()
                .BeSameAs(wrapped);
        }
        public void Any_PredicateAt_With_ValidData_Must_Succeed(int[] source, Func <int, int, bool> predicate)
        {
            // Arrange
            var wrapped  = Wrap.AsValueEnumerable(source);
            var expected =
                System.Linq.Enumerable.Count(
                    System.Linq.Enumerable.Where(source, predicate)) != 0;

            // Act
            var result = ValueEnumerableExtensions
                         .Any <Wrap.ValueEnumerableWrapper <int>, Wrap.Enumerator <int>, int>(wrapped, predicate);

            // Assert
            _ = result.Must()
                .BeEqualTo(expected);
        }
Esempio n. 13
0
        public void Single_Predicate_With_Empty_Must_Return_None(int[] source, Func <int, bool> predicate)
        {
            // Arrange
            var wrapped = Wrap
                          .AsValueEnumerable(source);

            // Act
            var result = ValueEnumerableExtensions
                         .Where <Wrap.ValueEnumerableWrapper <int>, Wrap.Enumerator <int>, int>(wrapped, predicate)
                         .Single();

            // Assert
            _ = result.Must()
                .BeOfType <Option <int> >()
                .EvaluateTrue(option => option.IsNone);
        }
Esempio n. 14
0
        public void Single_SelectorAt_With_Multiple_Must_Return_None(int[] source, Func <int, int, string> selector)
        {
            // Arrange
            var wrapped = Wrap
                          .AsValueEnumerable(source);

            // Act
            var result = ValueEnumerableExtensions
                         .Select <Wrap.ValueEnumerableWrapper <int>, Wrap.Enumerator <int>, int, string>(wrapped, selector)
                         .Single();

            // Assert
            _ = result.Must()
                .BeOfType <Option <string> >()
                .EvaluateTrue(option => option.IsNone);
        }
        public void Distinct_With_ValidData_Must_Succeed(int[] source)
        {
            // Arrange
            var wrapped  = Wrap.AsValueEnumerable(source);
            var expected = Enumerable
                           .Distinct(wrapped);

            // Act
            var result = ValueEnumerableExtensions
                         .Distinct <Wrap.ValueEnumerableWrapper <int>, Wrap.Enumerator <int>, int>(wrapped);

            // Assert
            _ = result.Must()
                .BeEnumerableOf <int>()
                .BeEqualTo(expected);
        }
        public void Select_With_ValidData_Must_Succeed(int[] source, Func <int, int, string> selector)
        {
            // Arrange
            var wrapped  = Wrap.AsValueEnumerable(source);
            var expected =
                System.Linq.Enumerable.Select(wrapped, selector);

            // Act
            var result = ValueEnumerableExtensions
                         .Select <Wrap.ValueEnumerableWrapper <int>, Wrap.Enumerator <int>, int, string>(wrapped, selector);

            // Assert
            _ = result.Must()
                .BeEnumerableOf <string>()
                .BeEqualTo(expected);
        }
Esempio n. 17
0
        public void ToArray_MemoryPool_Must_Succeed(int[] source)
        {
            // Arrange
            var pool    = MemoryPool <int> .Shared;
            var wrapped = Wrap
                          .AsValueEnumerable(source);
            var expected = Enumerable
                           .ToArray(source);

            // Act
            using var result = ValueEnumerableExtensions
                               .ToArray <Wrap.ValueEnumerableWrapper <int>, Wrap.Enumerator <int>, int>(wrapped, pool);

            // Assert
            _ = result.Memory
                .SequenceEqual(expected);
        }
        public void Where_With_ValidData_Must_Succeed(int[] source, Func <int, int, bool> predicate)
        {
            // Arrange
            var wrapped = Wrap
                          .AsValueEnumerable(source);
            var expected = Enumerable
                           .Where(wrapped, predicate);

            // Act
            var result = ValueEnumerableExtensions
                         .Where <Wrap.ValueEnumerableWrapper <int>, Wrap.Enumerator <int>, int>(wrapped, predicate);

            // Assert
            _ = result.Must()
                .BeEnumerableOf <int>()
                .BeEqualTo(expected);
        }
Esempio n. 19
0
        public void Single_With_Single_Must_Return_Some(int[] source)
        {
            // Arrange
            var wrapped = Wrap
                          .AsValueEnumerable(source);
            var expected = Enumerable
                           .Single(source);

            // Act
            var result = ValueEnumerableExtensions
                         .Single <Wrap.ValueEnumerableWrapper <int>, Wrap.Enumerator <int>, int>(wrapped);

            // Assert
            _ = result.Match(
                value => value.Must().BeEqualTo(expected),
                () => throw new Exception());
        }
Esempio n. 20
0
        public void ToArray_With_ValidData_Collections_Must_Succeed(int[] source)
        {
            // Arrange
            var wrapped = Wrap
                          .AsValueCollection(source);
            var expected = Enumerable
                           .ToArray(source);

            // Act
            var result = ValueEnumerableExtensions
                         .ToArray <Wrap.ValueCollectionWrapper <int>, Wrap.Enumerator <int>, int>(wrapped);

            // Assert
            _ = result.Must()
                .BeArrayOf <int>()
                .BeEqualTo(expected);
        }
Esempio n. 21
0
        public void AsValueEnumerable6_Enumerator2_With_ValidData_Must_Succeed(int[] source)
        {
            // Arrange
            var wrapped = Wrap
                          .AsValueReadOnlyList(source);

            // Act
            var result = ValueEnumerableExtensions
                         .AsValueEnumerable <Wrap.ValueReadOnlyListWrapper <int>, Wrap.Enumerator <int>, int>(
                wrapped,
                enumerable => enumerable.GetEnumerator());

            // Assert
            _ = result.Must()
                .BeEnumerableOf <int>()
                .BeEqualTo(source);
        }
        public void First_Predicate_Selector_With_Empty_Must_Return_None(int[] source, Predicate <int> predicate, NullableSelector <int, string> selector)
        {
            // Arrange
            var wrapped = Wrap
                          .AsValueEnumerable(source);

            // Act
            var result = ValueEnumerableExtensions
                         .Where <Wrap.ValueEnumerableWrapper <int>, Wrap.Enumerator <int>, int>(wrapped, predicate)
                         .Select(selector)
                         .First();

            // Assert
            _ = result.Must()
                .BeOfType <Option <string> >()
                .EvaluateTrue(option => option.IsNone);
        }
Esempio n. 23
0
        public void Count_PredicateAt_With_ValidData_Must_Succeed(int[] source, PredicateAt <int> predicate)
        {
            // Arrange
            var wrapped = Wrap
                          .AsValueEnumerable(source);
            var expected = Enumerable
                           .Where(source, predicate.AsFunc())
                           .Count();

            // Act
            var result = ValueEnumerableExtensions
                         .Where <Wrap.ValueEnumerableWrapper <int>, Wrap.Enumerator <int>, int>(wrapped, predicate)
                         .Count();

            // Assert
            _ = result.Must()
                .BeEqualTo(expected);
        }
Esempio n. 24
0
        public void First_Predicate_With_ValidData_Must_Return_Some(int[] source, Func <int, bool> predicate)
        {
            // Arrange
            var wrapped = Wrap
                          .AsValueEnumerable(source);
            var expected = Enumerable
                           .First(source, predicate);

            // Act
            var result = ValueEnumerableExtensions
                         .Where <Wrap.ValueEnumerableWrapper <int>, Wrap.Enumerator <int>, int>(wrapped, predicate)
                         .First();

            // Assert
            _ = result.Match(
                value => value.Must().BeEqualTo(expected),
                () => throw new Exception());
        }
Esempio n. 25
0
        public async ValueTask AsAsyncValueEnumerable_With_ToArrayAsync_Must_Succeed(int[] source)
        {
            // Arrange
            var wrapped = Wrap
                          .AsValueEnumerable(source);
            var expected = Enumerable
                           .ToArray(source);

            // Act
            var result = await ValueEnumerableExtensions
                         .AsAsyncValueEnumerable <Wrap.ValueEnumerableWrapper <int>, Wrap.Enumerator <int>, int>(wrapped)
                         .ToArrayAsync();

            // Assert
            _ = result.Must()
                .BeArrayOf <int>()
                .BeEqualTo(expected);
        }
Esempio n. 26
0
        public void WhereSelect_With_ValidData_Must_Succeed(int[] source, Predicate <int> predicate, NullableSelector <int, string> selector)
        {
            // Arrange
            var wrapped  = Wrap.AsValueEnumerable(source);
            var expected =
                System.Linq.Enumerable.Select(
                    System.Linq.Enumerable.Where(wrapped, predicate.AsFunc()), selector.AsFunc());

            // Act
            var result = ValueEnumerableExtensions
                         .Where <Wrap.ValueEnumerableWrapper <int>, Wrap.Enumerator <int>, int>(wrapped, predicate)
                         .Select(selector);

            // Assert
            _ = result.Must()
                .BeEnumerableOf <string>()
                .BeEqualTo(expected);
        }
Esempio n. 27
0
        public void Take_Take_With_ValidData_Must_Succeed(int[] source, int count0, int count1)
        {
            // Arrange
            var wrapped  = Wrap.AsValueEnumerable(source);
            var expected = Enumerable
                           .Take(wrapped, count0)
                           .Take(count1);

            // Act
            var result = ValueEnumerableExtensions
                         .Take <Wrap.ValueEnumerableWrapper <int>, Wrap.Enumerator <int>, int>(wrapped, count0)
                         .Take(count1);

            // Assert
            _ = result.Must()
                .BeEnumerableOf <int>()
                .BeEqualTo(expected);
        }
Esempio n. 28
0
        public void ToArray_SelectorAt_MemoryPool_With_ValidData_Must_Succeed(int[] source, Func <int, int, string> selector)
        {
            // Arrange
            var pool    = MemoryPool <string> .Shared;
            var wrapped = Wrap
                          .AsValueEnumerable(source);
            var expected = Enumerable
                           .Select(source, selector)
                           .ToArray();

            // Act
            using var result = ValueEnumerableExtensions
                               .Select <Wrap.ValueEnumerableWrapper <int>, Wrap.Enumerator <int>, int, string>(wrapped, selector)
                               .ToArray(pool);

            // Assert
            _ = result.Memory
                .SequenceEqual(expected);
        }
Esempio n. 29
0
        public void ToArray_PredicateAt_MemoryPool_With_ValidData_Must_Succeed(int[] source, Func <int, int, bool> predicate)
        {
            // Arrange
            var pool    = MemoryPool <int> .Shared;
            var wrapped = Wrap
                          .AsValueEnumerable(source);
            var expected = Enumerable
                           .Where(source, predicate)
                           .ToArray();

            // Act
            using var result = ValueEnumerableExtensions
                               .Where <Wrap.ValueEnumerableWrapper <int>, Wrap.Enumerator <int>, int>(wrapped, predicate)
                               .ToArray(pool);

            // Assert
            _ = result.Memory
                .SequenceEqual(expected);
        }
        public void Skip_Take_With_ValidData_Must_Succeed(int[] source, int skip, int take)
        {
            // Arrange
            var wrapped = Wrap
                          .AsValueEnumerable(source);
            var expected = Enumerable
                           .Skip(source, skip)
                           .Take(take);

            // Act
            var result = ValueEnumerableExtensions
                         .Skip <Wrap.ValueEnumerableWrapper <int>, Wrap.Enumerator <int>, int>(wrapped, skip)
                         .Take(take);

            // Assert
            _ = result.Must()
                .BeEnumerableOf <int>()
                .BeEqualTo(expected);
        }