IsEmptyTest.cs 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  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 IsEmptyTest : ReactiveTest
  12. {
  13. [TestMethod]
  14. public void IsEmpty_ArgumentChecking()
  15. {
  16. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.IsEmpty(default(IObservable<int>)));
  17. }
  18. [TestMethod]
  19. public void IsEmpty_Empty()
  20. {
  21. var scheduler = new TestScheduler();
  22. var xs = scheduler.CreateHotObservable(
  23. OnNext(150, 1),
  24. OnCompleted<int>(250)
  25. );
  26. var res = scheduler.Start(() =>
  27. xs.IsEmpty()
  28. );
  29. res.Messages.AssertEqual(
  30. OnNext(250, true),
  31. OnCompleted<bool>(250)
  32. );
  33. xs.Subscriptions.AssertEqual(
  34. Subscribe(200, 250)
  35. );
  36. }
  37. [TestMethod]
  38. public void IsEmpty_Return()
  39. {
  40. var scheduler = new TestScheduler();
  41. var xs = scheduler.CreateHotObservable(
  42. OnNext(150, 1),
  43. OnNext(210, 2),
  44. OnCompleted<int>(250)
  45. );
  46. var res = scheduler.Start(() =>
  47. xs.IsEmpty()
  48. );
  49. res.Messages.AssertEqual(
  50. OnNext(210, false),
  51. OnCompleted<bool>(210)
  52. );
  53. xs.Subscriptions.AssertEqual(
  54. Subscribe(200, 210)
  55. );
  56. }
  57. [TestMethod]
  58. public void IsEmpty_Throw()
  59. {
  60. var ex = new Exception();
  61. var scheduler = new TestScheduler();
  62. var xs = scheduler.CreateHotObservable(
  63. OnNext(150, 1),
  64. OnError<int>(210, ex)
  65. );
  66. var res = scheduler.Start(() =>
  67. xs.IsEmpty()
  68. );
  69. res.Messages.AssertEqual(
  70. OnError<bool>(210, ex)
  71. );
  72. xs.Subscriptions.AssertEqual(
  73. Subscribe(200, 210)
  74. );
  75. }
  76. [TestMethod]
  77. public void IsEmpty_Never()
  78. {
  79. var ex = new Exception();
  80. var scheduler = new TestScheduler();
  81. var xs = scheduler.CreateHotObservable(
  82. OnNext(150, 1)
  83. );
  84. var res = scheduler.Start(() =>
  85. xs.IsEmpty()
  86. );
  87. res.Messages.AssertEqual(
  88. );
  89. xs.Subscriptions.AssertEqual(
  90. Subscribe(200, 1000)
  91. );
  92. }
  93. }
  94. }