Example #1
0
        public async ValueTask FirstAsync_SelectorAt_With_ValidData_Must_Return_Some(int[] source, SelectorAt <int, string> selector)
        {
            // Arrange
            var wrapped = Wrap
                          .AsAsyncValueEnumerable(source);
            var expected =
                System.Linq.Enumerable.First(
                    System.Linq.Enumerable.Select(source, selector.AsFunc()));

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

            // Assert
            _ = result.Match(
                value => value.Must().BeEqualTo(expected),
                () => throw new Exception());
        }
Example #2
0
        public async ValueTask FirstAsync_PredicateAt_With_ValidData_Must_Return_Some(int[] source, PredicateAt <int> predicate)
        {
            // Arrange
            var wrapped = Wrap
                          .AsAsyncValueEnumerable(source);
            var expected =
                System.Linq.Enumerable.First(
                    System.Linq.Enumerable.Where(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 #3
0
        public async ValueTask ContainsAsync_Predicate_Selector_With_Comparer_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, EqualityComparer <string> .Default);

            // Assert
            _ = result.Must()
                .BeTrue();
        }
Example #4
0
        public void Skip_Take_With_ValidData_Must_Succeed(int[] source, int skip, int take)
        {
            // Arrange
            var wrapped = Wrap
                          .AsAsyncValueEnumerable(source);
            var expected = source
                           .Skip(skip)
                           .Take(take);

            // Act
            var result = wrapped.AsAsyncValueEnumerable()
                         .Skip(skip)
                         .Take(take);

            // Assert
            _ = result.Must()
                .BeAsyncEnumerableOf <int>()
                .BeEqualTo(expected);
        }
        public async ValueTask FirstAsync_Predicate_With_ValidData_Must_Return_Some(int[] source, Func <int, bool> predicate)
        {
            // Arrange
            var wrapped = Wrap
                          .AsAsyncValueEnumerable(source);
            var expected = source
                           .First(predicate);

            // Act
            var result = await wrapped.AsAsyncValueEnumerable()
                         .Where(predicate.AsAsync())
                         .FirstAsync()
                         .ConfigureAwait(false);

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

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

            // Assert
            _ = result.Must()
                .BeArrayOf <int>()
                .BeEqualTo(expected);
        }
Example #7
0
        public async ValueTask ToArrayAsync_Predicate_With_ValidData_Must_Succeed(int[] source, Func <int, bool> predicate)
        {
            // Arrange
            var wrapped = Wrap
                          .AsAsyncValueEnumerable(source);
            var expected = Enumerable
                           .Where(source, predicate)
                           .ToArray();

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

            // Assert
            _ = result.Must()
                .BeArrayOf <int>()
                .BeEqualTo(expected);
        }
Example #8
0
        public async ValueTask SingleAsync_SelectorAt_With_SingleAsync_Must_Return_Some(int[] source, Func <int, int, string> selector)
        {
            // Arrange
            var wrapped = Wrap
                          .AsAsyncValueEnumerable(source);
            var expected = Enumerable
                           .Select(source, selector)
                           .Single();

            // Act
            var result = await AsyncValueEnumerableExtensions
                         .Select <Wrap.AsyncValueEnumerableWrapper <int>, Wrap.AsyncEnumerator <int>, int, string>(wrapped, selector.AsAsync())
                         .SingleAsync();

            // Assert
            _ = result.Match(
                value => value.Must().BeEqualTo(expected),
                () => throw new Exception());
        }
Example #9
0
        public async ValueTask ToArrayAsync_SelectorAt_With_ValidData_Must_Succeed(int[] source, Func <int, int, string> selector)
        {
            // Arrange
            var wrapped = Wrap
                          .AsAsyncValueEnumerable(source);
            var expected = Enumerable
                           .Select(source, selector)
                           .ToArray();

            // Act
            var result = await AsyncValueEnumerableExtensions
                         .Select <Wrap.AsyncValueEnumerableWrapper <int>, Wrap.AsyncEnumerator <int>, int, string>(wrapped, selector.AsAsync())
                         .ToArrayAsync();

            // Assert
            _ = result.Must()
                .BeArrayOf <string>()
                .BeEqualTo(expected);
        }
Example #10
0
        public async ValueTask ToArrayAsync_SelectorAt_MemoryPool_Must_Succeed(int[] source, Func <int, int, string> selector)
        {
            // Arrange
            var pool    = MemoryPool <string> .Shared;
            var wrapped = Wrap
                          .AsAsyncValueEnumerable(source);
            var expected = Enumerable
                           .Select(source, selector)
                           .ToArray();

            // Act
            var result = await AsyncValueEnumerableExtensions
                         .Select <Wrap.AsyncValueEnumerableWrapper <int>, Wrap.AsyncEnumerator <int>, int, string>(wrapped, selector.AsAsync())
                         .ToArrayAsync(pool);

            // Assert
            _ = result.Memory
                .SequenceEqual(expected);
        }
Example #11
0
        public async ValueTask CountAsync_PredicateAt_With_ValidData_Must_Succeed(int[] source, Func <int, int, bool> predicate)
        {
            // Arrange
            var wrapped = Wrap
                          .AsAsyncValueEnumerable(source);
            var expected = source
                           .Where(predicate)
                           .Count();

            // Act
            var result = await wrapped.AsAsyncValueEnumerable()
                         .Where(predicate.AsAsync())
                         .CountAsync()
                         .ConfigureAwait(false);

            // Assert
            _ = result.Must()
                .BeEqualTo(expected);
        }
Example #12
0
        public async ValueTask SingleAsync_PredicateAt_With_SingleAsync_Must_Return_Some(int[] source, Func <int, int, bool> predicate)
        {
            // Arrange
            var wrapped = Wrap
                          .AsAsyncValueEnumerable(source);
            var expected = Enumerable
                           .Where(source, predicate)
                           .Single();

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

            // Assert
            _ = result.Match(
                value => value.Must().BeEqualTo(expected),
                () => throw new Exception());
        }
        public void Skip_Skip_With_ValidData_Must_Succeed(int[] source, int count0, int count1)
        {
            // Arrange
            var wrapped = Wrap
                          .AsAsyncValueEnumerable(source);
            var expected = Enumerable
                           .Skip(source, count0)
                           .Skip(count1);

            // Act
            var result = AsyncValueEnumerableExtensions
                         .Skip <Wrap.AsyncValueEnumerableWrapper <int>, Wrap.AsyncEnumerator <int>, int>(wrapped, count0)
                         .Skip(count1);

            // Assert
            _ = result.Must()
                .BeAsyncEnumerableOf <int>()
                .BeEqualTo(expected);
        }
Example #14
0
        public async ValueTask ToListAsync_With_ValidData_Must_Succeed(int[] source)
        {
            // Arrange
            var wrapped = Wrap
                          .AsAsyncValueEnumerable(source);
            var expected = source
                           .ToList();

            // Act
            var result = await wrapped.AsAsyncValueEnumerable()
                         .ToListAsync()
                         .ConfigureAwait(false);

            // Assert
            _ = result.Must()
                .BeOfType <List <int> >()
                .BeEnumerableOf <int>()
                .BeEqualTo(expected);
        }
Example #15
0
        public void Take_Take_With_ValidData_Must_Succeed(int[] source, int count0, int count1)
        {
            // Arrange
            var wrapped = Wrap
                          .AsAsyncValueEnumerable(source);
            var expected = source
                           .Take(count0)
                           .Take(count1);

            // Act
            var result = wrapped.AsAsyncValueEnumerable()
                         .Take(count0)
                         .Take(count1);

            // Assert
            _ = result.Must()
                .BeAsyncEnumerableOf <int>()
                .BeEqualTo(expected);
        }
Example #16
0
        public async ValueTask ToArrayAsync_Predicate_MemoryPool_Must_Succeed(int[] source, Func <int, bool> predicate)
        {
            // Arrange
            var pool    = MemoryPool <int> .Shared;
            var wrapped = Wrap
                          .AsAsyncValueEnumerable(source);
            var expected = Enumerable
                           .Where(source, predicate)
                           .ToArray();

            // Act
            var result = await AsyncValueEnumerableExtensions
                         .Where <Wrap.AsyncValueEnumerableWrapper <int>, Wrap.AsyncEnumerator <int>, int>(wrapped, predicate.AsAsync())
                         .ToArrayAsync(pool);

            // Assert
            _ = result.Memory
                .SequenceEqual(expected);
        }
        public async ValueTask ToListAsync_Selector_With_ValidData_Must_Succeed(int[] source, Selector <int, string> selector)
        {
            // Arrange
            var wrapped = Wrap
                          .AsAsyncValueEnumerable(source);
            var expected =
                System.Linq.Enumerable.ToList(
                    System.Linq.Enumerable.Select(source, selector.AsFunc()));

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

            // Assert
            _ = result.Must()
                .BeOfType <List <string> >()
                .BeEnumerableOf <string>()
                .BeEqualTo(expected);
        }
        public async ValueTask FirstAsync_SelectorAt_With_ValidData_Must_Return_Some(int[] source, Func <int, int, string> selector)
        {
            // Arrange
            var wrapped = Wrap
                          .AsAsyncValueEnumerable(source);
            var expected = source
                           .Select(selector)
                           .First();

            // Act
            var result = await wrapped.AsAsyncValueEnumerable()
                         .Select(selector.AsAsync())
                         .FirstAsync()
                         .ConfigureAwait(false);

            // Assert
            _ = result.Match(
                value => value.Must().BeEqualTo(expected),
                () => throw new Exception());
        }
        public async ValueTask WhereSelect_Sum_Predicate_With_ValidData_Must_Succeed(int[] source, Func <int, bool> predicate)
        {
            // Arrange
            var wrapped  = Wrap.AsAsyncValueEnumerable(source);
            var expected = source
                           .Where(predicate)
                           .Select(item => item)
                           .Sum();

            // Act
            var result = await wrapped.AsAsyncValueEnumerable()
                         .Where(predicate.AsAsync())
                         .Select((item, _) => new ValueTask <int>(item))
                         .SumAsync()
                         .ConfigureAwait(false);

            // Assert
            _ = result.Must()
                .BeEqualTo(expected);
        }
Example #20
0
        public async ValueTask ElementAtAsync_With_ValidData_Must_Return_Some(int[] source)
        {
            var wrapped = Wrap.AsAsyncValueEnumerable(source);

            for (var index = 0; index < source.Length; index++)
            {
                // Arrange
                var expected =
                    System.Linq.Enumerable.ElementAt(source, index);

                // Act
                var result = await AsyncValueEnumerable
                             .ElementAtAsync <Wrap.AsyncValueEnumerable <int>, Wrap.AsyncEnumerator <int>, int>(wrapped, index);

                // Assert
                _ = result.Match(
                    value => value.Must().BeEqualTo(expected),
                    () => throw new Exception());
            }
        }
Example #21
0
        public async void ElementAtAsync_With_OutOfRange_Must_Return_None(int[] source)
        {
            // Arrange
            var wrapped = Wrap.AsAsyncValueEnumerable(source);

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

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

            // Assert
            _ = optionNegative.Must()
                .BeOfType <Option <int> >()
                .EvaluateTrue(option => option.IsNone);
            _ = optionTooLarge.Must()
                .BeOfType <Option <int> >()
                .EvaluateTrue(option => option.IsNone);
        }
        public async ValueTask ForEachAsync_Action_Selector_With_ValidData_Must_Succeed(int[] source, Selector <int, string> selector)
        {
            // Arrange
            var wrapped  = Wrap.AsAsyncValueEnumerable(source);
            var result   = new List <string>();
            var expected = new List <string>();

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

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

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

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

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

            // Assert
            _ = result.Must()
                .BeEnumerableOf <(int, int)>()
                .BeEqualTo(expected);
        }
Example #24
0
        public async ValueTask ToArrayAsync_Predicate_MemoryPool_Must_Succeed(int[] source, Func <int, bool> predicate)
        {
            // Arrange
            var pool    = ArrayPool <int> .Shared;
            var wrapped = Wrap
                          .AsAsyncValueEnumerable(source);
            var expected = source
                           .Where(predicate)
                           .ToArray();

            // Act
            var result = await wrapped.AsAsyncValueEnumerable()
                         .Where(predicate.AsAsync())
                         .ToArrayAsync(pool)
                         .ConfigureAwait(false);

            // Assert
            _ = result.Memory
                .SequenceEqual(expected);
        }
Example #25
0
        public void AsAsyncValueEnumerable6_Enumerator2_With_ValidData_Must_Succeed(int[] source)
        {
            // Arrange
            var wrapped = Wrap
                          .AsAsyncValueEnumerable(source);

            // Act
            var result = AsyncValueEnumerableExtensions
                         .AsAsyncValueEnumerable <Wrap.AsyncValueEnumerableWrapper <int>, Wrap.AsyncEnumerator <int>, AsyncValueEnumerator <int>, int>(
                wrapped,
                (enumerable, _) => enumerable.GetAsyncEnumerator(),
                (enumerable, cancellationToken) =>
                new AsyncValueEnumerator <int>(
                    ((IAsyncEnumerable <int>)enumerable).GetAsyncEnumerator(cancellationToken)));

            // Assert
            _ = result.Must()
                .BeAsyncEnumerableOf <int>()
                .BeEqualTo(source);
        }
Example #26
0
        public async ValueTask ToArrayAsync_SelectorAt_MemoryPool_Must_Succeed(int[] source, Func <int, int, string> selector)
        {
            // Arrange
            var pool    = ArrayPool <string> .Shared;
            var wrapped = Wrap
                          .AsAsyncValueEnumerable(source);
            var expected = source
                           .Select(selector)
                           .ToArray();

            // Act
            var result = await wrapped.AsAsyncValueEnumerable()
                         .Select(selector.AsAsync())
                         .ToArrayAsync(pool)
                         .ConfigureAwait(false);

            // Assert
            _ = result.Memory
                .SequenceEqual(expected);
        }
Example #27
0
        public async ValueTask ToArrayAsync_SelectorAt_With_ValidData_Must_Succeed(int[] source, Func <int, int, string> selector)
        {
            // Arrange
            var wrapped = Wrap
                          .AsAsyncValueEnumerable(source);
            var expected = source
                           .Select(selector)
                           .ToArray();

            // Act
            var result = await wrapped.AsAsyncValueEnumerable()
                         .Select(selector.AsAsync())
                         .ToArrayAsync()
                         .ConfigureAwait(false);

            // Assert
            _ = result.Must()
                .BeArrayOf <string>()
                .BeEqualTo(expected);
        }
Example #28
0
        public async ValueTask ElementAtAsync_Selector_With_ValidData_Must_Return_Some(int[] source, NullableSelector <int, string> selector)
        {
            // Arrange
            var wrapped  = Wrap.AsAsyncValueEnumerable(source);
            var expected = Enumerable
                           .Select(source, selector.AsFunc())
                           .ToList();

            for (var index = 0; index < source.Length; index++)
            {
                // Act
                var result = await AsyncValueEnumerableExtensions
                             .Select <Wrap.AsyncValueEnumerableWrapper <int>, Wrap.AsyncEnumerator <int>, int, string>(wrapped, selector.AsAsync())
                             .ElementAtAsync(index);

                // Assert
                _ = result.Match(
                    value => value.Must().BeEqualTo(expected[index]),
                    () => throw new Exception());
            }
        }
Example #29
0
        public async ValueTask ElementAtAsync_PredicateAt_With_ValidData_Must_Return_Some(int[] source, PredicateAt <int> predicate)
        {
            // Arrange
            var wrapped  = Wrap.AsAsyncValueEnumerable(source);
            var expected = Enumerable
                           .Where(source, predicate.AsFunc())
                           .ToList();

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

                // Assert
                _ = result.Match(
                    value => value.Must().BeEqualTo(expected[index]),
                    () => throw new Exception());
            }
        }
Example #30
0
        public async ValueTask ToArrayAsync_Predicate_Selector_With_ValidData_Must_Succeed(int[] source, Predicate <int> predicate, NullableSelector <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 AsyncValueEnumerableExtensions
                         .Where <Wrap.AsyncValueEnumerableWrapper <int>, Wrap.AsyncEnumerator <int>, int>(wrapped, predicate.AsAsync())
                         .Select(selector.AsAsync())
                         .ToArrayAsync();

            // Assert
            _ = result.Must()
                .BeArrayOf <string>()
                .BeEqualTo(expected);
        }