// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the Apache 2.0 License. // See the LICENSE file in the project root for more information. using System; using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; using Xunit; namespace Tests { public class MinMax : AsyncEnumerableTests { [Fact] public async Task Min_Empty_Int32() { await AssertThrowsAsync(new int[0].ToAsyncEnumerable().MinAsync(CancellationToken.None).AsTask()); } [Fact] public async Task Min_Selector_Empty_Int32() { await AssertThrowsAsync(new object[0].ToAsyncEnumerable().MinAsync(_ => default(int), CancellationToken.None).AsTask()); } [Fact] public async Task Min_AsyncSelector_Empty_Int32() { await AssertThrowsAsync(new object[0].ToAsyncEnumerable().MinAsync(_ => default(ValueTask), CancellationToken.None).AsTask()); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Empty_Int32() { await AssertThrowsAsync(new object[0].ToAsyncEnumerable().MinAsync((x, ct) => default(ValueTask), CancellationToken.None).AsTask()); } #endif [Fact] public async Task Min_Empty_Nullable_Int32() { Assert.Null(await new int?[0].ToAsyncEnumerable().MinAsync(CancellationToken.None)); } [Fact] public async Task Min_Selector_Empty_Nullable_Int32() { Assert.Null(await new object[0].ToAsyncEnumerable().MinAsync(_ => default(int?), CancellationToken.None)); } [Fact] public async Task Min_AsyncSelector_Empty_Nullable_Int32() { Assert.Null(await new object[0].ToAsyncEnumerable().MinAsync(_ => default(ValueTask), CancellationToken.None)); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Empty_Nullable_Int32() { Assert.Null(await new object[0].ToAsyncEnumerable().MinAsync((x, ct) => default(ValueTask), CancellationToken.None)); } #endif [Fact] public async Task Min_Int32_1() { var input = new int[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Int32_1() { var input = new int[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Int32_1() { var input = new int[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Int32_1() { var input = new int[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Int32_Nullable_1_NoNull() { var input = new int?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Int32_Nullable_1_NoNull() { var input = new int?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Int32_Nullable_1_NoNull() { var input = new int?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Int32_Nullable_1_NoNull() { var input = new int?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Int32_Nullable_1_AllNull() { var input = Enumerable.Repeat(default(int?), 1); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_Selector_Int32_Nullable_1_AllNull() { var input = Enumerable.Repeat(default(int?), 1); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_AsyncSelector_Int32_Nullable_1_AllNull() { var input = Enumerable.Repeat(default(int?), 1); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Int32_Nullable_1_AllNull() { var input = Enumerable.Repeat(default(int?), 1); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Min_Int32_Nullable_1_SomeNull() { var input = new int?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Int32_Nullable_1_SomeNull() { var input = new int?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Int32_Nullable_1_SomeNull() { var input = new int?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Int32_Nullable_1_SomeNull() { var input = new int?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Int32_4() { var input = new int[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Int32_4() { var input = new int[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Int32_4() { var input = new int[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Int32_4() { var input = new int[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Int32_Nullable_4_NoNull() { var input = new int?[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Int32_Nullable_4_NoNull() { var input = new int?[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Int32_Nullable_4_NoNull() { var input = new int?[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Int32_Nullable_4_NoNull() { var input = new int?[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Int32_Nullable_4_AllNull() { var input = Enumerable.Repeat(default(int?), 4); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_Selector_Int32_Nullable_4_AllNull() { var input = Enumerable.Repeat(default(int?), 4); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_AsyncSelector_Int32_Nullable_4_AllNull() { var input = Enumerable.Repeat(default(int?), 4); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Int32_Nullable_4_AllNull() { var input = Enumerable.Repeat(default(int?), 4); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Min_Int32_Nullable_4_SomeNull() { var input = new int?[] { -2, null, -61, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Int32_Nullable_4_SomeNull() { var input = new int?[] { -2, null, -61, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Int32_Nullable_4_SomeNull() { var input = new int?[] { -2, null, -61, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Int32_Nullable_4_SomeNull() { var input = new int?[] { -2, null, -61, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Int32_8() { var input = new int[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Int32_8() { var input = new int[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Int32_8() { var input = new int[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Int32_8() { var input = new int[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Int32_Nullable_8_NoNull() { var input = new int?[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Int32_Nullable_8_NoNull() { var input = new int?[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Int32_Nullable_8_NoNull() { var input = new int?[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Int32_Nullable_8_NoNull() { var input = new int?[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Int32_Nullable_8_AllNull() { var input = Enumerable.Repeat(default(int?), 8); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_Selector_Int32_Nullable_8_AllNull() { var input = Enumerable.Repeat(default(int?), 8); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_AsyncSelector_Int32_Nullable_8_AllNull() { var input = Enumerable.Repeat(default(int?), 8); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Int32_Nullable_8_AllNull() { var input = Enumerable.Repeat(default(int?), 8); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Min_Int32_Nullable_8_SomeNull() { var input = new int?[] { -48, null, 25, null, 81, null, -10, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Int32_Nullable_8_SomeNull() { var input = new int?[] { -48, null, 25, null, 81, null, -10, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Int32_Nullable_8_SomeNull() { var input = new int?[] { -48, null, 25, null, 81, null, -10, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Int32_Nullable_8_SomeNull() { var input = new int?[] { -48, null, 25, null, 81, null, -10, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Int32_16() { var input = new int[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Int32_16() { var input = new int[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Int32_16() { var input = new int[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Int32_16() { var input = new int[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Int32_Nullable_16_NoNull() { var input = new int?[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Int32_Nullable_16_NoNull() { var input = new int?[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Int32_Nullable_16_NoNull() { var input = new int?[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Int32_Nullable_16_NoNull() { var input = new int?[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Int32_Nullable_16_AllNull() { var input = Enumerable.Repeat(default(int?), 16); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_Selector_Int32_Nullable_16_AllNull() { var input = Enumerable.Repeat(default(int?), 16); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_AsyncSelector_Int32_Nullable_16_AllNull() { var input = Enumerable.Repeat(default(int?), 16); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Int32_Nullable_16_AllNull() { var input = Enumerable.Repeat(default(int?), 16); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Min_Int32_Nullable_16_SomeNull() { var input = new int?[] { 59, null, -3, null, 20, null, -100, null, -77, null, -26, null, 19, null, -28, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Int32_Nullable_16_SomeNull() { var input = new int?[] { 59, null, -3, null, 20, null, -100, null, -77, null, -26, null, 19, null, -28, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Int32_Nullable_16_SomeNull() { var input = new int?[] { 59, null, -3, null, 20, null, -100, null, -77, null, -26, null, 19, null, -28, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Int32_Nullable_16_SomeNull() { var input = new int?[] { 59, null, -3, null, 20, null, -100, null, -77, null, -26, null, 19, null, -28, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Empty_Int64() { await AssertThrowsAsync(new long[0].ToAsyncEnumerable().MinAsync(CancellationToken.None).AsTask()); } [Fact] public async Task Min_Selector_Empty_Int64() { await AssertThrowsAsync(new object[0].ToAsyncEnumerable().MinAsync(_ => default(long), CancellationToken.None).AsTask()); } [Fact] public async Task Min_AsyncSelector_Empty_Int64() { await AssertThrowsAsync(new object[0].ToAsyncEnumerable().MinAsync(_ => default(ValueTask), CancellationToken.None).AsTask()); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Empty_Int64() { await AssertThrowsAsync(new object[0].ToAsyncEnumerable().MinAsync((x, ct) => default(ValueTask), CancellationToken.None).AsTask()); } #endif [Fact] public async Task Min_Empty_Nullable_Int64() { Assert.Null(await new long?[0].ToAsyncEnumerable().MinAsync(CancellationToken.None)); } [Fact] public async Task Min_Selector_Empty_Nullable_Int64() { Assert.Null(await new object[0].ToAsyncEnumerable().MinAsync(_ => default(long?), CancellationToken.None)); } [Fact] public async Task Min_AsyncSelector_Empty_Nullable_Int64() { Assert.Null(await new object[0].ToAsyncEnumerable().MinAsync(_ => default(ValueTask), CancellationToken.None)); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Empty_Nullable_Int64() { Assert.Null(await new object[0].ToAsyncEnumerable().MinAsync((x, ct) => default(ValueTask), CancellationToken.None)); } #endif [Fact] public async Task Min_Int64_1() { var input = new long[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Int64_1() { var input = new long[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Int64_1() { var input = new long[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Int64_1() { var input = new long[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Int64_Nullable_1_NoNull() { var input = new long?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Int64_Nullable_1_NoNull() { var input = new long?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Int64_Nullable_1_NoNull() { var input = new long?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Int64_Nullable_1_NoNull() { var input = new long?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Int64_Nullable_1_AllNull() { var input = Enumerable.Repeat(default(long?), 1); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_Selector_Int64_Nullable_1_AllNull() { var input = Enumerable.Repeat(default(long?), 1); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_AsyncSelector_Int64_Nullable_1_AllNull() { var input = Enumerable.Repeat(default(long?), 1); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Int64_Nullable_1_AllNull() { var input = Enumerable.Repeat(default(long?), 1); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Min_Int64_Nullable_1_SomeNull() { var input = new long?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Int64_Nullable_1_SomeNull() { var input = new long?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Int64_Nullable_1_SomeNull() { var input = new long?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Int64_Nullable_1_SomeNull() { var input = new long?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Int64_4() { var input = new long[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Int64_4() { var input = new long[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Int64_4() { var input = new long[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Int64_4() { var input = new long[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Int64_Nullable_4_NoNull() { var input = new long?[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Int64_Nullable_4_NoNull() { var input = new long?[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Int64_Nullable_4_NoNull() { var input = new long?[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Int64_Nullable_4_NoNull() { var input = new long?[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Int64_Nullable_4_AllNull() { var input = Enumerable.Repeat(default(long?), 4); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_Selector_Int64_Nullable_4_AllNull() { var input = Enumerable.Repeat(default(long?), 4); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_AsyncSelector_Int64_Nullable_4_AllNull() { var input = Enumerable.Repeat(default(long?), 4); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Int64_Nullable_4_AllNull() { var input = Enumerable.Repeat(default(long?), 4); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Min_Int64_Nullable_4_SomeNull() { var input = new long?[] { -2, null, -61, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Int64_Nullable_4_SomeNull() { var input = new long?[] { -2, null, -61, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Int64_Nullable_4_SomeNull() { var input = new long?[] { -2, null, -61, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Int64_Nullable_4_SomeNull() { var input = new long?[] { -2, null, -61, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Int64_8() { var input = new long[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Int64_8() { var input = new long[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Int64_8() { var input = new long[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Int64_8() { var input = new long[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Int64_Nullable_8_NoNull() { var input = new long?[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Int64_Nullable_8_NoNull() { var input = new long?[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Int64_Nullable_8_NoNull() { var input = new long?[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Int64_Nullable_8_NoNull() { var input = new long?[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Int64_Nullable_8_AllNull() { var input = Enumerable.Repeat(default(long?), 8); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_Selector_Int64_Nullable_8_AllNull() { var input = Enumerable.Repeat(default(long?), 8); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_AsyncSelector_Int64_Nullable_8_AllNull() { var input = Enumerable.Repeat(default(long?), 8); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Int64_Nullable_8_AllNull() { var input = Enumerable.Repeat(default(long?), 8); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Min_Int64_Nullable_8_SomeNull() { var input = new long?[] { -48, null, 25, null, 81, null, -10, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Int64_Nullable_8_SomeNull() { var input = new long?[] { -48, null, 25, null, 81, null, -10, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Int64_Nullable_8_SomeNull() { var input = new long?[] { -48, null, 25, null, 81, null, -10, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Int64_Nullable_8_SomeNull() { var input = new long?[] { -48, null, 25, null, 81, null, -10, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Int64_16() { var input = new long[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Int64_16() { var input = new long[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Int64_16() { var input = new long[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Int64_16() { var input = new long[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Int64_Nullable_16_NoNull() { var input = new long?[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Int64_Nullable_16_NoNull() { var input = new long?[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Int64_Nullable_16_NoNull() { var input = new long?[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Int64_Nullable_16_NoNull() { var input = new long?[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Int64_Nullable_16_AllNull() { var input = Enumerable.Repeat(default(long?), 16); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_Selector_Int64_Nullable_16_AllNull() { var input = Enumerable.Repeat(default(long?), 16); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_AsyncSelector_Int64_Nullable_16_AllNull() { var input = Enumerable.Repeat(default(long?), 16); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Int64_Nullable_16_AllNull() { var input = Enumerable.Repeat(default(long?), 16); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Min_Int64_Nullable_16_SomeNull() { var input = new long?[] { 59, null, -3, null, 20, null, -100, null, -77, null, -26, null, 19, null, -28, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Int64_Nullable_16_SomeNull() { var input = new long?[] { 59, null, -3, null, 20, null, -100, null, -77, null, -26, null, 19, null, -28, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Int64_Nullable_16_SomeNull() { var input = new long?[] { 59, null, -3, null, 20, null, -100, null, -77, null, -26, null, 19, null, -28, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Int64_Nullable_16_SomeNull() { var input = new long?[] { 59, null, -3, null, 20, null, -100, null, -77, null, -26, null, 19, null, -28, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Empty_Single() { await AssertThrowsAsync(new float[0].ToAsyncEnumerable().MinAsync(CancellationToken.None).AsTask()); } [Fact] public async Task Min_Selector_Empty_Single() { await AssertThrowsAsync(new object[0].ToAsyncEnumerable().MinAsync(_ => default(float), CancellationToken.None).AsTask()); } [Fact] public async Task Min_AsyncSelector_Empty_Single() { await AssertThrowsAsync(new object[0].ToAsyncEnumerable().MinAsync(_ => default(ValueTask), CancellationToken.None).AsTask()); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Empty_Single() { await AssertThrowsAsync(new object[0].ToAsyncEnumerable().MinAsync((x, ct) => default(ValueTask), CancellationToken.None).AsTask()); } #endif [Fact] public async Task Min_Empty_Nullable_Single() { Assert.Null(await new float?[0].ToAsyncEnumerable().MinAsync(CancellationToken.None)); } [Fact] public async Task Min_Selector_Empty_Nullable_Single() { Assert.Null(await new object[0].ToAsyncEnumerable().MinAsync(_ => default(float?), CancellationToken.None)); } [Fact] public async Task Min_AsyncSelector_Empty_Nullable_Single() { Assert.Null(await new object[0].ToAsyncEnumerable().MinAsync(_ => default(ValueTask), CancellationToken.None)); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Empty_Nullable_Single() { Assert.Null(await new object[0].ToAsyncEnumerable().MinAsync((x, ct) => default(ValueTask), CancellationToken.None)); } #endif [Fact] public async Task Min_Single_1() { var input = new float[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Single_1() { var input = new float[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Single_1() { var input = new float[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Single_1() { var input = new float[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Single_Nullable_1_NoNull() { var input = new float?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Single_Nullable_1_NoNull() { var input = new float?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Single_Nullable_1_NoNull() { var input = new float?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Single_Nullable_1_NoNull() { var input = new float?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Single_Nullable_1_AllNull() { var input = Enumerable.Repeat(default(float?), 1); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_Selector_Single_Nullable_1_AllNull() { var input = Enumerable.Repeat(default(float?), 1); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_AsyncSelector_Single_Nullable_1_AllNull() { var input = Enumerable.Repeat(default(float?), 1); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Single_Nullable_1_AllNull() { var input = Enumerable.Repeat(default(float?), 1); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Min_Single_Nullable_1_SomeNull() { var input = new float?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Single_Nullable_1_SomeNull() { var input = new float?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Single_Nullable_1_SomeNull() { var input = new float?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Single_Nullable_1_SomeNull() { var input = new float?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Single_4() { var input = new float[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Single_4() { var input = new float[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Single_4() { var input = new float[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Single_4() { var input = new float[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Single_Nullable_4_NoNull() { var input = new float?[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Single_Nullable_4_NoNull() { var input = new float?[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Single_Nullable_4_NoNull() { var input = new float?[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Single_Nullable_4_NoNull() { var input = new float?[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Single_Nullable_4_AllNull() { var input = Enumerable.Repeat(default(float?), 4); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_Selector_Single_Nullable_4_AllNull() { var input = Enumerable.Repeat(default(float?), 4); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_AsyncSelector_Single_Nullable_4_AllNull() { var input = Enumerable.Repeat(default(float?), 4); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Single_Nullable_4_AllNull() { var input = Enumerable.Repeat(default(float?), 4); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Min_Single_Nullable_4_SomeNull() { var input = new float?[] { -2, null, -61, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Single_Nullable_4_SomeNull() { var input = new float?[] { -2, null, -61, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Single_Nullable_4_SomeNull() { var input = new float?[] { -2, null, -61, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Single_Nullable_4_SomeNull() { var input = new float?[] { -2, null, -61, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Single_8() { var input = new float[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Single_8() { var input = new float[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Single_8() { var input = new float[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Single_8() { var input = new float[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Single_Nullable_8_NoNull() { var input = new float?[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Single_Nullable_8_NoNull() { var input = new float?[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Single_Nullable_8_NoNull() { var input = new float?[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Single_Nullable_8_NoNull() { var input = new float?[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Single_Nullable_8_AllNull() { var input = Enumerable.Repeat(default(float?), 8); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_Selector_Single_Nullable_8_AllNull() { var input = Enumerable.Repeat(default(float?), 8); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_AsyncSelector_Single_Nullable_8_AllNull() { var input = Enumerable.Repeat(default(float?), 8); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Single_Nullable_8_AllNull() { var input = Enumerable.Repeat(default(float?), 8); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Min_Single_Nullable_8_SomeNull() { var input = new float?[] { -48, null, 25, null, 81, null, -10, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Single_Nullable_8_SomeNull() { var input = new float?[] { -48, null, 25, null, 81, null, -10, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Single_Nullable_8_SomeNull() { var input = new float?[] { -48, null, 25, null, 81, null, -10, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Single_Nullable_8_SomeNull() { var input = new float?[] { -48, null, 25, null, 81, null, -10, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Single_16() { var input = new float[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Single_16() { var input = new float[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Single_16() { var input = new float[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Single_16() { var input = new float[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Single_Nullable_16_NoNull() { var input = new float?[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Single_Nullable_16_NoNull() { var input = new float?[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Single_Nullable_16_NoNull() { var input = new float?[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Single_Nullable_16_NoNull() { var input = new float?[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Single_Nullable_16_AllNull() { var input = Enumerable.Repeat(default(float?), 16); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_Selector_Single_Nullable_16_AllNull() { var input = Enumerable.Repeat(default(float?), 16); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_AsyncSelector_Single_Nullable_16_AllNull() { var input = Enumerable.Repeat(default(float?), 16); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Single_Nullable_16_AllNull() { var input = Enumerable.Repeat(default(float?), 16); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Min_Single_Nullable_16_SomeNull() { var input = new float?[] { 59, null, -3, null, 20, null, -100, null, -77, null, -26, null, 19, null, -28, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Single_Nullable_16_SomeNull() { var input = new float?[] { 59, null, -3, null, 20, null, -100, null, -77, null, -26, null, 19, null, -28, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Single_Nullable_16_SomeNull() { var input = new float?[] { 59, null, -3, null, 20, null, -100, null, -77, null, -26, null, 19, null, -28, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Single_Nullable_16_SomeNull() { var input = new float?[] { 59, null, -3, null, 20, null, -100, null, -77, null, -26, null, 19, null, -28, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Single_WithNaN_1() { var input = new float[] { float.NaN }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Single_WithNaN_1() { var input = new float[] { float.NaN }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Single_WithNaN_1() { var input = new float[] { float.NaN }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Single_WithNaN_1() { var input = new float[] { float.NaN }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Single_WithNaN_1_AllNaN() { var input = Enumerable.Repeat(float.NaN, 1); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_Selector_Single_WithNaN_1_AllNaN() { var input = Enumerable.Repeat(float.NaN, 1); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_AsyncSelector_Single_WithNaN_1_AllNaN() { var input = Enumerable.Repeat(float.NaN, 1); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Single_WithNaN_1_AllNaN() { var input = Enumerable.Repeat(float.NaN, 1); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Min_Single_WithNaN_Nullable_1_NoNull() { var input = new float?[] { float.NaN }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Single_WithNaN_Nullable_1_NoNull() { var input = new float?[] { float.NaN }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Single_WithNaN_Nullable_1_NoNull() { var input = new float?[] { float.NaN }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Single_WithNaN_Nullable_1_NoNull() { var input = new float?[] { float.NaN }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Single_WithNaN_Nullable_1_AllNull() { var input = Enumerable.Repeat(default(float?), 1); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_Selector_Single_WithNaN_Nullable_1_AllNull() { var input = Enumerable.Repeat(default(float?), 1); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_AsyncSelector_Single_WithNaN_Nullable_1_AllNull() { var input = Enumerable.Repeat(default(float?), 1); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Single_WithNaN_Nullable_1_AllNull() { var input = Enumerable.Repeat(default(float?), 1); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Min_Single_WithNaN_Nullable_1_AllNaN() { var input = Enumerable.Repeat(float.NaN, 1); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_Selector_Single_WithNaN_Nullable_1_AllNaN() { var input = Enumerable.Repeat(float.NaN, 1); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_AsyncSelector_Single_WithNaN_Nullable_1_AllNaN() { var input = Enumerable.Repeat(float.NaN, 1); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Single_WithNaN_Nullable_1_AllNaN() { var input = Enumerable.Repeat(float.NaN, 1); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Min_Single_WithNaN_Nullable_1_SomeNull() { var input = new float?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Single_WithNaN_Nullable_1_SomeNull() { var input = new float?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Single_WithNaN_Nullable_1_SomeNull() { var input = new float?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Single_WithNaN_Nullable_1_SomeNull() { var input = new float?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Single_WithNaN_4() { var input = new float[] { float.NaN, -78, float.NaN, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Single_WithNaN_4() { var input = new float[] { float.NaN, -78, float.NaN, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Single_WithNaN_4() { var input = new float[] { float.NaN, -78, float.NaN, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Single_WithNaN_4() { var input = new float[] { float.NaN, -78, float.NaN, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Single_WithNaN_4_AllNaN() { var input = Enumerable.Repeat(float.NaN, 4); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_Selector_Single_WithNaN_4_AllNaN() { var input = Enumerable.Repeat(float.NaN, 4); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_AsyncSelector_Single_WithNaN_4_AllNaN() { var input = Enumerable.Repeat(float.NaN, 4); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Single_WithNaN_4_AllNaN() { var input = Enumerable.Repeat(float.NaN, 4); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Min_Single_WithNaN_Nullable_4_NoNull() { var input = new float?[] { float.NaN, -78, float.NaN, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Single_WithNaN_Nullable_4_NoNull() { var input = new float?[] { float.NaN, -78, float.NaN, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Single_WithNaN_Nullable_4_NoNull() { var input = new float?[] { float.NaN, -78, float.NaN, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Single_WithNaN_Nullable_4_NoNull() { var input = new float?[] { float.NaN, -78, float.NaN, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Single_WithNaN_Nullable_4_AllNull() { var input = Enumerable.Repeat(default(float?), 4); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_Selector_Single_WithNaN_Nullable_4_AllNull() { var input = Enumerable.Repeat(default(float?), 4); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_AsyncSelector_Single_WithNaN_Nullable_4_AllNull() { var input = Enumerable.Repeat(default(float?), 4); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Single_WithNaN_Nullable_4_AllNull() { var input = Enumerable.Repeat(default(float?), 4); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Min_Single_WithNaN_Nullable_4_AllNaN() { var input = Enumerable.Repeat(float.NaN, 4); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_Selector_Single_WithNaN_Nullable_4_AllNaN() { var input = Enumerable.Repeat(float.NaN, 4); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_AsyncSelector_Single_WithNaN_Nullable_4_AllNaN() { var input = Enumerable.Repeat(float.NaN, 4); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Single_WithNaN_Nullable_4_AllNaN() { var input = Enumerable.Repeat(float.NaN, 4); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Min_Single_WithNaN_Nullable_4_SomeNull() { var input = new float?[] { -2, null, float.NaN, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Single_WithNaN_Nullable_4_SomeNull() { var input = new float?[] { -2, null, float.NaN, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Single_WithNaN_Nullable_4_SomeNull() { var input = new float?[] { -2, null, float.NaN, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Single_WithNaN_Nullable_4_SomeNull() { var input = new float?[] { -2, null, float.NaN, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Single_WithNaN_8() { var input = new float[] { float.NaN, -19, float.NaN, -46, float.NaN, -63, float.NaN, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Single_WithNaN_8() { var input = new float[] { float.NaN, -19, float.NaN, -46, float.NaN, -63, float.NaN, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Single_WithNaN_8() { var input = new float[] { float.NaN, -19, float.NaN, -46, float.NaN, -63, float.NaN, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Single_WithNaN_8() { var input = new float[] { float.NaN, -19, float.NaN, -46, float.NaN, -63, float.NaN, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Single_WithNaN_8_AllNaN() { var input = Enumerable.Repeat(float.NaN, 8); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_Selector_Single_WithNaN_8_AllNaN() { var input = Enumerable.Repeat(float.NaN, 8); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_AsyncSelector_Single_WithNaN_8_AllNaN() { var input = Enumerable.Repeat(float.NaN, 8); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Single_WithNaN_8_AllNaN() { var input = Enumerable.Repeat(float.NaN, 8); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Min_Single_WithNaN_Nullable_8_NoNull() { var input = new float?[] { float.NaN, -19, float.NaN, -46, float.NaN, -63, float.NaN, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Single_WithNaN_Nullable_8_NoNull() { var input = new float?[] { float.NaN, -19, float.NaN, -46, float.NaN, -63, float.NaN, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Single_WithNaN_Nullable_8_NoNull() { var input = new float?[] { float.NaN, -19, float.NaN, -46, float.NaN, -63, float.NaN, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Single_WithNaN_Nullable_8_NoNull() { var input = new float?[] { float.NaN, -19, float.NaN, -46, float.NaN, -63, float.NaN, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Single_WithNaN_Nullable_8_AllNull() { var input = Enumerable.Repeat(default(float?), 8); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_Selector_Single_WithNaN_Nullable_8_AllNull() { var input = Enumerable.Repeat(default(float?), 8); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_AsyncSelector_Single_WithNaN_Nullable_8_AllNull() { var input = Enumerable.Repeat(default(float?), 8); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Single_WithNaN_Nullable_8_AllNull() { var input = Enumerable.Repeat(default(float?), 8); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Min_Single_WithNaN_Nullable_8_AllNaN() { var input = Enumerable.Repeat(float.NaN, 8); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_Selector_Single_WithNaN_Nullable_8_AllNaN() { var input = Enumerable.Repeat(float.NaN, 8); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_AsyncSelector_Single_WithNaN_Nullable_8_AllNaN() { var input = Enumerable.Repeat(float.NaN, 8); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Single_WithNaN_Nullable_8_AllNaN() { var input = Enumerable.Repeat(float.NaN, 8); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Min_Single_WithNaN_Nullable_8_SomeNull() { var input = new float?[] { -48, null, float.NaN, -46, null, float.NaN, -10, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Single_WithNaN_Nullable_8_SomeNull() { var input = new float?[] { -48, null, float.NaN, -46, null, float.NaN, -10, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Single_WithNaN_Nullable_8_SomeNull() { var input = new float?[] { -48, null, float.NaN, -46, null, float.NaN, -10, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Single_WithNaN_Nullable_8_SomeNull() { var input = new float?[] { -48, null, float.NaN, -46, null, float.NaN, -10, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Single_WithNaN_16() { var input = new float[] { float.NaN, 98, float.NaN, 98, float.NaN, 63, float.NaN, 14, float.NaN, -86, float.NaN, -79, float.NaN, -84, float.NaN, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Single_WithNaN_16() { var input = new float[] { float.NaN, 98, float.NaN, 98, float.NaN, 63, float.NaN, 14, float.NaN, -86, float.NaN, -79, float.NaN, -84, float.NaN, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Single_WithNaN_16() { var input = new float[] { float.NaN, 98, float.NaN, 98, float.NaN, 63, float.NaN, 14, float.NaN, -86, float.NaN, -79, float.NaN, -84, float.NaN, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Single_WithNaN_16() { var input = new float[] { float.NaN, 98, float.NaN, 98, float.NaN, 63, float.NaN, 14, float.NaN, -86, float.NaN, -79, float.NaN, -84, float.NaN, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Single_WithNaN_16_AllNaN() { var input = Enumerable.Repeat(float.NaN, 16); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_Selector_Single_WithNaN_16_AllNaN() { var input = Enumerable.Repeat(float.NaN, 16); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_AsyncSelector_Single_WithNaN_16_AllNaN() { var input = Enumerable.Repeat(float.NaN, 16); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Single_WithNaN_16_AllNaN() { var input = Enumerable.Repeat(float.NaN, 16); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Min_Single_WithNaN_Nullable_16_NoNull() { var input = new float?[] { float.NaN, 98, float.NaN, 98, float.NaN, 63, float.NaN, 14, float.NaN, -86, float.NaN, -79, float.NaN, -84, float.NaN, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Single_WithNaN_Nullable_16_NoNull() { var input = new float?[] { float.NaN, 98, float.NaN, 98, float.NaN, 63, float.NaN, 14, float.NaN, -86, float.NaN, -79, float.NaN, -84, float.NaN, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Single_WithNaN_Nullable_16_NoNull() { var input = new float?[] { float.NaN, 98, float.NaN, 98, float.NaN, 63, float.NaN, 14, float.NaN, -86, float.NaN, -79, float.NaN, -84, float.NaN, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Single_WithNaN_Nullable_16_NoNull() { var input = new float?[] { float.NaN, 98, float.NaN, 98, float.NaN, 63, float.NaN, 14, float.NaN, -86, float.NaN, -79, float.NaN, -84, float.NaN, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Single_WithNaN_Nullable_16_AllNull() { var input = Enumerable.Repeat(default(float?), 16); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_Selector_Single_WithNaN_Nullable_16_AllNull() { var input = Enumerable.Repeat(default(float?), 16); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_AsyncSelector_Single_WithNaN_Nullable_16_AllNull() { var input = Enumerable.Repeat(default(float?), 16); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Single_WithNaN_Nullable_16_AllNull() { var input = Enumerable.Repeat(default(float?), 16); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Min_Single_WithNaN_Nullable_16_AllNaN() { var input = Enumerable.Repeat(float.NaN, 16); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_Selector_Single_WithNaN_Nullable_16_AllNaN() { var input = Enumerable.Repeat(float.NaN, 16); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_AsyncSelector_Single_WithNaN_Nullable_16_AllNaN() { var input = Enumerable.Repeat(float.NaN, 16); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Single_WithNaN_Nullable_16_AllNaN() { var input = Enumerable.Repeat(float.NaN, 16); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Min_Single_WithNaN_Nullable_16_SomeNull() { var input = new float?[] { 59, null, float.NaN, 98, null, float.NaN, -100, null, float.NaN, -86, null, float.NaN, 19, null, float.NaN, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Single_WithNaN_Nullable_16_SomeNull() { var input = new float?[] { 59, null, float.NaN, 98, null, float.NaN, -100, null, float.NaN, -86, null, float.NaN, 19, null, float.NaN, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Single_WithNaN_Nullable_16_SomeNull() { var input = new float?[] { 59, null, float.NaN, 98, null, float.NaN, -100, null, float.NaN, -86, null, float.NaN, 19, null, float.NaN, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Single_WithNaN_Nullable_16_SomeNull() { var input = new float?[] { 59, null, float.NaN, 98, null, float.NaN, -100, null, float.NaN, -86, null, float.NaN, 19, null, float.NaN, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Empty_Double() { await AssertThrowsAsync(new double[0].ToAsyncEnumerable().MinAsync(CancellationToken.None).AsTask()); } [Fact] public async Task Min_Selector_Empty_Double() { await AssertThrowsAsync(new object[0].ToAsyncEnumerable().MinAsync(_ => default(double), CancellationToken.None).AsTask()); } [Fact] public async Task Min_AsyncSelector_Empty_Double() { await AssertThrowsAsync(new object[0].ToAsyncEnumerable().MinAsync(_ => default(ValueTask), CancellationToken.None).AsTask()); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Empty_Double() { await AssertThrowsAsync(new object[0].ToAsyncEnumerable().MinAsync((x, ct) => default(ValueTask), CancellationToken.None).AsTask()); } #endif [Fact] public async Task Min_Empty_Nullable_Double() { Assert.Null(await new double?[0].ToAsyncEnumerable().MinAsync(CancellationToken.None)); } [Fact] public async Task Min_Selector_Empty_Nullable_Double() { Assert.Null(await new object[0].ToAsyncEnumerable().MinAsync(_ => default(double?), CancellationToken.None)); } [Fact] public async Task Min_AsyncSelector_Empty_Nullable_Double() { Assert.Null(await new object[0].ToAsyncEnumerable().MinAsync(_ => default(ValueTask), CancellationToken.None)); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Empty_Nullable_Double() { Assert.Null(await new object[0].ToAsyncEnumerable().MinAsync((x, ct) => default(ValueTask), CancellationToken.None)); } #endif [Fact] public async Task Min_Double_1() { var input = new double[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Double_1() { var input = new double[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Double_1() { var input = new double[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Double_1() { var input = new double[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Double_Nullable_1_NoNull() { var input = new double?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Double_Nullable_1_NoNull() { var input = new double?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Double_Nullable_1_NoNull() { var input = new double?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Double_Nullable_1_NoNull() { var input = new double?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Double_Nullable_1_AllNull() { var input = Enumerable.Repeat(default(double?), 1); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_Selector_Double_Nullable_1_AllNull() { var input = Enumerable.Repeat(default(double?), 1); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_AsyncSelector_Double_Nullable_1_AllNull() { var input = Enumerable.Repeat(default(double?), 1); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Double_Nullable_1_AllNull() { var input = Enumerable.Repeat(default(double?), 1); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Min_Double_Nullable_1_SomeNull() { var input = new double?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Double_Nullable_1_SomeNull() { var input = new double?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Double_Nullable_1_SomeNull() { var input = new double?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Double_Nullable_1_SomeNull() { var input = new double?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Double_4() { var input = new double[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Double_4() { var input = new double[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Double_4() { var input = new double[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Double_4() { var input = new double[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Double_Nullable_4_NoNull() { var input = new double?[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Double_Nullable_4_NoNull() { var input = new double?[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Double_Nullable_4_NoNull() { var input = new double?[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Double_Nullable_4_NoNull() { var input = new double?[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Double_Nullable_4_AllNull() { var input = Enumerable.Repeat(default(double?), 4); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_Selector_Double_Nullable_4_AllNull() { var input = Enumerable.Repeat(default(double?), 4); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_AsyncSelector_Double_Nullable_4_AllNull() { var input = Enumerable.Repeat(default(double?), 4); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Double_Nullable_4_AllNull() { var input = Enumerable.Repeat(default(double?), 4); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Min_Double_Nullable_4_SomeNull() { var input = new double?[] { -2, null, -61, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Double_Nullable_4_SomeNull() { var input = new double?[] { -2, null, -61, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Double_Nullable_4_SomeNull() { var input = new double?[] { -2, null, -61, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Double_Nullable_4_SomeNull() { var input = new double?[] { -2, null, -61, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Double_8() { var input = new double[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Double_8() { var input = new double[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Double_8() { var input = new double[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Double_8() { var input = new double[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Double_Nullable_8_NoNull() { var input = new double?[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Double_Nullable_8_NoNull() { var input = new double?[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Double_Nullable_8_NoNull() { var input = new double?[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Double_Nullable_8_NoNull() { var input = new double?[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Double_Nullable_8_AllNull() { var input = Enumerable.Repeat(default(double?), 8); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_Selector_Double_Nullable_8_AllNull() { var input = Enumerable.Repeat(default(double?), 8); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_AsyncSelector_Double_Nullable_8_AllNull() { var input = Enumerable.Repeat(default(double?), 8); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Double_Nullable_8_AllNull() { var input = Enumerable.Repeat(default(double?), 8); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Min_Double_Nullable_8_SomeNull() { var input = new double?[] { -48, null, 25, null, 81, null, -10, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Double_Nullable_8_SomeNull() { var input = new double?[] { -48, null, 25, null, 81, null, -10, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Double_Nullable_8_SomeNull() { var input = new double?[] { -48, null, 25, null, 81, null, -10, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Double_Nullable_8_SomeNull() { var input = new double?[] { -48, null, 25, null, 81, null, -10, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Double_16() { var input = new double[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Double_16() { var input = new double[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Double_16() { var input = new double[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Double_16() { var input = new double[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Double_Nullable_16_NoNull() { var input = new double?[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Double_Nullable_16_NoNull() { var input = new double?[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Double_Nullable_16_NoNull() { var input = new double?[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Double_Nullable_16_NoNull() { var input = new double?[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Double_Nullable_16_AllNull() { var input = Enumerable.Repeat(default(double?), 16); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_Selector_Double_Nullable_16_AllNull() { var input = Enumerable.Repeat(default(double?), 16); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_AsyncSelector_Double_Nullable_16_AllNull() { var input = Enumerable.Repeat(default(double?), 16); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Double_Nullable_16_AllNull() { var input = Enumerable.Repeat(default(double?), 16); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Min_Double_Nullable_16_SomeNull() { var input = new double?[] { 59, null, -3, null, 20, null, -100, null, -77, null, -26, null, 19, null, -28, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Double_Nullable_16_SomeNull() { var input = new double?[] { 59, null, -3, null, 20, null, -100, null, -77, null, -26, null, 19, null, -28, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Double_Nullable_16_SomeNull() { var input = new double?[] { 59, null, -3, null, 20, null, -100, null, -77, null, -26, null, 19, null, -28, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Double_Nullable_16_SomeNull() { var input = new double?[] { 59, null, -3, null, 20, null, -100, null, -77, null, -26, null, 19, null, -28, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Double_WithNaN_1() { var input = new double[] { double.NaN }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Double_WithNaN_1() { var input = new double[] { double.NaN }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Double_WithNaN_1() { var input = new double[] { double.NaN }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Double_WithNaN_1() { var input = new double[] { double.NaN }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Double_WithNaN_1_AllNaN() { var input = Enumerable.Repeat(double.NaN, 1); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_Selector_Double_WithNaN_1_AllNaN() { var input = Enumerable.Repeat(double.NaN, 1); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_AsyncSelector_Double_WithNaN_1_AllNaN() { var input = Enumerable.Repeat(double.NaN, 1); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Double_WithNaN_1_AllNaN() { var input = Enumerable.Repeat(double.NaN, 1); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Min_Double_WithNaN_Nullable_1_NoNull() { var input = new double?[] { double.NaN }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Double_WithNaN_Nullable_1_NoNull() { var input = new double?[] { double.NaN }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Double_WithNaN_Nullable_1_NoNull() { var input = new double?[] { double.NaN }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Double_WithNaN_Nullable_1_NoNull() { var input = new double?[] { double.NaN }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Double_WithNaN_Nullable_1_AllNull() { var input = Enumerable.Repeat(default(double?), 1); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_Selector_Double_WithNaN_Nullable_1_AllNull() { var input = Enumerable.Repeat(default(double?), 1); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_AsyncSelector_Double_WithNaN_Nullable_1_AllNull() { var input = Enumerable.Repeat(default(double?), 1); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Double_WithNaN_Nullable_1_AllNull() { var input = Enumerable.Repeat(default(double?), 1); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Min_Double_WithNaN_Nullable_1_AllNaN() { var input = Enumerable.Repeat(double.NaN, 1); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_Selector_Double_WithNaN_Nullable_1_AllNaN() { var input = Enumerable.Repeat(double.NaN, 1); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_AsyncSelector_Double_WithNaN_Nullable_1_AllNaN() { var input = Enumerable.Repeat(double.NaN, 1); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Double_WithNaN_Nullable_1_AllNaN() { var input = Enumerable.Repeat(double.NaN, 1); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Min_Double_WithNaN_Nullable_1_SomeNull() { var input = new double?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Double_WithNaN_Nullable_1_SomeNull() { var input = new double?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Double_WithNaN_Nullable_1_SomeNull() { var input = new double?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Double_WithNaN_Nullable_1_SomeNull() { var input = new double?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Double_WithNaN_4() { var input = new double[] { double.NaN, -78, double.NaN, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Double_WithNaN_4() { var input = new double[] { double.NaN, -78, double.NaN, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Double_WithNaN_4() { var input = new double[] { double.NaN, -78, double.NaN, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Double_WithNaN_4() { var input = new double[] { double.NaN, -78, double.NaN, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Double_WithNaN_4_AllNaN() { var input = Enumerable.Repeat(double.NaN, 4); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_Selector_Double_WithNaN_4_AllNaN() { var input = Enumerable.Repeat(double.NaN, 4); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_AsyncSelector_Double_WithNaN_4_AllNaN() { var input = Enumerable.Repeat(double.NaN, 4); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Double_WithNaN_4_AllNaN() { var input = Enumerable.Repeat(double.NaN, 4); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Min_Double_WithNaN_Nullable_4_NoNull() { var input = new double?[] { double.NaN, -78, double.NaN, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Double_WithNaN_Nullable_4_NoNull() { var input = new double?[] { double.NaN, -78, double.NaN, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Double_WithNaN_Nullable_4_NoNull() { var input = new double?[] { double.NaN, -78, double.NaN, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Double_WithNaN_Nullable_4_NoNull() { var input = new double?[] { double.NaN, -78, double.NaN, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Double_WithNaN_Nullable_4_AllNull() { var input = Enumerable.Repeat(default(double?), 4); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_Selector_Double_WithNaN_Nullable_4_AllNull() { var input = Enumerable.Repeat(default(double?), 4); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_AsyncSelector_Double_WithNaN_Nullable_4_AllNull() { var input = Enumerable.Repeat(default(double?), 4); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Double_WithNaN_Nullable_4_AllNull() { var input = Enumerable.Repeat(default(double?), 4); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Min_Double_WithNaN_Nullable_4_AllNaN() { var input = Enumerable.Repeat(double.NaN, 4); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_Selector_Double_WithNaN_Nullable_4_AllNaN() { var input = Enumerable.Repeat(double.NaN, 4); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_AsyncSelector_Double_WithNaN_Nullable_4_AllNaN() { var input = Enumerable.Repeat(double.NaN, 4); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Double_WithNaN_Nullable_4_AllNaN() { var input = Enumerable.Repeat(double.NaN, 4); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Min_Double_WithNaN_Nullable_4_SomeNull() { var input = new double?[] { -2, null, double.NaN, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Double_WithNaN_Nullable_4_SomeNull() { var input = new double?[] { -2, null, double.NaN, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Double_WithNaN_Nullable_4_SomeNull() { var input = new double?[] { -2, null, double.NaN, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Double_WithNaN_Nullable_4_SomeNull() { var input = new double?[] { -2, null, double.NaN, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Double_WithNaN_8() { var input = new double[] { double.NaN, -19, double.NaN, -46, double.NaN, -63, double.NaN, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Double_WithNaN_8() { var input = new double[] { double.NaN, -19, double.NaN, -46, double.NaN, -63, double.NaN, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Double_WithNaN_8() { var input = new double[] { double.NaN, -19, double.NaN, -46, double.NaN, -63, double.NaN, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Double_WithNaN_8() { var input = new double[] { double.NaN, -19, double.NaN, -46, double.NaN, -63, double.NaN, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Double_WithNaN_8_AllNaN() { var input = Enumerable.Repeat(double.NaN, 8); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_Selector_Double_WithNaN_8_AllNaN() { var input = Enumerable.Repeat(double.NaN, 8); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_AsyncSelector_Double_WithNaN_8_AllNaN() { var input = Enumerable.Repeat(double.NaN, 8); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Double_WithNaN_8_AllNaN() { var input = Enumerable.Repeat(double.NaN, 8); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Min_Double_WithNaN_Nullable_8_NoNull() { var input = new double?[] { double.NaN, -19, double.NaN, -46, double.NaN, -63, double.NaN, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Double_WithNaN_Nullable_8_NoNull() { var input = new double?[] { double.NaN, -19, double.NaN, -46, double.NaN, -63, double.NaN, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Double_WithNaN_Nullable_8_NoNull() { var input = new double?[] { double.NaN, -19, double.NaN, -46, double.NaN, -63, double.NaN, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Double_WithNaN_Nullable_8_NoNull() { var input = new double?[] { double.NaN, -19, double.NaN, -46, double.NaN, -63, double.NaN, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Double_WithNaN_Nullable_8_AllNull() { var input = Enumerable.Repeat(default(double?), 8); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_Selector_Double_WithNaN_Nullable_8_AllNull() { var input = Enumerable.Repeat(default(double?), 8); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_AsyncSelector_Double_WithNaN_Nullable_8_AllNull() { var input = Enumerable.Repeat(default(double?), 8); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Double_WithNaN_Nullable_8_AllNull() { var input = Enumerable.Repeat(default(double?), 8); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Min_Double_WithNaN_Nullable_8_AllNaN() { var input = Enumerable.Repeat(double.NaN, 8); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_Selector_Double_WithNaN_Nullable_8_AllNaN() { var input = Enumerable.Repeat(double.NaN, 8); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_AsyncSelector_Double_WithNaN_Nullable_8_AllNaN() { var input = Enumerable.Repeat(double.NaN, 8); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Double_WithNaN_Nullable_8_AllNaN() { var input = Enumerable.Repeat(double.NaN, 8); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Min_Double_WithNaN_Nullable_8_SomeNull() { var input = new double?[] { -48, null, double.NaN, -46, null, double.NaN, -10, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Double_WithNaN_Nullable_8_SomeNull() { var input = new double?[] { -48, null, double.NaN, -46, null, double.NaN, -10, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Double_WithNaN_Nullable_8_SomeNull() { var input = new double?[] { -48, null, double.NaN, -46, null, double.NaN, -10, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Double_WithNaN_Nullable_8_SomeNull() { var input = new double?[] { -48, null, double.NaN, -46, null, double.NaN, -10, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Double_WithNaN_16() { var input = new double[] { double.NaN, 98, double.NaN, 98, double.NaN, 63, double.NaN, 14, double.NaN, -86, double.NaN, -79, double.NaN, -84, double.NaN, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Double_WithNaN_16() { var input = new double[] { double.NaN, 98, double.NaN, 98, double.NaN, 63, double.NaN, 14, double.NaN, -86, double.NaN, -79, double.NaN, -84, double.NaN, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Double_WithNaN_16() { var input = new double[] { double.NaN, 98, double.NaN, 98, double.NaN, 63, double.NaN, 14, double.NaN, -86, double.NaN, -79, double.NaN, -84, double.NaN, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Double_WithNaN_16() { var input = new double[] { double.NaN, 98, double.NaN, 98, double.NaN, 63, double.NaN, 14, double.NaN, -86, double.NaN, -79, double.NaN, -84, double.NaN, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Double_WithNaN_16_AllNaN() { var input = Enumerable.Repeat(double.NaN, 16); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_Selector_Double_WithNaN_16_AllNaN() { var input = Enumerable.Repeat(double.NaN, 16); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_AsyncSelector_Double_WithNaN_16_AllNaN() { var input = Enumerable.Repeat(double.NaN, 16); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Double_WithNaN_16_AllNaN() { var input = Enumerable.Repeat(double.NaN, 16); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Min_Double_WithNaN_Nullable_16_NoNull() { var input = new double?[] { double.NaN, 98, double.NaN, 98, double.NaN, 63, double.NaN, 14, double.NaN, -86, double.NaN, -79, double.NaN, -84, double.NaN, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Double_WithNaN_Nullable_16_NoNull() { var input = new double?[] { double.NaN, 98, double.NaN, 98, double.NaN, 63, double.NaN, 14, double.NaN, -86, double.NaN, -79, double.NaN, -84, double.NaN, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Double_WithNaN_Nullable_16_NoNull() { var input = new double?[] { double.NaN, 98, double.NaN, 98, double.NaN, 63, double.NaN, 14, double.NaN, -86, double.NaN, -79, double.NaN, -84, double.NaN, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Double_WithNaN_Nullable_16_NoNull() { var input = new double?[] { double.NaN, 98, double.NaN, 98, double.NaN, 63, double.NaN, 14, double.NaN, -86, double.NaN, -79, double.NaN, -84, double.NaN, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Double_WithNaN_Nullable_16_AllNull() { var input = Enumerable.Repeat(default(double?), 16); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_Selector_Double_WithNaN_Nullable_16_AllNull() { var input = Enumerable.Repeat(default(double?), 16); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_AsyncSelector_Double_WithNaN_Nullable_16_AllNull() { var input = Enumerable.Repeat(default(double?), 16); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Double_WithNaN_Nullable_16_AllNull() { var input = Enumerable.Repeat(default(double?), 16); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Min_Double_WithNaN_Nullable_16_AllNaN() { var input = Enumerable.Repeat(double.NaN, 16); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_Selector_Double_WithNaN_Nullable_16_AllNaN() { var input = Enumerable.Repeat(double.NaN, 16); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_AsyncSelector_Double_WithNaN_Nullable_16_AllNaN() { var input = Enumerable.Repeat(double.NaN, 16); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Double_WithNaN_Nullable_16_AllNaN() { var input = Enumerable.Repeat(double.NaN, 16); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Min_Double_WithNaN_Nullable_16_SomeNull() { var input = new double?[] { 59, null, double.NaN, 98, null, double.NaN, -100, null, double.NaN, -86, null, double.NaN, 19, null, double.NaN, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Double_WithNaN_Nullable_16_SomeNull() { var input = new double?[] { 59, null, double.NaN, 98, null, double.NaN, -100, null, double.NaN, -86, null, double.NaN, 19, null, double.NaN, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Double_WithNaN_Nullable_16_SomeNull() { var input = new double?[] { 59, null, double.NaN, 98, null, double.NaN, -100, null, double.NaN, -86, null, double.NaN, 19, null, double.NaN, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Double_WithNaN_Nullable_16_SomeNull() { var input = new double?[] { 59, null, double.NaN, 98, null, double.NaN, -100, null, double.NaN, -86, null, double.NaN, 19, null, double.NaN, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Empty_Decimal() { await AssertThrowsAsync(new decimal[0].ToAsyncEnumerable().MinAsync(CancellationToken.None).AsTask()); } [Fact] public async Task Min_Selector_Empty_Decimal() { await AssertThrowsAsync(new object[0].ToAsyncEnumerable().MinAsync(_ => default(decimal), CancellationToken.None).AsTask()); } [Fact] public async Task Min_AsyncSelector_Empty_Decimal() { await AssertThrowsAsync(new object[0].ToAsyncEnumerable().MinAsync(_ => default(ValueTask), CancellationToken.None).AsTask()); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Empty_Decimal() { await AssertThrowsAsync(new object[0].ToAsyncEnumerable().MinAsync((x, ct) => default(ValueTask), CancellationToken.None).AsTask()); } #endif [Fact] public async Task Min_Empty_Nullable_Decimal() { Assert.Null(await new decimal?[0].ToAsyncEnumerable().MinAsync(CancellationToken.None)); } [Fact] public async Task Min_Selector_Empty_Nullable_Decimal() { Assert.Null(await new object[0].ToAsyncEnumerable().MinAsync(_ => default(decimal?), CancellationToken.None)); } [Fact] public async Task Min_AsyncSelector_Empty_Nullable_Decimal() { Assert.Null(await new object[0].ToAsyncEnumerable().MinAsync(_ => default(ValueTask), CancellationToken.None)); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Empty_Nullable_Decimal() { Assert.Null(await new object[0].ToAsyncEnumerable().MinAsync((x, ct) => default(ValueTask), CancellationToken.None)); } #endif [Fact] public async Task Min_Decimal_1() { var input = new decimal[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Decimal_1() { var input = new decimal[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Decimal_1() { var input = new decimal[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Decimal_1() { var input = new decimal[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Decimal_Nullable_1_NoNull() { var input = new decimal?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Decimal_Nullable_1_NoNull() { var input = new decimal?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Decimal_Nullable_1_NoNull() { var input = new decimal?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Decimal_Nullable_1_NoNull() { var input = new decimal?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Decimal_Nullable_1_AllNull() { var input = Enumerable.Repeat(default(decimal?), 1); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_Selector_Decimal_Nullable_1_AllNull() { var input = Enumerable.Repeat(default(decimal?), 1); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_AsyncSelector_Decimal_Nullable_1_AllNull() { var input = Enumerable.Repeat(default(decimal?), 1); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Decimal_Nullable_1_AllNull() { var input = Enumerable.Repeat(default(decimal?), 1); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Min_Decimal_Nullable_1_SomeNull() { var input = new decimal?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Decimal_Nullable_1_SomeNull() { var input = new decimal?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Decimal_Nullable_1_SomeNull() { var input = new decimal?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Decimal_Nullable_1_SomeNull() { var input = new decimal?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Decimal_4() { var input = new decimal[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Decimal_4() { var input = new decimal[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Decimal_4() { var input = new decimal[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Decimal_4() { var input = new decimal[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Decimal_Nullable_4_NoNull() { var input = new decimal?[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Decimal_Nullable_4_NoNull() { var input = new decimal?[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Decimal_Nullable_4_NoNull() { var input = new decimal?[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Decimal_Nullable_4_NoNull() { var input = new decimal?[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Decimal_Nullable_4_AllNull() { var input = Enumerable.Repeat(default(decimal?), 4); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_Selector_Decimal_Nullable_4_AllNull() { var input = Enumerable.Repeat(default(decimal?), 4); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_AsyncSelector_Decimal_Nullable_4_AllNull() { var input = Enumerable.Repeat(default(decimal?), 4); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Decimal_Nullable_4_AllNull() { var input = Enumerable.Repeat(default(decimal?), 4); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Min_Decimal_Nullable_4_SomeNull() { var input = new decimal?[] { -2, null, -61, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Decimal_Nullable_4_SomeNull() { var input = new decimal?[] { -2, null, -61, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Decimal_Nullable_4_SomeNull() { var input = new decimal?[] { -2, null, -61, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Decimal_Nullable_4_SomeNull() { var input = new decimal?[] { -2, null, -61, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Decimal_8() { var input = new decimal[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Decimal_8() { var input = new decimal[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Decimal_8() { var input = new decimal[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Decimal_8() { var input = new decimal[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Decimal_Nullable_8_NoNull() { var input = new decimal?[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Decimal_Nullable_8_NoNull() { var input = new decimal?[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Decimal_Nullable_8_NoNull() { var input = new decimal?[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Decimal_Nullable_8_NoNull() { var input = new decimal?[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Decimal_Nullable_8_AllNull() { var input = Enumerable.Repeat(default(decimal?), 8); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_Selector_Decimal_Nullable_8_AllNull() { var input = Enumerable.Repeat(default(decimal?), 8); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_AsyncSelector_Decimal_Nullable_8_AllNull() { var input = Enumerable.Repeat(default(decimal?), 8); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Decimal_Nullable_8_AllNull() { var input = Enumerable.Repeat(default(decimal?), 8); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Min_Decimal_Nullable_8_SomeNull() { var input = new decimal?[] { -48, null, 25, null, 81, null, -10, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Decimal_Nullable_8_SomeNull() { var input = new decimal?[] { -48, null, 25, null, 81, null, -10, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Decimal_Nullable_8_SomeNull() { var input = new decimal?[] { -48, null, 25, null, 81, null, -10, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Decimal_Nullable_8_SomeNull() { var input = new decimal?[] { -48, null, 25, null, 81, null, -10, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Decimal_16() { var input = new decimal[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Decimal_16() { var input = new decimal[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Decimal_16() { var input = new decimal[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Decimal_16() { var input = new decimal[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Decimal_Nullable_16_NoNull() { var input = new decimal?[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Decimal_Nullable_16_NoNull() { var input = new decimal?[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Decimal_Nullable_16_NoNull() { var input = new decimal?[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Decimal_Nullable_16_NoNull() { var input = new decimal?[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Min_Decimal_Nullable_16_AllNull() { var input = Enumerable.Repeat(default(decimal?), 16); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_Selector_Decimal_Nullable_16_AllNull() { var input = Enumerable.Repeat(default(decimal?), 16); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Min_AsyncSelector_Decimal_Nullable_16_AllNull() { var input = Enumerable.Repeat(default(decimal?), 16); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Decimal_Nullable_16_AllNull() { var input = Enumerable.Repeat(default(decimal?), 16); var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Min_Decimal_Nullable_16_SomeNull() { var input = new decimal?[] { 59, null, -3, null, 20, null, -100, null, -77, null, -26, null, 19, null, -28, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_Selector_Decimal_Nullable_16_SomeNull() { var input = new decimal?[] { 59, null, -3, null, 20, null, -100, null, -77, null, -26, null, 19, null, -28, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Min_AsyncSelector_Decimal_Nullable_16_SomeNull() { var input = new decimal?[] { 59, null, -3, null, 20, null, -100, null, -77, null, -26, null, 19, null, -28, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Min_AsyncSelectorWithCancellation_Decimal_Nullable_16_SomeNull() { var input = new decimal?[] { 59, null, -3, null, 20, null, -100, null, -77, null, -26, null, 19, null, -28, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Min(); var actual = await input.ToAsyncEnumerable().MinAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Empty_Int32() { await AssertThrowsAsync(new int[0].ToAsyncEnumerable().MaxAsync(CancellationToken.None).AsTask()); } [Fact] public async Task Max_Selector_Empty_Int32() { await AssertThrowsAsync(new object[0].ToAsyncEnumerable().MaxAsync(_ => default(int), CancellationToken.None).AsTask()); } [Fact] public async Task Max_AsyncSelector_Empty_Int32() { await AssertThrowsAsync(new object[0].ToAsyncEnumerable().MaxAsync(_ => default(ValueTask), CancellationToken.None).AsTask()); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Empty_Int32() { await AssertThrowsAsync(new object[0].ToAsyncEnumerable().MaxAsync((x, ct) => default(ValueTask), CancellationToken.None).AsTask()); } #endif [Fact] public async Task Max_Empty_Nullable_Int32() { Assert.Null(await new int?[0].ToAsyncEnumerable().MaxAsync(CancellationToken.None)); } [Fact] public async Task Max_Selector_Empty_Nullable_Int32() { Assert.Null(await new object[0].ToAsyncEnumerable().MaxAsync(_ => default(int?), CancellationToken.None)); } [Fact] public async Task Max_AsyncSelector_Empty_Nullable_Int32() { Assert.Null(await new object[0].ToAsyncEnumerable().MaxAsync(_ => default(ValueTask), CancellationToken.None)); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Empty_Nullable_Int32() { Assert.Null(await new object[0].ToAsyncEnumerable().MaxAsync((x, ct) => default(ValueTask), CancellationToken.None)); } #endif [Fact] public async Task Max_Int32_1() { var input = new int[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Int32_1() { var input = new int[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Int32_1() { var input = new int[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Int32_1() { var input = new int[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Int32_Nullable_1_NoNull() { var input = new int?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Int32_Nullable_1_NoNull() { var input = new int?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Int32_Nullable_1_NoNull() { var input = new int?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Int32_Nullable_1_NoNull() { var input = new int?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Int32_Nullable_1_AllNull() { var input = Enumerable.Repeat(default(int?), 1); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_Selector_Int32_Nullable_1_AllNull() { var input = Enumerable.Repeat(default(int?), 1); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_AsyncSelector_Int32_Nullable_1_AllNull() { var input = Enumerable.Repeat(default(int?), 1); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Int32_Nullable_1_AllNull() { var input = Enumerable.Repeat(default(int?), 1); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Max_Int32_Nullable_1_SomeNull() { var input = new int?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Int32_Nullable_1_SomeNull() { var input = new int?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Int32_Nullable_1_SomeNull() { var input = new int?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Int32_Nullable_1_SomeNull() { var input = new int?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Int32_4() { var input = new int[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Int32_4() { var input = new int[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Int32_4() { var input = new int[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Int32_4() { var input = new int[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Int32_Nullable_4_NoNull() { var input = new int?[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Int32_Nullable_4_NoNull() { var input = new int?[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Int32_Nullable_4_NoNull() { var input = new int?[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Int32_Nullable_4_NoNull() { var input = new int?[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Int32_Nullable_4_AllNull() { var input = Enumerable.Repeat(default(int?), 4); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_Selector_Int32_Nullable_4_AllNull() { var input = Enumerable.Repeat(default(int?), 4); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_AsyncSelector_Int32_Nullable_4_AllNull() { var input = Enumerable.Repeat(default(int?), 4); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Int32_Nullable_4_AllNull() { var input = Enumerable.Repeat(default(int?), 4); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Max_Int32_Nullable_4_SomeNull() { var input = new int?[] { -2, null, -61, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Int32_Nullable_4_SomeNull() { var input = new int?[] { -2, null, -61, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Int32_Nullable_4_SomeNull() { var input = new int?[] { -2, null, -61, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Int32_Nullable_4_SomeNull() { var input = new int?[] { -2, null, -61, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Int32_8() { var input = new int[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Int32_8() { var input = new int[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Int32_8() { var input = new int[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Int32_8() { var input = new int[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Int32_Nullable_8_NoNull() { var input = new int?[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Int32_Nullable_8_NoNull() { var input = new int?[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Int32_Nullable_8_NoNull() { var input = new int?[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Int32_Nullable_8_NoNull() { var input = new int?[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Int32_Nullable_8_AllNull() { var input = Enumerable.Repeat(default(int?), 8); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_Selector_Int32_Nullable_8_AllNull() { var input = Enumerable.Repeat(default(int?), 8); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_AsyncSelector_Int32_Nullable_8_AllNull() { var input = Enumerable.Repeat(default(int?), 8); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Int32_Nullable_8_AllNull() { var input = Enumerable.Repeat(default(int?), 8); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Max_Int32_Nullable_8_SomeNull() { var input = new int?[] { -48, null, 25, null, 81, null, -10, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Int32_Nullable_8_SomeNull() { var input = new int?[] { -48, null, 25, null, 81, null, -10, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Int32_Nullable_8_SomeNull() { var input = new int?[] { -48, null, 25, null, 81, null, -10, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Int32_Nullable_8_SomeNull() { var input = new int?[] { -48, null, 25, null, 81, null, -10, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Int32_16() { var input = new int[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Int32_16() { var input = new int[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Int32_16() { var input = new int[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Int32_16() { var input = new int[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Int32_Nullable_16_NoNull() { var input = new int?[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Int32_Nullable_16_NoNull() { var input = new int?[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Int32_Nullable_16_NoNull() { var input = new int?[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Int32_Nullable_16_NoNull() { var input = new int?[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Int32_Nullable_16_AllNull() { var input = Enumerable.Repeat(default(int?), 16); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_Selector_Int32_Nullable_16_AllNull() { var input = Enumerable.Repeat(default(int?), 16); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_AsyncSelector_Int32_Nullable_16_AllNull() { var input = Enumerable.Repeat(default(int?), 16); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Int32_Nullable_16_AllNull() { var input = Enumerable.Repeat(default(int?), 16); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Max_Int32_Nullable_16_SomeNull() { var input = new int?[] { 59, null, -3, null, 20, null, -100, null, -77, null, -26, null, 19, null, -28, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Int32_Nullable_16_SomeNull() { var input = new int?[] { 59, null, -3, null, 20, null, -100, null, -77, null, -26, null, 19, null, -28, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Int32_Nullable_16_SomeNull() { var input = new int?[] { 59, null, -3, null, 20, null, -100, null, -77, null, -26, null, 19, null, -28, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Int32_Nullable_16_SomeNull() { var input = new int?[] { 59, null, -3, null, 20, null, -100, null, -77, null, -26, null, 19, null, -28, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Empty_Int64() { await AssertThrowsAsync(new long[0].ToAsyncEnumerable().MaxAsync(CancellationToken.None).AsTask()); } [Fact] public async Task Max_Selector_Empty_Int64() { await AssertThrowsAsync(new object[0].ToAsyncEnumerable().MaxAsync(_ => default(long), CancellationToken.None).AsTask()); } [Fact] public async Task Max_AsyncSelector_Empty_Int64() { await AssertThrowsAsync(new object[0].ToAsyncEnumerable().MaxAsync(_ => default(ValueTask), CancellationToken.None).AsTask()); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Empty_Int64() { await AssertThrowsAsync(new object[0].ToAsyncEnumerable().MaxAsync((x, ct) => default(ValueTask), CancellationToken.None).AsTask()); } #endif [Fact] public async Task Max_Empty_Nullable_Int64() { Assert.Null(await new long?[0].ToAsyncEnumerable().MaxAsync(CancellationToken.None)); } [Fact] public async Task Max_Selector_Empty_Nullable_Int64() { Assert.Null(await new object[0].ToAsyncEnumerable().MaxAsync(_ => default(long?), CancellationToken.None)); } [Fact] public async Task Max_AsyncSelector_Empty_Nullable_Int64() { Assert.Null(await new object[0].ToAsyncEnumerable().MaxAsync(_ => default(ValueTask), CancellationToken.None)); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Empty_Nullable_Int64() { Assert.Null(await new object[0].ToAsyncEnumerable().MaxAsync((x, ct) => default(ValueTask), CancellationToken.None)); } #endif [Fact] public async Task Max_Int64_1() { var input = new long[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Int64_1() { var input = new long[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Int64_1() { var input = new long[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Int64_1() { var input = new long[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Int64_Nullable_1_NoNull() { var input = new long?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Int64_Nullable_1_NoNull() { var input = new long?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Int64_Nullable_1_NoNull() { var input = new long?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Int64_Nullable_1_NoNull() { var input = new long?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Int64_Nullable_1_AllNull() { var input = Enumerable.Repeat(default(long?), 1); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_Selector_Int64_Nullable_1_AllNull() { var input = Enumerable.Repeat(default(long?), 1); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_AsyncSelector_Int64_Nullable_1_AllNull() { var input = Enumerable.Repeat(default(long?), 1); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Int64_Nullable_1_AllNull() { var input = Enumerable.Repeat(default(long?), 1); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Max_Int64_Nullable_1_SomeNull() { var input = new long?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Int64_Nullable_1_SomeNull() { var input = new long?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Int64_Nullable_1_SomeNull() { var input = new long?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Int64_Nullable_1_SomeNull() { var input = new long?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Int64_4() { var input = new long[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Int64_4() { var input = new long[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Int64_4() { var input = new long[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Int64_4() { var input = new long[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Int64_Nullable_4_NoNull() { var input = new long?[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Int64_Nullable_4_NoNull() { var input = new long?[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Int64_Nullable_4_NoNull() { var input = new long?[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Int64_Nullable_4_NoNull() { var input = new long?[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Int64_Nullable_4_AllNull() { var input = Enumerable.Repeat(default(long?), 4); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_Selector_Int64_Nullable_4_AllNull() { var input = Enumerable.Repeat(default(long?), 4); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_AsyncSelector_Int64_Nullable_4_AllNull() { var input = Enumerable.Repeat(default(long?), 4); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Int64_Nullable_4_AllNull() { var input = Enumerable.Repeat(default(long?), 4); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Max_Int64_Nullable_4_SomeNull() { var input = new long?[] { -2, null, -61, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Int64_Nullable_4_SomeNull() { var input = new long?[] { -2, null, -61, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Int64_Nullable_4_SomeNull() { var input = new long?[] { -2, null, -61, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Int64_Nullable_4_SomeNull() { var input = new long?[] { -2, null, -61, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Int64_8() { var input = new long[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Int64_8() { var input = new long[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Int64_8() { var input = new long[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Int64_8() { var input = new long[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Int64_Nullable_8_NoNull() { var input = new long?[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Int64_Nullable_8_NoNull() { var input = new long?[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Int64_Nullable_8_NoNull() { var input = new long?[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Int64_Nullable_8_NoNull() { var input = new long?[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Int64_Nullable_8_AllNull() { var input = Enumerable.Repeat(default(long?), 8); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_Selector_Int64_Nullable_8_AllNull() { var input = Enumerable.Repeat(default(long?), 8); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_AsyncSelector_Int64_Nullable_8_AllNull() { var input = Enumerable.Repeat(default(long?), 8); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Int64_Nullable_8_AllNull() { var input = Enumerable.Repeat(default(long?), 8); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Max_Int64_Nullable_8_SomeNull() { var input = new long?[] { -48, null, 25, null, 81, null, -10, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Int64_Nullable_8_SomeNull() { var input = new long?[] { -48, null, 25, null, 81, null, -10, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Int64_Nullable_8_SomeNull() { var input = new long?[] { -48, null, 25, null, 81, null, -10, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Int64_Nullable_8_SomeNull() { var input = new long?[] { -48, null, 25, null, 81, null, -10, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Int64_16() { var input = new long[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Int64_16() { var input = new long[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Int64_16() { var input = new long[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Int64_16() { var input = new long[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Int64_Nullable_16_NoNull() { var input = new long?[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Int64_Nullable_16_NoNull() { var input = new long?[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Int64_Nullable_16_NoNull() { var input = new long?[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Int64_Nullable_16_NoNull() { var input = new long?[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Int64_Nullable_16_AllNull() { var input = Enumerable.Repeat(default(long?), 16); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_Selector_Int64_Nullable_16_AllNull() { var input = Enumerable.Repeat(default(long?), 16); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_AsyncSelector_Int64_Nullable_16_AllNull() { var input = Enumerable.Repeat(default(long?), 16); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Int64_Nullable_16_AllNull() { var input = Enumerable.Repeat(default(long?), 16); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Max_Int64_Nullable_16_SomeNull() { var input = new long?[] { 59, null, -3, null, 20, null, -100, null, -77, null, -26, null, 19, null, -28, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Int64_Nullable_16_SomeNull() { var input = new long?[] { 59, null, -3, null, 20, null, -100, null, -77, null, -26, null, 19, null, -28, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Int64_Nullable_16_SomeNull() { var input = new long?[] { 59, null, -3, null, 20, null, -100, null, -77, null, -26, null, 19, null, -28, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Int64_Nullable_16_SomeNull() { var input = new long?[] { 59, null, -3, null, 20, null, -100, null, -77, null, -26, null, 19, null, -28, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Empty_Single() { await AssertThrowsAsync(new float[0].ToAsyncEnumerable().MaxAsync(CancellationToken.None).AsTask()); } [Fact] public async Task Max_Selector_Empty_Single() { await AssertThrowsAsync(new object[0].ToAsyncEnumerable().MaxAsync(_ => default(float), CancellationToken.None).AsTask()); } [Fact] public async Task Max_AsyncSelector_Empty_Single() { await AssertThrowsAsync(new object[0].ToAsyncEnumerable().MaxAsync(_ => default(ValueTask), CancellationToken.None).AsTask()); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Empty_Single() { await AssertThrowsAsync(new object[0].ToAsyncEnumerable().MaxAsync((x, ct) => default(ValueTask), CancellationToken.None).AsTask()); } #endif [Fact] public async Task Max_Empty_Nullable_Single() { Assert.Null(await new float?[0].ToAsyncEnumerable().MaxAsync(CancellationToken.None)); } [Fact] public async Task Max_Selector_Empty_Nullable_Single() { Assert.Null(await new object[0].ToAsyncEnumerable().MaxAsync(_ => default(float?), CancellationToken.None)); } [Fact] public async Task Max_AsyncSelector_Empty_Nullable_Single() { Assert.Null(await new object[0].ToAsyncEnumerable().MaxAsync(_ => default(ValueTask), CancellationToken.None)); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Empty_Nullable_Single() { Assert.Null(await new object[0].ToAsyncEnumerable().MaxAsync((x, ct) => default(ValueTask), CancellationToken.None)); } #endif [Fact] public async Task Max_Single_1() { var input = new float[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Single_1() { var input = new float[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Single_1() { var input = new float[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Single_1() { var input = new float[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Single_Nullable_1_NoNull() { var input = new float?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Single_Nullable_1_NoNull() { var input = new float?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Single_Nullable_1_NoNull() { var input = new float?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Single_Nullable_1_NoNull() { var input = new float?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Single_Nullable_1_AllNull() { var input = Enumerable.Repeat(default(float?), 1); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_Selector_Single_Nullable_1_AllNull() { var input = Enumerable.Repeat(default(float?), 1); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_AsyncSelector_Single_Nullable_1_AllNull() { var input = Enumerable.Repeat(default(float?), 1); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Single_Nullable_1_AllNull() { var input = Enumerable.Repeat(default(float?), 1); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Max_Single_Nullable_1_SomeNull() { var input = new float?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Single_Nullable_1_SomeNull() { var input = new float?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Single_Nullable_1_SomeNull() { var input = new float?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Single_Nullable_1_SomeNull() { var input = new float?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Single_4() { var input = new float[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Single_4() { var input = new float[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Single_4() { var input = new float[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Single_4() { var input = new float[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Single_Nullable_4_NoNull() { var input = new float?[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Single_Nullable_4_NoNull() { var input = new float?[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Single_Nullable_4_NoNull() { var input = new float?[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Single_Nullable_4_NoNull() { var input = new float?[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Single_Nullable_4_AllNull() { var input = Enumerable.Repeat(default(float?), 4); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_Selector_Single_Nullable_4_AllNull() { var input = Enumerable.Repeat(default(float?), 4); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_AsyncSelector_Single_Nullable_4_AllNull() { var input = Enumerable.Repeat(default(float?), 4); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Single_Nullable_4_AllNull() { var input = Enumerable.Repeat(default(float?), 4); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Max_Single_Nullable_4_SomeNull() { var input = new float?[] { -2, null, -61, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Single_Nullable_4_SomeNull() { var input = new float?[] { -2, null, -61, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Single_Nullable_4_SomeNull() { var input = new float?[] { -2, null, -61, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Single_Nullable_4_SomeNull() { var input = new float?[] { -2, null, -61, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Single_8() { var input = new float[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Single_8() { var input = new float[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Single_8() { var input = new float[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Single_8() { var input = new float[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Single_Nullable_8_NoNull() { var input = new float?[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Single_Nullable_8_NoNull() { var input = new float?[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Single_Nullable_8_NoNull() { var input = new float?[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Single_Nullable_8_NoNull() { var input = new float?[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Single_Nullable_8_AllNull() { var input = Enumerable.Repeat(default(float?), 8); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_Selector_Single_Nullable_8_AllNull() { var input = Enumerable.Repeat(default(float?), 8); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_AsyncSelector_Single_Nullable_8_AllNull() { var input = Enumerable.Repeat(default(float?), 8); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Single_Nullable_8_AllNull() { var input = Enumerable.Repeat(default(float?), 8); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Max_Single_Nullable_8_SomeNull() { var input = new float?[] { -48, null, 25, null, 81, null, -10, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Single_Nullable_8_SomeNull() { var input = new float?[] { -48, null, 25, null, 81, null, -10, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Single_Nullable_8_SomeNull() { var input = new float?[] { -48, null, 25, null, 81, null, -10, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Single_Nullable_8_SomeNull() { var input = new float?[] { -48, null, 25, null, 81, null, -10, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Single_16() { var input = new float[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Single_16() { var input = new float[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Single_16() { var input = new float[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Single_16() { var input = new float[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Single_Nullable_16_NoNull() { var input = new float?[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Single_Nullable_16_NoNull() { var input = new float?[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Single_Nullable_16_NoNull() { var input = new float?[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Single_Nullable_16_NoNull() { var input = new float?[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Single_Nullable_16_AllNull() { var input = Enumerable.Repeat(default(float?), 16); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_Selector_Single_Nullable_16_AllNull() { var input = Enumerable.Repeat(default(float?), 16); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_AsyncSelector_Single_Nullable_16_AllNull() { var input = Enumerable.Repeat(default(float?), 16); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Single_Nullable_16_AllNull() { var input = Enumerable.Repeat(default(float?), 16); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Max_Single_Nullable_16_SomeNull() { var input = new float?[] { 59, null, -3, null, 20, null, -100, null, -77, null, -26, null, 19, null, -28, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Single_Nullable_16_SomeNull() { var input = new float?[] { 59, null, -3, null, 20, null, -100, null, -77, null, -26, null, 19, null, -28, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Single_Nullable_16_SomeNull() { var input = new float?[] { 59, null, -3, null, 20, null, -100, null, -77, null, -26, null, 19, null, -28, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Single_Nullable_16_SomeNull() { var input = new float?[] { 59, null, -3, null, 20, null, -100, null, -77, null, -26, null, 19, null, -28, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Single_WithNaN_1() { var input = new float[] { float.NaN }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Single_WithNaN_1() { var input = new float[] { float.NaN }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Single_WithNaN_1() { var input = new float[] { float.NaN }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Single_WithNaN_1() { var input = new float[] { float.NaN }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Single_WithNaN_1_AllNaN() { var input = Enumerable.Repeat(float.NaN, 1); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_Selector_Single_WithNaN_1_AllNaN() { var input = Enumerable.Repeat(float.NaN, 1); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_AsyncSelector_Single_WithNaN_1_AllNaN() { var input = Enumerable.Repeat(float.NaN, 1); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Single_WithNaN_1_AllNaN() { var input = Enumerable.Repeat(float.NaN, 1); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Max_Single_WithNaN_Nullable_1_NoNull() { var input = new float?[] { float.NaN }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Single_WithNaN_Nullable_1_NoNull() { var input = new float?[] { float.NaN }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Single_WithNaN_Nullable_1_NoNull() { var input = new float?[] { float.NaN }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Single_WithNaN_Nullable_1_NoNull() { var input = new float?[] { float.NaN }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Single_WithNaN_Nullable_1_AllNull() { var input = Enumerable.Repeat(default(float?), 1); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_Selector_Single_WithNaN_Nullable_1_AllNull() { var input = Enumerable.Repeat(default(float?), 1); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_AsyncSelector_Single_WithNaN_Nullable_1_AllNull() { var input = Enumerable.Repeat(default(float?), 1); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Single_WithNaN_Nullable_1_AllNull() { var input = Enumerable.Repeat(default(float?), 1); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Max_Single_WithNaN_Nullable_1_AllNaN() { var input = Enumerable.Repeat(float.NaN, 1); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_Selector_Single_WithNaN_Nullable_1_AllNaN() { var input = Enumerable.Repeat(float.NaN, 1); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_AsyncSelector_Single_WithNaN_Nullable_1_AllNaN() { var input = Enumerable.Repeat(float.NaN, 1); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Single_WithNaN_Nullable_1_AllNaN() { var input = Enumerable.Repeat(float.NaN, 1); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Max_Single_WithNaN_Nullable_1_SomeNull() { var input = new float?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Single_WithNaN_Nullable_1_SomeNull() { var input = new float?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Single_WithNaN_Nullable_1_SomeNull() { var input = new float?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Single_WithNaN_Nullable_1_SomeNull() { var input = new float?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Single_WithNaN_4() { var input = new float[] { float.NaN, -78, float.NaN, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Single_WithNaN_4() { var input = new float[] { float.NaN, -78, float.NaN, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Single_WithNaN_4() { var input = new float[] { float.NaN, -78, float.NaN, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Single_WithNaN_4() { var input = new float[] { float.NaN, -78, float.NaN, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Single_WithNaN_4_AllNaN() { var input = Enumerable.Repeat(float.NaN, 4); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_Selector_Single_WithNaN_4_AllNaN() { var input = Enumerable.Repeat(float.NaN, 4); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_AsyncSelector_Single_WithNaN_4_AllNaN() { var input = Enumerable.Repeat(float.NaN, 4); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Single_WithNaN_4_AllNaN() { var input = Enumerable.Repeat(float.NaN, 4); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Max_Single_WithNaN_Nullable_4_NoNull() { var input = new float?[] { float.NaN, -78, float.NaN, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Single_WithNaN_Nullable_4_NoNull() { var input = new float?[] { float.NaN, -78, float.NaN, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Single_WithNaN_Nullable_4_NoNull() { var input = new float?[] { float.NaN, -78, float.NaN, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Single_WithNaN_Nullable_4_NoNull() { var input = new float?[] { float.NaN, -78, float.NaN, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Single_WithNaN_Nullable_4_AllNull() { var input = Enumerable.Repeat(default(float?), 4); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_Selector_Single_WithNaN_Nullable_4_AllNull() { var input = Enumerable.Repeat(default(float?), 4); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_AsyncSelector_Single_WithNaN_Nullable_4_AllNull() { var input = Enumerable.Repeat(default(float?), 4); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Single_WithNaN_Nullable_4_AllNull() { var input = Enumerable.Repeat(default(float?), 4); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Max_Single_WithNaN_Nullable_4_AllNaN() { var input = Enumerable.Repeat(float.NaN, 4); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_Selector_Single_WithNaN_Nullable_4_AllNaN() { var input = Enumerable.Repeat(float.NaN, 4); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_AsyncSelector_Single_WithNaN_Nullable_4_AllNaN() { var input = Enumerable.Repeat(float.NaN, 4); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Single_WithNaN_Nullable_4_AllNaN() { var input = Enumerable.Repeat(float.NaN, 4); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Max_Single_WithNaN_Nullable_4_SomeNull() { var input = new float?[] { -2, null, float.NaN, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Single_WithNaN_Nullable_4_SomeNull() { var input = new float?[] { -2, null, float.NaN, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Single_WithNaN_Nullable_4_SomeNull() { var input = new float?[] { -2, null, float.NaN, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Single_WithNaN_Nullable_4_SomeNull() { var input = new float?[] { -2, null, float.NaN, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Single_WithNaN_8() { var input = new float[] { float.NaN, -19, float.NaN, -46, float.NaN, -63, float.NaN, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Single_WithNaN_8() { var input = new float[] { float.NaN, -19, float.NaN, -46, float.NaN, -63, float.NaN, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Single_WithNaN_8() { var input = new float[] { float.NaN, -19, float.NaN, -46, float.NaN, -63, float.NaN, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Single_WithNaN_8() { var input = new float[] { float.NaN, -19, float.NaN, -46, float.NaN, -63, float.NaN, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Single_WithNaN_8_AllNaN() { var input = Enumerable.Repeat(float.NaN, 8); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_Selector_Single_WithNaN_8_AllNaN() { var input = Enumerable.Repeat(float.NaN, 8); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_AsyncSelector_Single_WithNaN_8_AllNaN() { var input = Enumerable.Repeat(float.NaN, 8); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Single_WithNaN_8_AllNaN() { var input = Enumerable.Repeat(float.NaN, 8); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Max_Single_WithNaN_Nullable_8_NoNull() { var input = new float?[] { float.NaN, -19, float.NaN, -46, float.NaN, -63, float.NaN, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Single_WithNaN_Nullable_8_NoNull() { var input = new float?[] { float.NaN, -19, float.NaN, -46, float.NaN, -63, float.NaN, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Single_WithNaN_Nullable_8_NoNull() { var input = new float?[] { float.NaN, -19, float.NaN, -46, float.NaN, -63, float.NaN, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Single_WithNaN_Nullable_8_NoNull() { var input = new float?[] { float.NaN, -19, float.NaN, -46, float.NaN, -63, float.NaN, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Single_WithNaN_Nullable_8_AllNull() { var input = Enumerable.Repeat(default(float?), 8); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_Selector_Single_WithNaN_Nullable_8_AllNull() { var input = Enumerable.Repeat(default(float?), 8); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_AsyncSelector_Single_WithNaN_Nullable_8_AllNull() { var input = Enumerable.Repeat(default(float?), 8); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Single_WithNaN_Nullable_8_AllNull() { var input = Enumerable.Repeat(default(float?), 8); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Max_Single_WithNaN_Nullable_8_AllNaN() { var input = Enumerable.Repeat(float.NaN, 8); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_Selector_Single_WithNaN_Nullable_8_AllNaN() { var input = Enumerable.Repeat(float.NaN, 8); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_AsyncSelector_Single_WithNaN_Nullable_8_AllNaN() { var input = Enumerable.Repeat(float.NaN, 8); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Single_WithNaN_Nullable_8_AllNaN() { var input = Enumerable.Repeat(float.NaN, 8); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Max_Single_WithNaN_Nullable_8_SomeNull() { var input = new float?[] { -48, null, float.NaN, -46, null, float.NaN, -10, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Single_WithNaN_Nullable_8_SomeNull() { var input = new float?[] { -48, null, float.NaN, -46, null, float.NaN, -10, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Single_WithNaN_Nullable_8_SomeNull() { var input = new float?[] { -48, null, float.NaN, -46, null, float.NaN, -10, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Single_WithNaN_Nullable_8_SomeNull() { var input = new float?[] { -48, null, float.NaN, -46, null, float.NaN, -10, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Single_WithNaN_16() { var input = new float[] { float.NaN, 98, float.NaN, 98, float.NaN, 63, float.NaN, 14, float.NaN, -86, float.NaN, -79, float.NaN, -84, float.NaN, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Single_WithNaN_16() { var input = new float[] { float.NaN, 98, float.NaN, 98, float.NaN, 63, float.NaN, 14, float.NaN, -86, float.NaN, -79, float.NaN, -84, float.NaN, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Single_WithNaN_16() { var input = new float[] { float.NaN, 98, float.NaN, 98, float.NaN, 63, float.NaN, 14, float.NaN, -86, float.NaN, -79, float.NaN, -84, float.NaN, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Single_WithNaN_16() { var input = new float[] { float.NaN, 98, float.NaN, 98, float.NaN, 63, float.NaN, 14, float.NaN, -86, float.NaN, -79, float.NaN, -84, float.NaN, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Single_WithNaN_16_AllNaN() { var input = Enumerable.Repeat(float.NaN, 16); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_Selector_Single_WithNaN_16_AllNaN() { var input = Enumerable.Repeat(float.NaN, 16); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_AsyncSelector_Single_WithNaN_16_AllNaN() { var input = Enumerable.Repeat(float.NaN, 16); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Single_WithNaN_16_AllNaN() { var input = Enumerable.Repeat(float.NaN, 16); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Max_Single_WithNaN_Nullable_16_NoNull() { var input = new float?[] { float.NaN, 98, float.NaN, 98, float.NaN, 63, float.NaN, 14, float.NaN, -86, float.NaN, -79, float.NaN, -84, float.NaN, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Single_WithNaN_Nullable_16_NoNull() { var input = new float?[] { float.NaN, 98, float.NaN, 98, float.NaN, 63, float.NaN, 14, float.NaN, -86, float.NaN, -79, float.NaN, -84, float.NaN, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Single_WithNaN_Nullable_16_NoNull() { var input = new float?[] { float.NaN, 98, float.NaN, 98, float.NaN, 63, float.NaN, 14, float.NaN, -86, float.NaN, -79, float.NaN, -84, float.NaN, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Single_WithNaN_Nullable_16_NoNull() { var input = new float?[] { float.NaN, 98, float.NaN, 98, float.NaN, 63, float.NaN, 14, float.NaN, -86, float.NaN, -79, float.NaN, -84, float.NaN, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Single_WithNaN_Nullable_16_AllNull() { var input = Enumerable.Repeat(default(float?), 16); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_Selector_Single_WithNaN_Nullable_16_AllNull() { var input = Enumerable.Repeat(default(float?), 16); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_AsyncSelector_Single_WithNaN_Nullable_16_AllNull() { var input = Enumerable.Repeat(default(float?), 16); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Single_WithNaN_Nullable_16_AllNull() { var input = Enumerable.Repeat(default(float?), 16); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Max_Single_WithNaN_Nullable_16_AllNaN() { var input = Enumerable.Repeat(float.NaN, 16); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_Selector_Single_WithNaN_Nullable_16_AllNaN() { var input = Enumerable.Repeat(float.NaN, 16); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_AsyncSelector_Single_WithNaN_Nullable_16_AllNaN() { var input = Enumerable.Repeat(float.NaN, 16); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Single_WithNaN_Nullable_16_AllNaN() { var input = Enumerable.Repeat(float.NaN, 16); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Max_Single_WithNaN_Nullable_16_SomeNull() { var input = new float?[] { 59, null, float.NaN, 98, null, float.NaN, -100, null, float.NaN, -86, null, float.NaN, 19, null, float.NaN, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Single_WithNaN_Nullable_16_SomeNull() { var input = new float?[] { 59, null, float.NaN, 98, null, float.NaN, -100, null, float.NaN, -86, null, float.NaN, 19, null, float.NaN, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Single_WithNaN_Nullable_16_SomeNull() { var input = new float?[] { 59, null, float.NaN, 98, null, float.NaN, -100, null, float.NaN, -86, null, float.NaN, 19, null, float.NaN, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Single_WithNaN_Nullable_16_SomeNull() { var input = new float?[] { 59, null, float.NaN, 98, null, float.NaN, -100, null, float.NaN, -86, null, float.NaN, 19, null, float.NaN, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Empty_Double() { await AssertThrowsAsync(new double[0].ToAsyncEnumerable().MaxAsync(CancellationToken.None).AsTask()); } [Fact] public async Task Max_Selector_Empty_Double() { await AssertThrowsAsync(new object[0].ToAsyncEnumerable().MaxAsync(_ => default(double), CancellationToken.None).AsTask()); } [Fact] public async Task Max_AsyncSelector_Empty_Double() { await AssertThrowsAsync(new object[0].ToAsyncEnumerable().MaxAsync(_ => default(ValueTask), CancellationToken.None).AsTask()); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Empty_Double() { await AssertThrowsAsync(new object[0].ToAsyncEnumerable().MaxAsync((x, ct) => default(ValueTask), CancellationToken.None).AsTask()); } #endif [Fact] public async Task Max_Empty_Nullable_Double() { Assert.Null(await new double?[0].ToAsyncEnumerable().MaxAsync(CancellationToken.None)); } [Fact] public async Task Max_Selector_Empty_Nullable_Double() { Assert.Null(await new object[0].ToAsyncEnumerable().MaxAsync(_ => default(double?), CancellationToken.None)); } [Fact] public async Task Max_AsyncSelector_Empty_Nullable_Double() { Assert.Null(await new object[0].ToAsyncEnumerable().MaxAsync(_ => default(ValueTask), CancellationToken.None)); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Empty_Nullable_Double() { Assert.Null(await new object[0].ToAsyncEnumerable().MaxAsync((x, ct) => default(ValueTask), CancellationToken.None)); } #endif [Fact] public async Task Max_Double_1() { var input = new double[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Double_1() { var input = new double[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Double_1() { var input = new double[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Double_1() { var input = new double[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Double_Nullable_1_NoNull() { var input = new double?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Double_Nullable_1_NoNull() { var input = new double?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Double_Nullable_1_NoNull() { var input = new double?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Double_Nullable_1_NoNull() { var input = new double?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Double_Nullable_1_AllNull() { var input = Enumerable.Repeat(default(double?), 1); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_Selector_Double_Nullable_1_AllNull() { var input = Enumerable.Repeat(default(double?), 1); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_AsyncSelector_Double_Nullable_1_AllNull() { var input = Enumerable.Repeat(default(double?), 1); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Double_Nullable_1_AllNull() { var input = Enumerable.Repeat(default(double?), 1); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Max_Double_Nullable_1_SomeNull() { var input = new double?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Double_Nullable_1_SomeNull() { var input = new double?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Double_Nullable_1_SomeNull() { var input = new double?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Double_Nullable_1_SomeNull() { var input = new double?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Double_4() { var input = new double[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Double_4() { var input = new double[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Double_4() { var input = new double[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Double_4() { var input = new double[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Double_Nullable_4_NoNull() { var input = new double?[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Double_Nullable_4_NoNull() { var input = new double?[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Double_Nullable_4_NoNull() { var input = new double?[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Double_Nullable_4_NoNull() { var input = new double?[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Double_Nullable_4_AllNull() { var input = Enumerable.Repeat(default(double?), 4); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_Selector_Double_Nullable_4_AllNull() { var input = Enumerable.Repeat(default(double?), 4); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_AsyncSelector_Double_Nullable_4_AllNull() { var input = Enumerable.Repeat(default(double?), 4); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Double_Nullable_4_AllNull() { var input = Enumerable.Repeat(default(double?), 4); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Max_Double_Nullable_4_SomeNull() { var input = new double?[] { -2, null, -61, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Double_Nullable_4_SomeNull() { var input = new double?[] { -2, null, -61, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Double_Nullable_4_SomeNull() { var input = new double?[] { -2, null, -61, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Double_Nullable_4_SomeNull() { var input = new double?[] { -2, null, -61, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Double_8() { var input = new double[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Double_8() { var input = new double[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Double_8() { var input = new double[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Double_8() { var input = new double[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Double_Nullable_8_NoNull() { var input = new double?[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Double_Nullable_8_NoNull() { var input = new double?[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Double_Nullable_8_NoNull() { var input = new double?[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Double_Nullable_8_NoNull() { var input = new double?[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Double_Nullable_8_AllNull() { var input = Enumerable.Repeat(default(double?), 8); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_Selector_Double_Nullable_8_AllNull() { var input = Enumerable.Repeat(default(double?), 8); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_AsyncSelector_Double_Nullable_8_AllNull() { var input = Enumerable.Repeat(default(double?), 8); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Double_Nullable_8_AllNull() { var input = Enumerable.Repeat(default(double?), 8); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Max_Double_Nullable_8_SomeNull() { var input = new double?[] { -48, null, 25, null, 81, null, -10, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Double_Nullable_8_SomeNull() { var input = new double?[] { -48, null, 25, null, 81, null, -10, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Double_Nullable_8_SomeNull() { var input = new double?[] { -48, null, 25, null, 81, null, -10, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Double_Nullable_8_SomeNull() { var input = new double?[] { -48, null, 25, null, 81, null, -10, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Double_16() { var input = new double[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Double_16() { var input = new double[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Double_16() { var input = new double[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Double_16() { var input = new double[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Double_Nullable_16_NoNull() { var input = new double?[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Double_Nullable_16_NoNull() { var input = new double?[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Double_Nullable_16_NoNull() { var input = new double?[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Double_Nullable_16_NoNull() { var input = new double?[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Double_Nullable_16_AllNull() { var input = Enumerable.Repeat(default(double?), 16); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_Selector_Double_Nullable_16_AllNull() { var input = Enumerable.Repeat(default(double?), 16); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_AsyncSelector_Double_Nullable_16_AllNull() { var input = Enumerable.Repeat(default(double?), 16); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Double_Nullable_16_AllNull() { var input = Enumerable.Repeat(default(double?), 16); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Max_Double_Nullable_16_SomeNull() { var input = new double?[] { 59, null, -3, null, 20, null, -100, null, -77, null, -26, null, 19, null, -28, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Double_Nullable_16_SomeNull() { var input = new double?[] { 59, null, -3, null, 20, null, -100, null, -77, null, -26, null, 19, null, -28, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Double_Nullable_16_SomeNull() { var input = new double?[] { 59, null, -3, null, 20, null, -100, null, -77, null, -26, null, 19, null, -28, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Double_Nullable_16_SomeNull() { var input = new double?[] { 59, null, -3, null, 20, null, -100, null, -77, null, -26, null, 19, null, -28, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Double_WithNaN_1() { var input = new double[] { double.NaN }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Double_WithNaN_1() { var input = new double[] { double.NaN }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Double_WithNaN_1() { var input = new double[] { double.NaN }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Double_WithNaN_1() { var input = new double[] { double.NaN }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Double_WithNaN_1_AllNaN() { var input = Enumerable.Repeat(double.NaN, 1); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_Selector_Double_WithNaN_1_AllNaN() { var input = Enumerable.Repeat(double.NaN, 1); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_AsyncSelector_Double_WithNaN_1_AllNaN() { var input = Enumerable.Repeat(double.NaN, 1); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Double_WithNaN_1_AllNaN() { var input = Enumerable.Repeat(double.NaN, 1); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Max_Double_WithNaN_Nullable_1_NoNull() { var input = new double?[] { double.NaN }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Double_WithNaN_Nullable_1_NoNull() { var input = new double?[] { double.NaN }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Double_WithNaN_Nullable_1_NoNull() { var input = new double?[] { double.NaN }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Double_WithNaN_Nullable_1_NoNull() { var input = new double?[] { double.NaN }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Double_WithNaN_Nullable_1_AllNull() { var input = Enumerable.Repeat(default(double?), 1); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_Selector_Double_WithNaN_Nullable_1_AllNull() { var input = Enumerable.Repeat(default(double?), 1); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_AsyncSelector_Double_WithNaN_Nullable_1_AllNull() { var input = Enumerable.Repeat(default(double?), 1); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Double_WithNaN_Nullable_1_AllNull() { var input = Enumerable.Repeat(default(double?), 1); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Max_Double_WithNaN_Nullable_1_AllNaN() { var input = Enumerable.Repeat(double.NaN, 1); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_Selector_Double_WithNaN_Nullable_1_AllNaN() { var input = Enumerable.Repeat(double.NaN, 1); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_AsyncSelector_Double_WithNaN_Nullable_1_AllNaN() { var input = Enumerable.Repeat(double.NaN, 1); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Double_WithNaN_Nullable_1_AllNaN() { var input = Enumerable.Repeat(double.NaN, 1); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Max_Double_WithNaN_Nullable_1_SomeNull() { var input = new double?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Double_WithNaN_Nullable_1_SomeNull() { var input = new double?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Double_WithNaN_Nullable_1_SomeNull() { var input = new double?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Double_WithNaN_Nullable_1_SomeNull() { var input = new double?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Double_WithNaN_4() { var input = new double[] { double.NaN, -78, double.NaN, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Double_WithNaN_4() { var input = new double[] { double.NaN, -78, double.NaN, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Double_WithNaN_4() { var input = new double[] { double.NaN, -78, double.NaN, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Double_WithNaN_4() { var input = new double[] { double.NaN, -78, double.NaN, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Double_WithNaN_4_AllNaN() { var input = Enumerable.Repeat(double.NaN, 4); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_Selector_Double_WithNaN_4_AllNaN() { var input = Enumerable.Repeat(double.NaN, 4); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_AsyncSelector_Double_WithNaN_4_AllNaN() { var input = Enumerable.Repeat(double.NaN, 4); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Double_WithNaN_4_AllNaN() { var input = Enumerable.Repeat(double.NaN, 4); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Max_Double_WithNaN_Nullable_4_NoNull() { var input = new double?[] { double.NaN, -78, double.NaN, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Double_WithNaN_Nullable_4_NoNull() { var input = new double?[] { double.NaN, -78, double.NaN, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Double_WithNaN_Nullable_4_NoNull() { var input = new double?[] { double.NaN, -78, double.NaN, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Double_WithNaN_Nullable_4_NoNull() { var input = new double?[] { double.NaN, -78, double.NaN, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Double_WithNaN_Nullable_4_AllNull() { var input = Enumerable.Repeat(default(double?), 4); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_Selector_Double_WithNaN_Nullable_4_AllNull() { var input = Enumerable.Repeat(default(double?), 4); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_AsyncSelector_Double_WithNaN_Nullable_4_AllNull() { var input = Enumerable.Repeat(default(double?), 4); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Double_WithNaN_Nullable_4_AllNull() { var input = Enumerable.Repeat(default(double?), 4); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Max_Double_WithNaN_Nullable_4_AllNaN() { var input = Enumerable.Repeat(double.NaN, 4); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_Selector_Double_WithNaN_Nullable_4_AllNaN() { var input = Enumerable.Repeat(double.NaN, 4); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_AsyncSelector_Double_WithNaN_Nullable_4_AllNaN() { var input = Enumerable.Repeat(double.NaN, 4); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Double_WithNaN_Nullable_4_AllNaN() { var input = Enumerable.Repeat(double.NaN, 4); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Max_Double_WithNaN_Nullable_4_SomeNull() { var input = new double?[] { -2, null, double.NaN, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Double_WithNaN_Nullable_4_SomeNull() { var input = new double?[] { -2, null, double.NaN, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Double_WithNaN_Nullable_4_SomeNull() { var input = new double?[] { -2, null, double.NaN, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Double_WithNaN_Nullable_4_SomeNull() { var input = new double?[] { -2, null, double.NaN, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Double_WithNaN_8() { var input = new double[] { double.NaN, -19, double.NaN, -46, double.NaN, -63, double.NaN, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Double_WithNaN_8() { var input = new double[] { double.NaN, -19, double.NaN, -46, double.NaN, -63, double.NaN, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Double_WithNaN_8() { var input = new double[] { double.NaN, -19, double.NaN, -46, double.NaN, -63, double.NaN, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Double_WithNaN_8() { var input = new double[] { double.NaN, -19, double.NaN, -46, double.NaN, -63, double.NaN, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Double_WithNaN_8_AllNaN() { var input = Enumerable.Repeat(double.NaN, 8); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_Selector_Double_WithNaN_8_AllNaN() { var input = Enumerable.Repeat(double.NaN, 8); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_AsyncSelector_Double_WithNaN_8_AllNaN() { var input = Enumerable.Repeat(double.NaN, 8); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Double_WithNaN_8_AllNaN() { var input = Enumerable.Repeat(double.NaN, 8); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Max_Double_WithNaN_Nullable_8_NoNull() { var input = new double?[] { double.NaN, -19, double.NaN, -46, double.NaN, -63, double.NaN, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Double_WithNaN_Nullable_8_NoNull() { var input = new double?[] { double.NaN, -19, double.NaN, -46, double.NaN, -63, double.NaN, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Double_WithNaN_Nullable_8_NoNull() { var input = new double?[] { double.NaN, -19, double.NaN, -46, double.NaN, -63, double.NaN, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Double_WithNaN_Nullable_8_NoNull() { var input = new double?[] { double.NaN, -19, double.NaN, -46, double.NaN, -63, double.NaN, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Double_WithNaN_Nullable_8_AllNull() { var input = Enumerable.Repeat(default(double?), 8); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_Selector_Double_WithNaN_Nullable_8_AllNull() { var input = Enumerable.Repeat(default(double?), 8); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_AsyncSelector_Double_WithNaN_Nullable_8_AllNull() { var input = Enumerable.Repeat(default(double?), 8); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Double_WithNaN_Nullable_8_AllNull() { var input = Enumerable.Repeat(default(double?), 8); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Max_Double_WithNaN_Nullable_8_AllNaN() { var input = Enumerable.Repeat(double.NaN, 8); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_Selector_Double_WithNaN_Nullable_8_AllNaN() { var input = Enumerable.Repeat(double.NaN, 8); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_AsyncSelector_Double_WithNaN_Nullable_8_AllNaN() { var input = Enumerable.Repeat(double.NaN, 8); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Double_WithNaN_Nullable_8_AllNaN() { var input = Enumerable.Repeat(double.NaN, 8); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Max_Double_WithNaN_Nullable_8_SomeNull() { var input = new double?[] { -48, null, double.NaN, -46, null, double.NaN, -10, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Double_WithNaN_Nullable_8_SomeNull() { var input = new double?[] { -48, null, double.NaN, -46, null, double.NaN, -10, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Double_WithNaN_Nullable_8_SomeNull() { var input = new double?[] { -48, null, double.NaN, -46, null, double.NaN, -10, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Double_WithNaN_Nullable_8_SomeNull() { var input = new double?[] { -48, null, double.NaN, -46, null, double.NaN, -10, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Double_WithNaN_16() { var input = new double[] { double.NaN, 98, double.NaN, 98, double.NaN, 63, double.NaN, 14, double.NaN, -86, double.NaN, -79, double.NaN, -84, double.NaN, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Double_WithNaN_16() { var input = new double[] { double.NaN, 98, double.NaN, 98, double.NaN, 63, double.NaN, 14, double.NaN, -86, double.NaN, -79, double.NaN, -84, double.NaN, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Double_WithNaN_16() { var input = new double[] { double.NaN, 98, double.NaN, 98, double.NaN, 63, double.NaN, 14, double.NaN, -86, double.NaN, -79, double.NaN, -84, double.NaN, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Double_WithNaN_16() { var input = new double[] { double.NaN, 98, double.NaN, 98, double.NaN, 63, double.NaN, 14, double.NaN, -86, double.NaN, -79, double.NaN, -84, double.NaN, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Double_WithNaN_16_AllNaN() { var input = Enumerable.Repeat(double.NaN, 16); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_Selector_Double_WithNaN_16_AllNaN() { var input = Enumerable.Repeat(double.NaN, 16); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_AsyncSelector_Double_WithNaN_16_AllNaN() { var input = Enumerable.Repeat(double.NaN, 16); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Double_WithNaN_16_AllNaN() { var input = Enumerable.Repeat(double.NaN, 16); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Max_Double_WithNaN_Nullable_16_NoNull() { var input = new double?[] { double.NaN, 98, double.NaN, 98, double.NaN, 63, double.NaN, 14, double.NaN, -86, double.NaN, -79, double.NaN, -84, double.NaN, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Double_WithNaN_Nullable_16_NoNull() { var input = new double?[] { double.NaN, 98, double.NaN, 98, double.NaN, 63, double.NaN, 14, double.NaN, -86, double.NaN, -79, double.NaN, -84, double.NaN, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Double_WithNaN_Nullable_16_NoNull() { var input = new double?[] { double.NaN, 98, double.NaN, 98, double.NaN, 63, double.NaN, 14, double.NaN, -86, double.NaN, -79, double.NaN, -84, double.NaN, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Double_WithNaN_Nullable_16_NoNull() { var input = new double?[] { double.NaN, 98, double.NaN, 98, double.NaN, 63, double.NaN, 14, double.NaN, -86, double.NaN, -79, double.NaN, -84, double.NaN, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Double_WithNaN_Nullable_16_AllNull() { var input = Enumerable.Repeat(default(double?), 16); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_Selector_Double_WithNaN_Nullable_16_AllNull() { var input = Enumerable.Repeat(default(double?), 16); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_AsyncSelector_Double_WithNaN_Nullable_16_AllNull() { var input = Enumerable.Repeat(default(double?), 16); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Double_WithNaN_Nullable_16_AllNull() { var input = Enumerable.Repeat(default(double?), 16); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Max_Double_WithNaN_Nullable_16_AllNaN() { var input = Enumerable.Repeat(double.NaN, 16); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_Selector_Double_WithNaN_Nullable_16_AllNaN() { var input = Enumerable.Repeat(double.NaN, 16); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_AsyncSelector_Double_WithNaN_Nullable_16_AllNaN() { var input = Enumerable.Repeat(double.NaN, 16); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Double_WithNaN_Nullable_16_AllNaN() { var input = Enumerable.Repeat(double.NaN, 16); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Max_Double_WithNaN_Nullable_16_SomeNull() { var input = new double?[] { 59, null, double.NaN, 98, null, double.NaN, -100, null, double.NaN, -86, null, double.NaN, 19, null, double.NaN, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Double_WithNaN_Nullable_16_SomeNull() { var input = new double?[] { 59, null, double.NaN, 98, null, double.NaN, -100, null, double.NaN, -86, null, double.NaN, 19, null, double.NaN, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Double_WithNaN_Nullable_16_SomeNull() { var input = new double?[] { 59, null, double.NaN, 98, null, double.NaN, -100, null, double.NaN, -86, null, double.NaN, 19, null, double.NaN, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Double_WithNaN_Nullable_16_SomeNull() { var input = new double?[] { 59, null, double.NaN, 98, null, double.NaN, -100, null, double.NaN, -86, null, double.NaN, 19, null, double.NaN, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Empty_Decimal() { await AssertThrowsAsync(new decimal[0].ToAsyncEnumerable().MaxAsync(CancellationToken.None).AsTask()); } [Fact] public async Task Max_Selector_Empty_Decimal() { await AssertThrowsAsync(new object[0].ToAsyncEnumerable().MaxAsync(_ => default(decimal), CancellationToken.None).AsTask()); } [Fact] public async Task Max_AsyncSelector_Empty_Decimal() { await AssertThrowsAsync(new object[0].ToAsyncEnumerable().MaxAsync(_ => default(ValueTask), CancellationToken.None).AsTask()); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Empty_Decimal() { await AssertThrowsAsync(new object[0].ToAsyncEnumerable().MaxAsync((x, ct) => default(ValueTask), CancellationToken.None).AsTask()); } #endif [Fact] public async Task Max_Empty_Nullable_Decimal() { Assert.Null(await new decimal?[0].ToAsyncEnumerable().MaxAsync(CancellationToken.None)); } [Fact] public async Task Max_Selector_Empty_Nullable_Decimal() { Assert.Null(await new object[0].ToAsyncEnumerable().MaxAsync(_ => default(decimal?), CancellationToken.None)); } [Fact] public async Task Max_AsyncSelector_Empty_Nullable_Decimal() { Assert.Null(await new object[0].ToAsyncEnumerable().MaxAsync(_ => default(ValueTask), CancellationToken.None)); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Empty_Nullable_Decimal() { Assert.Null(await new object[0].ToAsyncEnumerable().MaxAsync((x, ct) => default(ValueTask), CancellationToken.None)); } #endif [Fact] public async Task Max_Decimal_1() { var input = new decimal[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Decimal_1() { var input = new decimal[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Decimal_1() { var input = new decimal[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Decimal_1() { var input = new decimal[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Decimal_Nullable_1_NoNull() { var input = new decimal?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Decimal_Nullable_1_NoNull() { var input = new decimal?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Decimal_Nullable_1_NoNull() { var input = new decimal?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Decimal_Nullable_1_NoNull() { var input = new decimal?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Decimal_Nullable_1_AllNull() { var input = Enumerable.Repeat(default(decimal?), 1); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_Selector_Decimal_Nullable_1_AllNull() { var input = Enumerable.Repeat(default(decimal?), 1); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_AsyncSelector_Decimal_Nullable_1_AllNull() { var input = Enumerable.Repeat(default(decimal?), 1); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Decimal_Nullable_1_AllNull() { var input = Enumerable.Repeat(default(decimal?), 1); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Max_Decimal_Nullable_1_SomeNull() { var input = new decimal?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Decimal_Nullable_1_SomeNull() { var input = new decimal?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Decimal_Nullable_1_SomeNull() { var input = new decimal?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Decimal_Nullable_1_SomeNull() { var input = new decimal?[] { 33 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Decimal_4() { var input = new decimal[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Decimal_4() { var input = new decimal[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Decimal_4() { var input = new decimal[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Decimal_4() { var input = new decimal[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Decimal_Nullable_4_NoNull() { var input = new decimal?[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Decimal_Nullable_4_NoNull() { var input = new decimal?[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Decimal_Nullable_4_NoNull() { var input = new decimal?[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Decimal_Nullable_4_NoNull() { var input = new decimal?[] { -2, -78, -61, -17 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Decimal_Nullable_4_AllNull() { var input = Enumerable.Repeat(default(decimal?), 4); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_Selector_Decimal_Nullable_4_AllNull() { var input = Enumerable.Repeat(default(decimal?), 4); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_AsyncSelector_Decimal_Nullable_4_AllNull() { var input = Enumerable.Repeat(default(decimal?), 4); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Decimal_Nullable_4_AllNull() { var input = Enumerable.Repeat(default(decimal?), 4); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Max_Decimal_Nullable_4_SomeNull() { var input = new decimal?[] { -2, null, -61, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Decimal_Nullable_4_SomeNull() { var input = new decimal?[] { -2, null, -61, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Decimal_Nullable_4_SomeNull() { var input = new decimal?[] { -2, null, -61, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Decimal_Nullable_4_SomeNull() { var input = new decimal?[] { -2, null, -61, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Decimal_8() { var input = new decimal[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Decimal_8() { var input = new decimal[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Decimal_8() { var input = new decimal[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Decimal_8() { var input = new decimal[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Decimal_Nullable_8_NoNull() { var input = new decimal?[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Decimal_Nullable_8_NoNull() { var input = new decimal?[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Decimal_Nullable_8_NoNull() { var input = new decimal?[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Decimal_Nullable_8_NoNull() { var input = new decimal?[] { -48, -19, 25, -46, 81, -63, -10, -99 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Decimal_Nullable_8_AllNull() { var input = Enumerable.Repeat(default(decimal?), 8); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_Selector_Decimal_Nullable_8_AllNull() { var input = Enumerable.Repeat(default(decimal?), 8); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_AsyncSelector_Decimal_Nullable_8_AllNull() { var input = Enumerable.Repeat(default(decimal?), 8); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Decimal_Nullable_8_AllNull() { var input = Enumerable.Repeat(default(decimal?), 8); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Max_Decimal_Nullable_8_SomeNull() { var input = new decimal?[] { -48, null, 25, null, 81, null, -10, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Decimal_Nullable_8_SomeNull() { var input = new decimal?[] { -48, null, 25, null, 81, null, -10, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Decimal_Nullable_8_SomeNull() { var input = new decimal?[] { -48, null, 25, null, 81, null, -10, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Decimal_Nullable_8_SomeNull() { var input = new decimal?[] { -48, null, 25, null, 81, null, -10, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Decimal_16() { var input = new decimal[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Decimal_16() { var input = new decimal[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Decimal_16() { var input = new decimal[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Decimal_16() { var input = new decimal[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Decimal_Nullable_16_NoNull() { var input = new decimal?[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Decimal_Nullable_16_NoNull() { var input = new decimal?[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Decimal_Nullable_16_NoNull() { var input = new decimal?[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Decimal_Nullable_16_NoNull() { var input = new decimal?[] { 59, 98, -3, 98, 20, 63, -100, 14, -77, -86, -26, -79, 19, -84, -28, 41 }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif [Fact] public async Task Max_Decimal_Nullable_16_AllNull() { var input = Enumerable.Repeat(default(decimal?), 16); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_Selector_Decimal_Nullable_16_AllNull() { var input = Enumerable.Repeat(default(decimal?), 16); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); } [Fact] public async Task Max_AsyncSelector_Decimal_Nullable_16_AllNull() { var input = Enumerable.Repeat(default(decimal?), 16); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Decimal_Nullable_16_AllNull() { var input = Enumerable.Repeat(default(decimal?), 16); var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); } #endif [Fact] public async Task Max_Decimal_Nullable_16_SomeNull() { var input = new decimal?[] { 59, null, -3, null, 20, null, -100, null, -77, null, -26, null, 19, null, -28, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_Selector_Decimal_Nullable_16_SomeNull() { var input = new decimal?[] { 59, null, -3, null, 20, null, -100, null, -77, null, -26, null, 19, null, -28, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => x, CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } [Fact] public async Task Max_AsyncSelector_Decimal_Nullable_16_SomeNull() { var input = new decimal?[] { 59, null, -3, null, 20, null, -100, null, -77, null, -26, null, 19, null, -28, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync(x => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #if !NO_DEEP_CANCELLATION [Fact] public async Task Max_AsyncSelectorWithCancellation_Decimal_Nullable_16_SomeNull() { var input = new decimal?[] { 59, null, -3, null, 20, null, -100, null, -77, null, -26, null, 19, null, -28, null }.AsEnumerable(); for (var i = 0; i < 4; i++) { var expected = input.Max(); var actual = await input.ToAsyncEnumerable().MaxAsync((x, ct) => new ValueTask(x), CancellationToken.None); Assert.Equal(expected, actual); input = Shuffle(input); } } #endif private static IEnumerable Shuffle(IEnumerable source) { var rand = new Random(42); return source.OrderBy(x => rand.Next()); } } }