AsyncTests.Aggregates.cs 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. // Licensed to the .NET Foundation under one or more agreements.
  2. // The .NET Foundation licenses this file to you under the Apache 2.0 License.
  3. // See the LICENSE file in the project root for more information.
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Threading;
  8. using System.Threading.Tasks;
  9. using Xunit;
  10. // ReSharper disable InvokeAsExtensionMethod
  11. // ReSharper disable InconsistentNaming
  12. // ReSharper disable RedundantTypeArgumentsOfMethod
  13. namespace Tests
  14. {
  15. public partial class AsyncTests
  16. {
  17. private const int WaitTimeoutMs = 5000;
  18. [Fact]
  19. public async Task Min_Null()
  20. {
  21. await Assert.ThrowsAsync<ArgumentNullException>(() => AsyncEnumerableEx.Min(default(IAsyncEnumerable<DateTime>), Comparer<DateTime>.Default));
  22. await Assert.ThrowsAsync<ArgumentNullException>(() => AsyncEnumerableEx.Min(AsyncEnumerable.Empty<DateTime>(), default(IComparer<DateTime>)));
  23. await Assert.ThrowsAsync<ArgumentNullException>(() => AsyncEnumerableEx.Min(default(IAsyncEnumerable<DateTime>), Comparer<DateTime>.Default, CancellationToken.None));
  24. await Assert.ThrowsAsync<ArgumentNullException>(() => AsyncEnumerableEx.Min(AsyncEnumerable.Empty<DateTime>(), default(IComparer<DateTime>), CancellationToken.None));
  25. }
  26. [Fact]
  27. public async Task Max_Null()
  28. {
  29. await Assert.ThrowsAsync<ArgumentNullException>(() => AsyncEnumerableEx.Max(default(IAsyncEnumerable<DateTime>), Comparer<DateTime>.Default));
  30. await Assert.ThrowsAsync<ArgumentNullException>(() => AsyncEnumerableEx.Max(AsyncEnumerable.Empty<DateTime>(), default(IComparer<DateTime>)));
  31. await Assert.ThrowsAsync<ArgumentNullException>(() => AsyncEnumerableEx.Max(default(IAsyncEnumerable<DateTime>), Comparer<DateTime>.Default, CancellationToken.None));
  32. await Assert.ThrowsAsync<ArgumentNullException>(() => AsyncEnumerableEx.Max(AsyncEnumerable.Empty<DateTime>(), default(IComparer<DateTime>), CancellationToken.None));
  33. }
  34. private sealed class Eq : IEqualityComparer<int>
  35. {
  36. public bool Equals(int x, int y)
  37. {
  38. return EqualityComparer<int>.Default.Equals(Math.Abs(x), Math.Abs(y));
  39. }
  40. public int GetHashCode(int obj)
  41. {
  42. return EqualityComparer<int>.Default.GetHashCode(Math.Abs(obj));
  43. }
  44. }
  45. }
  46. }