public async void ElementAtAsync_Predicate_Selector_With_OutOfRange_Must_Return_None(int[] source, Predicate <int> predicate, NullableSelector <int, string> selector) { // Arrange var wrapped = Wrap .AsAsyncValueEnumerable(source); // Act var optionNegative = await AsyncValueEnumerableExtensions .Where <Wrap.AsyncValueEnumerableWrapper <int>, Wrap.AsyncEnumerator <int>, int>(wrapped, predicate.AsAsync()) .Select(selector.AsAsync()) .ElementAtAsync(-1); var optionTooLarge = await AsyncValueEnumerableExtensions .Where <Wrap.AsyncValueEnumerableWrapper <int>, Wrap.AsyncEnumerator <int>, int>(wrapped, predicate.AsAsync()) .Select(selector.AsAsync()) .ElementAtAsync(source.Length); // Assert _ = optionNegative.Must() .BeOfType <Option <string> >() .EvaluateTrue(option => option.IsNone); _ = optionTooLarge.Must() .BeOfType <Option <string> >() .EvaluateTrue(option => option.IsNone); }
public void Where_Predicate_With_Null_Must_Throw() { // Arrange var enumerable = Wrap.AsAsyncValueEnumerable(new int[0]); var predicate = (AsyncPredicateAt <int>)null; // Act Action action = () => _ = AsyncValueEnumerableExtensions .Where <Wrap.AsyncValueEnumerableWrapper <int>, Wrap.AsyncEnumerator <int>, int>(enumerable, predicate); // Assert _ = action.Must() .Throw <ArgumentNullException>() .EvaluateTrue(exception => exception.ParamName == "predicate"); }
public void WhereSelect_Selector_With_Null_Must_Throw() { // Arrange var enumerable = Wrap.AsAsyncValueEnumerable(new int[0]); var selector = (AsyncSelector <int, string>)null; // Act Action action = () => _ = AsyncValueEnumerableExtensions .Where <Wrap.AsyncValueEnumerableWrapper <int>, Wrap.AsyncEnumerator <int>, int>(enumerable, (_, __) => new ValueTask <bool>(true)) .Select(selector); // Assert _ = action.Must() .Throw <ArgumentNullException>() .EvaluateTrue(exception => exception.ParamName == "selector"); }
public async void SingleAsync_Predicate_With_Empty_Must_Return_None(int[] source, Func <int, bool> predicate) { // Arrange var wrapped = Wrap .AsAsyncValueEnumerable(source); // Act var result = await AsyncValueEnumerableExtensions .Where <Wrap.AsyncValueEnumerableWrapper <int>, Wrap.AsyncEnumerator <int>, int>(wrapped, predicate.AsAsync()) .SingleAsync(); // Assert _ = result.Must() .BeOfType <Option <int> >() .EvaluateTrue(option => option.IsNone); }
public void Where_Predicate_With_ValidData_Must_Succeed(int[] source, Func <int, int, bool> predicate) { // Arrange var wrapped = Wrap .AsAsyncValueEnumerable(source); var expected = Enumerable .Where(source, predicate); // Act var result = AsyncValueEnumerableExtensions .Where <Wrap.AsyncValueEnumerableWrapper <int>, Wrap.AsyncEnumerator <int>, int>(wrapped, predicate.AsAsync()); // Assert _ = result.Must() .BeAsyncEnumerableOf <int>() .BeEqualTo(expected); }
public async void FirstAsync_Predicate_Selector_With_Empty_Must_Return_None(int[] source, Predicate <int> predicate, NullableSelector <int, string> selector) { // Arrange var wrapped = Wrap .AsAsyncValueEnumerable(source); // Act var result = await AsyncValueEnumerableExtensions .Where <Wrap.AsyncValueEnumerableWrapper <int>, Wrap.AsyncEnumerator <int>, int>(wrapped, predicate.AsAsync()) .Select(selector.AsAsync()) .FirstAsync(); // Assert _ = result.Must() .BeOfType <Option <string> >() .EvaluateTrue(option => option.IsNone); }
public async ValueTask CountAsync_PredicateAt_With_ValidData_Must_Succeed(int[] source, PredicateAt <int> predicate) { // Arrange var wrapped = Wrap .AsAsyncValueEnumerable(source); var expected = Enumerable.Where(source, predicate.AsFunc()) .Count(); // Act var result = await AsyncValueEnumerableExtensions .Where <Wrap.AsyncValueEnumerableWrapper <int>, Wrap.AsyncEnumerator <int>, int>(wrapped, predicate.AsAsync()) .CountAsync(); // Assert _ = result.Must() .BeEqualTo(expected); }
public void WhereSelect_Predicate_With_ValidData_Must_Succeed(int[] source, Predicate <int> predicate, NullableSelector <int, string> selector) { // Arrange var wrapped = Wrap.AsAsyncValueEnumerable(source); var expected = System.Linq.Enumerable.Select( System.Linq.Enumerable.Where(source, predicate.AsFunc()), selector.AsFunc()); // Act var result = AsyncValueEnumerableExtensions .Where <Wrap.AsyncValueEnumerableWrapper <int>, Wrap.AsyncEnumerator <int>, int>(wrapped, predicate.AsAsync()) .Select(selector.AsAsync()); // Assert _ = result.Must() .BeAsyncEnumerableOf <string>() .BeEqualTo(expected); }
public async ValueTask SingleAsync_Predicate_With_SingleAsync_Must_Return_Some(int[] source, Func <int, bool> predicate) { // Arrange var wrapped = Wrap .AsAsyncValueEnumerable(source); var expected = Enumerable .Single(source, predicate); // 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 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 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()); } }
public async ValueTask ToArrayAsync_Predicate_Selector_With_ValidData_Must_Succeed(int[] source, Func <int, bool> predicate, Func <int, string> selector) { // Arrange var wrapped = Wrap .AsAsyncValueEnumerable(source); var expected = Enumerable .Where(source, predicate) .Select(selector) .ToArray(); // 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); }
public async ValueTask FirstAsync_Predicate_Selector_With_ValidData_Must_Return_Some(int[] source, Predicate <int> predicate, NullableSelector <int, string> selector) { // Arrange var wrapped = Wrap .AsAsyncValueEnumerable(source); var expected = Enumerable .Where(source, predicate.AsFunc()) .Select(selector.AsFunc()) .First(); // Act var result = await AsyncValueEnumerableExtensions .Where <Wrap.AsyncValueEnumerableWrapper <int>, Wrap.AsyncEnumerator <int>, int>(wrapped, predicate.AsAsync()) .Select(selector.AsAsync()) .FirstAsync(); // Assert _ = result.Match( value => value.Must().BeEqualTo(expected), () => throw new Exception()); }