ToArrayTest.cs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  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.Linq;
  6. using System.Reactive.Linq;
  7. using Microsoft.Reactive.Testing;
  8. using Microsoft.VisualStudio.TestTools.UnitTesting;
  9. namespace ReactiveTests.Tests
  10. {
  11. [TestClass]
  12. public class ToArrayTest : ReactiveTest
  13. {
  14. [TestMethod]
  15. public void ToArray_ArgumentChecking()
  16. {
  17. ReactiveAssert.Throws<ArgumentNullException>(() => Observable.ToArray<int>(null));
  18. }
  19. [TestMethod]
  20. public void ToArray_Completed()
  21. {
  22. var scheduler = new TestScheduler();
  23. var xs = scheduler.CreateHotObservable(
  24. OnNext(110, 1),
  25. OnNext(220, 2),
  26. OnNext(330, 3),
  27. OnNext(440, 4),
  28. OnNext(550, 5),
  29. OnCompleted<int>(660)
  30. );
  31. var res = scheduler.Start(() =>
  32. xs.ToArray()
  33. );
  34. res.Messages.AssertEqual(
  35. OnNext<int[]>(660, a => a.SequenceEqual([2, 3, 4, 5])),
  36. OnCompleted<int[]>(660)
  37. );
  38. xs.Subscriptions.AssertEqual(
  39. Subscribe(200, 660)
  40. );
  41. }
  42. [TestMethod]
  43. public void ToArray_Error()
  44. {
  45. var scheduler = new TestScheduler();
  46. var ex = new Exception();
  47. var xs = scheduler.CreateHotObservable(
  48. OnNext(110, 1),
  49. OnNext(220, 2),
  50. OnNext(330, 3),
  51. OnNext(440, 4),
  52. OnNext(550, 5),
  53. OnError<int>(660, ex)
  54. );
  55. var res = scheduler.Start(() =>
  56. xs.ToArray()
  57. );
  58. res.Messages.AssertEqual(
  59. OnError<int[]>(660, ex)
  60. );
  61. xs.Subscriptions.AssertEqual(
  62. Subscribe(200, 660)
  63. );
  64. }
  65. [TestMethod]
  66. public void ToArray_Disposed()
  67. {
  68. var scheduler = new TestScheduler();
  69. var xs = scheduler.CreateHotObservable(
  70. OnNext(110, 1),
  71. OnNext(220, 2),
  72. OnNext(330, 3),
  73. OnNext(440, 4),
  74. OnNext(550, 5)
  75. );
  76. var res = scheduler.Start(() =>
  77. xs.ToArray()
  78. );
  79. res.Messages.AssertEqual(
  80. );
  81. xs.Subscriptions.AssertEqual(
  82. Subscribe(200, 1000)
  83. );
  84. }
  85. }
  86. }