EmptyTest.cs 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  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.Concurrency;
  6. using System.Reactive.Linq;
  7. using System.Threading;
  8. using Microsoft.Reactive.Testing;
  9. using ReactiveTests.Dummies;
  10. using Microsoft.VisualStudio.TestTools.UnitTesting;
  11. using Assert = Xunit.Assert;
  12. namespace ReactiveTests.Tests
  13. {
  14. [TestClass]
  15. public class EmptyTest : ReactiveTest
  16. {
  17. [TestMethod]
  18. public void Empty_ArgumentChecking()
  19. {
  20. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.Empty<int>(null));
  21. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.Empty(null, 42));
  22. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.Empty<int>(DummyScheduler.Instance).Subscribe(null));
  23. }
  24. [TestMethod]
  25. public void Empty_Basic()
  26. {
  27. var scheduler = new TestScheduler();
  28. var res = scheduler.Start(() =>
  29. Observable.Empty<int>(scheduler)
  30. );
  31. res.Messages.AssertEqual(
  32. OnCompleted<int>(201)
  33. );
  34. }
  35. [TestMethod]
  36. public void Empty_Disposed()
  37. {
  38. var scheduler = new TestScheduler();
  39. var res = scheduler.Start(() =>
  40. Observable.Empty<int>(scheduler),
  41. 200
  42. );
  43. res.Messages.AssertEqual(
  44. );
  45. }
  46. [TestMethod]
  47. public void Empty_ObserverThrows()
  48. {
  49. var scheduler1 = new TestScheduler();
  50. var xs = Observable.Empty<int>(scheduler1);
  51. xs.Subscribe(x => { }, exception => { }, () => { throw new InvalidOperationException(); });
  52. ReactiveAssert.Throws<InvalidOperationException>(() => scheduler1.Start());
  53. }
  54. [TestMethod]
  55. public void Empty_DefaultScheduler()
  56. {
  57. Observable.Empty<int>().AssertEqual(Observable.Empty<int>(DefaultScheduler.Instance));
  58. }
  59. [TestMethod]
  60. public void Empty_Basic_Witness1()
  61. {
  62. var scheduler = new TestScheduler();
  63. var res = scheduler.Start(() =>
  64. Observable.Empty(scheduler, 42)
  65. );
  66. res.Messages.AssertEqual(
  67. OnCompleted<int>(201)
  68. );
  69. }
  70. [TestMethod]
  71. public void Empty_Basic_Witness2()
  72. {
  73. var e = new ManualResetEvent(false);
  74. Observable.Empty(42).Subscribe(
  75. _ => { Assert.True(false); },
  76. _ => { Assert.True(false); },
  77. () => e.Set()
  78. );
  79. e.WaitOne();
  80. }
  81. }
  82. }