ToListTest.cs 2.7 KB

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