Example #1
0
        public async ValueTask ContainsAsync_Predicate_With_Null_And_NotContains_Must_ReturnFalse(int[] source, Predicate <int> predicate)
        {
            // Arrange
            var value   = int.MaxValue;
            var wrapped = Wrap.AsAsyncValueEnumerable(source);

            // Act
            var result = await AsyncValueEnumerable
                         .Where <Wrap.AsyncValueEnumerable <int>, Wrap.AsyncEnumerator <int>, int>(wrapped, predicate.AsAsync())
                         .ContainsAsync(value, null);

            // Assert
            _ = result.Must()
                .BeFalse();
        }
        public void Where_Predicate_With_Null_Must_Throw()
        {
            // Arrange
            var enumerable = Wrap.AsAsyncValueEnumerable(new int[0]);
            var predicate  = (AsyncPredicate <int>)null;

            // Act
            Action action = () => _ = AsyncValueEnumerable
                                      .Where <Wrap.AsyncValueEnumerable <int>, Wrap.AsyncEnumerator <int>, int>(enumerable, predicate);

            // Assert
            _ = action.Must()
                .Throw <ArgumentNullException>()
                .EvaluateTrue(exception => exception.ParamName == "predicate");
        }
Example #3
0
        public async void FirstAsync_PredicateAt_With_Empty_Must_Return_None(int[] source, PredicateAt <int> predicate)
        {
            // Arrange
            var wrapped = Wrap
                          .AsAsyncValueEnumerable(source);

            // Act
            var result = await AsyncValueEnumerable
                         .Where <Wrap.AsyncValueEnumerable <int>, Wrap.AsyncEnumerator <int>, int>(wrapped, predicate.AsAsync())
                         .FirstAsync();

            // Assert
            _ = result.Must()
                .BeOfType <Option <int> >()
                .EvaluateTrue(option => option.IsNone);
        }
        public void SingleAsync_Predicate_With_Empty_Must_Throw(int[] source, Predicate <int> predicate)
        {
            // Arrange
            var wrapped = Wrap
                          .AsAsyncValueEnumerable(source);

            // Act
            Func <ValueTask> action = async() => _ = await AsyncValueEnumerable
                                                     .Where <Wrap.AsyncValueEnumerable <int>, Wrap.AsyncEnumerator <int>, int>(wrapped, predicate.AsAsync())
                                                     .SingleAsync();

            // Assert
            _ = action.Must()
                .Throw <InvalidOperationException>()
                .EvaluateTrue(exception => exception.Message == "Sequence contains no elements");
        }
Example #5
0
        public async ValueTask ContainsAsync_Predicate_Selector_With_Comparer_And_NotContains_Must_ReturnFalse(int[] source, Predicate <int> predicate, Selector <int, string> selector)
        {
            // Arrange
            var value   = "!";
            var wrapped = Wrap.AsAsyncValueEnumerable(source);

            // Act
            var result = await AsyncValueEnumerable
                         .Where <Wrap.AsyncValueEnumerable <int>, Wrap.AsyncEnumerator <int>, int>(wrapped, predicate.AsAsync())
                         .Select(selector.AsAsync())
                         .ContainsAsync(value, EqualityComparer <string> .Default);

            // Assert
            _ = result.Must()
                .BeFalse();
        }
        public async ValueTask SingleAsync_Predicate_With_SingleAsync_Must_Succeed(int[] source, Predicate <int> predicate)
        {
            // Arrange
            var wrapped = Wrap
                          .AsAsyncValueEnumerable(source);
            var expected =
                System.Linq.Enumerable.Single(source, predicate.AsFunc());

            // Act
            var result = await AsyncValueEnumerable
                         .Where <Wrap.AsyncValueEnumerable <int>, Wrap.AsyncEnumerator <int>, int>(wrapped, predicate.AsAsync())
                         .SingleAsync();

            // Assert
            _ = result.Must()
                .BeEqualTo(expected);
        }
Example #7
0
        public async ValueTask ContainsAsync_PredicateAt_With_Comparer_And_Contains_Must_ReturnTrue(int[] source, PredicateAt <int> predicate)
        {
            // Arrange
            var value =
                System.Linq.Enumerable.Last(
                    System.Linq.Enumerable.Where(source, predicate.AsFunc()));
            var wrapped = Wrap.AsAsyncValueEnumerable(source);

            // Act
            var result = await AsyncValueEnumerable
                         .Where <Wrap.AsyncValueEnumerable <int>, Wrap.AsyncEnumerator <int>, int>(wrapped, predicate.AsAsync())
                         .ContainsAsync(value, EqualityComparer <int> .Default);

            // Assert
            _ = result.Must()
                .BeTrue();
        }
Example #8
0
        public async void SingleAsync_Predicate_Selector_With_Multiple_Must_Return_None(int[] source, Predicate <int> predicate, Selector <int, string> selector)
        {
            // Arrange
            var wrapped = Wrap
                          .AsAsyncValueEnumerable(source);

            // Act
            var result = await AsyncValueEnumerable
                         .Where <Wrap.AsyncValueEnumerable <int>, Wrap.AsyncEnumerator <int>, int>(wrapped, predicate.AsAsync())
                         .Select(selector.AsAsync())
                         .SingleAsync();

            // Assert
            _ = result.Must()
                .BeOfType <Option <string> >()
                .EvaluateTrue(option => option.IsNone);
        }
Example #9
0
        public async ValueTask FirstAsync_Predicate_With_ValidData_Must_Return_Some(int[] source, Predicate <int> predicate)
        {
            // Arrange
            var wrapped = Wrap
                          .AsAsyncValueEnumerable(source);
            var expected =
                System.Linq.Enumerable.First(source, predicate.AsFunc());

            // Act
            var result = await AsyncValueEnumerable
                         .Where <Wrap.AsyncValueEnumerable <int>, Wrap.AsyncEnumerator <int>, int>(wrapped, predicate.AsAsync())
                         .FirstAsync();

            // Assert
            _ = result.Match(
                value => value.Must().BeEqualTo(expected),
                () => throw new Exception());
        }
Example #10
0
        public async ValueTask ContainsAsync_Predicate_Selector_With_Null_And_Contains_Must_ReturnTrue(int[] source, Predicate <int> predicate, Selector <int, string> selector)
        {
            // Arrange
            var value =
                System.Linq.Enumerable.Last(
                    System.Linq.Enumerable.Select(
                        System.Linq.Enumerable.Where(source, predicate.AsFunc()), selector.AsFunc()));
            var wrapped = Wrap.AsAsyncValueEnumerable(source);

            // Act
            var result = await AsyncValueEnumerable
                         .Where <Wrap.AsyncValueEnumerable <int>, Wrap.AsyncEnumerator <int>, int>(wrapped, predicate.AsAsync())
                         .Select(selector.AsAsync())
                         .ContainsAsync(value, null);

            // Assert
            _ = result.Must()
                .BeTrue();
        }
        public async ValueTask ToListAsync_PredicateAt_With_ValidData_Must_Succeed(int[] source, PredicateAt <int> predicate)
        {
            // Arrange
            var wrapped = Wrap
                          .AsAsyncValueEnumerable(source);
            var expected =
                System.Linq.Enumerable.ToList(
                    System.Linq.Enumerable.Where(source, predicate.AsFunc()));

            // Act
            var result = await AsyncValueEnumerable
                         .Where <Wrap.AsyncValueEnumerable <int>, Wrap.AsyncEnumerator <int>, int>(wrapped, predicate.AsAsync())
                         .ToListAsync();

            // Assert
            _ = result.Must()
                .BeOfType <List <int> >()
                .BeEnumerableOf <int>()
                .BeEqualTo(expected);
        }
        public async ValueTask ForEachAsync_Action_PredicateAt_With_ValidData_Must_Succeed(int[] source, PredicateAt <int> predicate)
        {
            // Arrange
            var wrapped  = Wrap.AsAsyncValueEnumerable(source);
            var result   = new List <int>();
            var expected = new List <int>();

            System.Linq.EnumerableEx.ForEach(
                System.Linq.Enumerable.Where(source, predicate.AsFunc()), item => expected.Add(item));

            // Act
            await AsyncValueEnumerable
            .Where <Wrap.AsyncValueEnumerable <int>, Wrap.AsyncEnumerator <int>, int>(wrapped, predicate.AsAsync())
            .ForEachAsync((item, cancellationToken) => { result.Add(item); return(new ValueTask()); });

            // Assert
            _ = result.Must()
                .BeEnumerableOf <int>()
                .BeEqualTo(expected);
        }
Example #13
0
        public async ValueTask SingleAsync_Predicate_Selector_With_SingleAsync_Must_Return_Some(int[] source, Predicate <int> predicate, Selector <int, string> selector)
        {
            // Arrange
            var wrapped = Wrap
                          .AsAsyncValueEnumerable(source);
            var expected =
                System.Linq.Enumerable.Single(
                    System.Linq.Enumerable.Select(
                        System.Linq.Enumerable.Where(source, predicate.AsFunc()), selector.AsFunc()));

            // Act
            var result = await AsyncValueEnumerable
                         .Where <Wrap.AsyncValueEnumerable <int>, Wrap.AsyncEnumerator <int>, int>(wrapped, predicate.AsAsync())
                         .Select(selector.AsAsync())
                         .SingleAsync();

            // Assert
            _ = result.Match(
                value => value.Must().BeEqualTo(expected),
                () => throw new Exception());
        }
        public async ValueTask ToArrayAsync_Predicate_Selector_With_ValidData_Must_Succeed(int[] source, Predicate <int> predicate, Selector <int, string> selector)
        {
            // Arrange
            var wrapped = Wrap
                          .AsAsyncValueEnumerable(source);
            var expected =
                System.Linq.Enumerable.ToArray(
                    System.Linq.Enumerable.Select(
                        System.Linq.Enumerable.Where(source, predicate.AsFunc()), selector.AsFunc()));

            // Act
            var result = await AsyncValueEnumerable
                         .Where <Wrap.AsyncValueEnumerable <int>, Wrap.AsyncEnumerator <int>, int>(wrapped, predicate.AsAsync())
                         .Select(selector.AsAsync())
                         .ToArrayAsync();

            // Assert
            _ = result.Must()
                .BeArrayOf <string>()
                .BeEqualTo(expected);
        }
Example #15
0
        public async ValueTask ElementAtAsync_Predicate_With_ValidData_Must_Return_Some(int[] source, Predicate <int> predicate)
        {
            // Arrange
            var wrapped  = Wrap.AsAsyncValueEnumerable(source);
            var expected =
                System.Linq.Enumerable.ToList(
                    System.Linq.Enumerable.Where(source, predicate.AsFunc()));

            for (var index = 0; index < expected.Count; index++)
            {
                // Act
                var result = await AsyncValueEnumerable
                             .Where <Wrap.AsyncValueEnumerable <int>, Wrap.AsyncEnumerator <int>, int>(wrapped, predicate.AsAsync())
                             .ElementAtAsync(index);

                // Assert
                _ = result.Match(
                    value => value.Must().BeEqualTo(expected[index]),
                    () => throw new Exception());
            }
        }
        public async ValueTask ForEachAsync_ActionAt_Predicate_Selector_With_ValidData_Must_Succeed(int[] source, Predicate <int> predicate, Selector <int, string> selector)
        {
            // Arrange
            var wrapped  = Wrap.AsAsyncValueEnumerable(source);
            var result   = new List <(string, int)>();
            var expected = new List <(string, int)>();

            System.Linq.EnumerableEx.ForEach(
                System.Linq.Enumerable.Select(
                    System.Linq.Enumerable.Where(source, predicate.AsFunc()), selector.AsFunc()), (item, index) => expected.Add((item, index)));

            // Act
            await AsyncValueEnumerable
            .Where <Wrap.AsyncValueEnumerable <int>, Wrap.AsyncEnumerator <int>, int>(wrapped, predicate.AsAsync())
            .Select(selector.AsAsync())
            .ForEachAsync((item, index, cancellationToken) => { result.Add((item, index)); return(new ValueTask()); });

            // Assert
            _ = result.Must()
                .BeEnumerableOf <(string, int)>()
                .BeEqualTo(expected);
        }
Example #17
0
        public async void ElementAtAsync_Predicate_With_OutOfRange_Must_Return_None(int[] source, Predicate <int> predicate)
        {
            // Arrange
            var wrapped = Wrap.AsAsyncValueEnumerable(source);

            // Act
            var optionNegative = await AsyncValueEnumerable
                                 .Where <Wrap.AsyncValueEnumerable <int>, Wrap.AsyncEnumerator <int>, int>(wrapped, predicate.AsAsync())
                                 .ElementAtAsync(-1);

            var optionTooLarge = await AsyncValueEnumerable
                                 .Where <Wrap.AsyncValueEnumerable <int>, Wrap.AsyncEnumerator <int>, int>(wrapped, predicate.AsAsync())
                                 .ElementAtAsync(source.Length);

            // Assert
            _ = optionNegative.Must()
                .BeOfType <Option <int> >()
                .EvaluateTrue(option => option.IsNone);
            _ = optionTooLarge.Must()
                .BeOfType <Option <int> >()
                .EvaluateTrue(option => option.IsNone);
        }