ElementAtOrDefault.cs 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  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 ElementAtOrDefault : AsyncEnumerableTests
  12. {
  13. [Fact]
  14. public async Task ElementAtOrDefault_Null()
  15. {
  16. await Assert.ThrowsAsync<ArgumentNullException>(() => AsyncEnumerable.ElementAtOrDefaultAsync<int>(default, 0));
  17. await Assert.ThrowsAsync<ArgumentNullException>(() => AsyncEnumerable.ElementAtOrDefaultAsync<int>(default, 0, CancellationToken.None));
  18. }
  19. [Fact]
  20. public async Task ElementAtOrDefault1Async()
  21. {
  22. var res = AsyncEnumerable.Empty<int>().ElementAtOrDefaultAsync(0);
  23. Assert.Equal(0, await res);
  24. }
  25. [Fact]
  26. public async Task ElementAtOrDefault2Async()
  27. {
  28. var res = Return42.ElementAtOrDefaultAsync(0);
  29. Assert.Equal(42, await res);
  30. }
  31. [Fact]
  32. public async Task ElementAtOrDefault3Async()
  33. {
  34. var res = Return42.ElementAtOrDefaultAsync(1);
  35. Assert.Equal(0, await res);
  36. }
  37. [Fact]
  38. public async Task ElementAtOrDefault4Async()
  39. {
  40. var res = new[] { 1, 42, 3 }.ToAsyncEnumerable().ElementAtOrDefaultAsync(1);
  41. Assert.Equal(42, await res);
  42. }
  43. [Fact]
  44. public async Task ElementAtOrDefault5Async()
  45. {
  46. var res = new[] { 1, 42, 3 }.ToAsyncEnumerable().ElementAtOrDefaultAsync(7);
  47. Assert.Equal(0, await res);
  48. }
  49. [Fact]
  50. public async Task ElementAtOrDefault6Async()
  51. {
  52. var res = Return42.ElementAtOrDefaultAsync(-1);
  53. Assert.Equal(0, await res);
  54. }
  55. [Fact]
  56. public async Task ElementAtOrDefault7Async()
  57. {
  58. var ex = new Exception("Bang!");
  59. var res = Throw<int>(ex).ElementAtOrDefaultAsync(15);
  60. await AssertThrowsAsync(res, ex);
  61. }
  62. }
  63. }