IgnoreElementsTest.cs 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. // Licensed to the .NET Foundation under one or more agreements.
  2. // The .NET Foundation licenses this file to you under the MIT License.
  3. // See the LICENSE file in the project root for more information.
  4. using System;
  5. using System.Reactive.Linq;
  6. using Microsoft.Reactive.Testing;
  7. using Microsoft.VisualStudio.TestTools.UnitTesting;
  8. namespace ReactiveTests.Tests
  9. {
  10. [TestClass]
  11. public class IgnoreElementsTest : ReactiveTest
  12. {
  13. [TestMethod]
  14. public void IgnoreElements_ArgumentChecking()
  15. {
  16. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.IgnoreElements<int>(null));
  17. }
  18. [TestMethod]
  19. public void IgnoreElements_IgnoreElements()
  20. {
  21. var scheduler = new TestScheduler();
  22. var xs = scheduler.CreateHotObservable(
  23. OnNext(180, 1),
  24. OnNext(210, 2),
  25. OnNext(250, 3),
  26. OnNext(270, 4),
  27. OnCompleted<int>(300)
  28. );
  29. var res = scheduler.Start(() =>
  30. xs.IgnoreElements().IgnoreElements()
  31. );
  32. res.Messages.AssertEqual(
  33. OnCompleted<int>(300)
  34. );
  35. xs.Subscriptions.AssertEqual(
  36. Subscribe(200, 300)
  37. );
  38. }
  39. [TestMethod]
  40. public void IgnoreElements_Basic()
  41. {
  42. var scheduler = new TestScheduler();
  43. var xs = scheduler.CreateHotObservable(
  44. OnNext(180, 1),
  45. OnNext(210, 2),
  46. OnNext(250, 3),
  47. OnNext(270, 4),
  48. OnNext(310, 5),
  49. OnNext(360, 6),
  50. OnNext(380, 7),
  51. OnNext(410, 8),
  52. OnNext(590, 9)
  53. );
  54. var res = scheduler.Start(() =>
  55. xs.IgnoreElements()
  56. );
  57. res.Messages.AssertEqual(
  58. );
  59. xs.Subscriptions.AssertEqual(
  60. Subscribe(200, 1000)
  61. );
  62. }
  63. [TestMethod]
  64. public void IgnoreElements_Completed()
  65. {
  66. var scheduler = new TestScheduler();
  67. var xs = scheduler.CreateHotObservable(
  68. OnNext(180, 1),
  69. OnNext(210, 2),
  70. OnNext(250, 3),
  71. OnNext(270, 4),
  72. OnNext(310, 5),
  73. OnNext(360, 6),
  74. OnNext(380, 7),
  75. OnNext(410, 8),
  76. OnNext(590, 9),
  77. OnCompleted<int>(610)
  78. );
  79. var res = scheduler.Start(() =>
  80. xs.IgnoreElements()
  81. );
  82. res.Messages.AssertEqual(
  83. OnCompleted<int>(610)
  84. );
  85. xs.Subscriptions.AssertEqual(
  86. Subscribe(200, 610)
  87. );
  88. }
  89. [TestMethod]
  90. public void IgnoreElements_Error()
  91. {
  92. var scheduler = new TestScheduler();
  93. var ex = new Exception();
  94. var xs = scheduler.CreateHotObservable(
  95. OnNext(180, 1),
  96. OnNext(210, 2),
  97. OnNext(250, 3),
  98. OnNext(270, 4),
  99. OnNext(310, 5),
  100. OnNext(360, 6),
  101. OnNext(380, 7),
  102. OnNext(410, 8),
  103. OnNext(590, 9),
  104. OnError<int>(610, ex)
  105. );
  106. var res = scheduler.Start(() =>
  107. xs.IgnoreElements()
  108. );
  109. res.Messages.AssertEqual(
  110. OnError<int>(610, ex)
  111. );
  112. xs.Subscriptions.AssertEqual(
  113. Subscribe(200, 610)
  114. );
  115. }
  116. }
  117. }