All.cs 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  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.Linq;
  6. using System.Threading;
  7. using System.Threading.Tasks;
  8. using Xunit;
  9. namespace Tests
  10. {
  11. public class All : AsyncEnumerableTests
  12. {
  13. [Fact]
  14. public async Task All_Null()
  15. {
  16. await Assert.ThrowsAsync<ArgumentNullException>(() => AsyncEnumerable.AllAsync<int>(default, x => true).AsTask());
  17. await Assert.ThrowsAsync<ArgumentNullException>(() => AsyncEnumerable.AllAsync(Return42, default(Func<int, bool>)).AsTask());
  18. await Assert.ThrowsAsync<ArgumentNullException>(() => AsyncEnumerable.AllAsync<int>(default, x => true, CancellationToken.None).AsTask());
  19. await Assert.ThrowsAsync<ArgumentNullException>(() => AsyncEnumerable.AllAsync(Return42, default(Func<int, bool>), CancellationToken.None).AsTask());
  20. await Assert.ThrowsAsync<ArgumentNullException>(() => AsyncEnumerable.AllAsync<int>(default, x => new ValueTask<bool>(true)).AsTask());
  21. await Assert.ThrowsAsync<ArgumentNullException>(() => AsyncEnumerable.AllAsync(Return42, default(Func<int, ValueTask<bool>>)).AsTask());
  22. await Assert.ThrowsAsync<ArgumentNullException>(() => AsyncEnumerable.AllAsync<int>(default, x => new ValueTask<bool>(true), CancellationToken.None).AsTask());
  23. await Assert.ThrowsAsync<ArgumentNullException>(() => AsyncEnumerable.AllAsync(Return42, default(Func<int, ValueTask<bool>>), CancellationToken.None).AsTask());
  24. }
  25. [Fact]
  26. public async Task All1Async()
  27. {
  28. var res = new[] { 1, 2, 3, 4 }.ToAsyncEnumerable().AllAsync(x => x % 2 == 0);
  29. Assert.False(await res);
  30. }
  31. [Fact]
  32. public async Task All2Async()
  33. {
  34. var res = new[] { 2, 8, 4 }.ToAsyncEnumerable().AllAsync(x => x % 2 == 0);
  35. Assert.True(await res);
  36. }
  37. [Fact]
  38. public async Task All3Async()
  39. {
  40. var ex = new Exception("Bang!");
  41. var res = Throw<int>(ex).AllAsync(x => x % 2 == 0);
  42. await AssertThrowsAsync(res, ex);
  43. }
  44. [Fact]
  45. public async Task All4Async()
  46. {
  47. var ex = new Exception("Bang!");
  48. var res = new[] { 2, 8, 4 }.ToAsyncEnumerable().AllAsync(new Func<int, bool>(x => { throw ex; }));
  49. await AssertThrowsAsync(res, ex);
  50. }
  51. [Fact]
  52. public async Task All5Async()
  53. {
  54. var res = new[] { 1, 2, 3, 4 }.ToAsyncEnumerable().AllAsync(x => new ValueTask<bool>(x % 2 == 0));
  55. Assert.False(await res);
  56. }
  57. [Fact]
  58. public async Task All6Async()
  59. {
  60. var res = new[] { 2, 8, 4 }.ToAsyncEnumerable().AllAsync(x => new ValueTask<bool>(x % 2 == 0));
  61. Assert.True(await res);
  62. }
  63. [Fact]
  64. public async Task All7Async()
  65. {
  66. var ex = new Exception("Bang!");
  67. var res = Throw<int>(ex).AllAsync(x => new ValueTask<bool>(x % 2 == 0));
  68. await AssertThrowsAsync(res, ex);
  69. }
  70. [Fact]
  71. public async Task All8Async()
  72. {
  73. var ex = new Exception("Bang!");
  74. var res = new[] { 2, 8, 4 }.ToAsyncEnumerable().AllAsync(new Func<int, ValueTask<bool>>(x => { throw ex; }));
  75. await AssertThrowsAsync(res, ex);
  76. }
  77. }
  78. }