OnErrorResumeNext.cs 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  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 Xunit;
  8. namespace Tests
  9. {
  10. public class OnErrorResumeNext : Tests
  11. {
  12. [Fact]
  13. public void OnErrorResumeNext_Arguments()
  14. {
  15. AssertThrows<ArgumentNullException>(() => EnumerableEx.OnErrorResumeNext<int>(null, new[] { 1 }));
  16. AssertThrows<ArgumentNullException>(() => EnumerableEx.OnErrorResumeNext<int>(new[] { 1 }, null));
  17. AssertThrows<ArgumentNullException>(() => EnumerableEx.OnErrorResumeNext<int>(default(IEnumerable<int>[])));
  18. AssertThrows<ArgumentNullException>(() => EnumerableEx.OnErrorResumeNext<int>(default(IEnumerable<IEnumerable<int>>)));
  19. }
  20. [Fact]
  21. public void OnErrorResumeNext1()
  22. {
  23. var xs = new[] { 1, 2 };
  24. var ys = new[] { 3, 4 };
  25. var res = xs.OnErrorResumeNext(ys);
  26. Assert.True(Enumerable.SequenceEqual(res, new[] { 1, 2, 3, 4 }));
  27. }
  28. [Fact]
  29. public void OnErrorResumeNext2()
  30. {
  31. var xs = new[] { 1, 2 }.Concat(EnumerableEx.Throw<int>(new MyException()));
  32. var ys = new[] { 3, 4 };
  33. var res = xs.OnErrorResumeNext(ys);
  34. Assert.True(Enumerable.SequenceEqual(res, new[] { 1, 2, 3, 4 }));
  35. }
  36. [Fact]
  37. public void OnErrorResumeNext3()
  38. {
  39. var xs = new[] { 1, 2 };
  40. var ys = new[] { 3, 4 };
  41. var zs = new[] { 5, 6 };
  42. var res = EnumerableEx.OnErrorResumeNext(xs, ys, zs);
  43. Assert.True(Enumerable.SequenceEqual(res, new[] { 1, 2, 3, 4, 5, 6 }));
  44. }
  45. [Fact]
  46. public void OnErrorResumeNext4()
  47. {
  48. var xs = new[] { 1, 2 }.Concat(EnumerableEx.Throw<int>(new MyException()));
  49. var ys = new[] { 3, 4 };
  50. var zs = new[] { 5, 6 };
  51. var res = EnumerableEx.OnErrorResumeNext(xs, ys, zs);
  52. Assert.True(Enumerable.SequenceEqual(res, new[] { 1, 2, 3, 4, 5, 6 }));
  53. }
  54. [Fact]
  55. public void OnErrorResumeNext5()
  56. {
  57. var xs = new[] { 1, 2 };
  58. var ys = new[] { 3, 4 };
  59. var res = new[] { xs, ys }.OnErrorResumeNext();
  60. Assert.True(Enumerable.SequenceEqual(res, new[] { 1, 2, 3, 4 }));
  61. }
  62. [Fact]
  63. public void OnErrorResumeNext6()
  64. {
  65. var xs = new[] { 1, 2 }.Concat(EnumerableEx.Throw<int>(new MyException()));
  66. var ys = new[] { 3, 4 };
  67. var res = new[] { xs, ys }.OnErrorResumeNext();
  68. Assert.True(Enumerable.SequenceEqual(res, new[] { 1, 2, 3, 4 }));
  69. }
  70. private sealed class MyException : Exception
  71. {
  72. }
  73. }
  74. }