EmptyTest.cs 2.9 KB

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