AppendPrependTest.cs 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314
  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.Reactive.Linq;
  5. using Microsoft.Reactive.Testing;
  6. using Xunit;
  7. namespace ReactiveTests.Tests
  8. {
  9. public class AppendPrependTest : ReactiveTest
  10. {
  11. [Fact]
  12. public void AppendPrepend()
  13. {
  14. var scheduler = new TestScheduler();
  15. var xs = scheduler.CreateHotObservable(
  16. OnNext(150, 1),
  17. OnNext(220, 2),
  18. OnCompleted<int>(250)
  19. );
  20. var res = scheduler.Start(() =>
  21. xs.Append(3).Prepend(4)
  22. );
  23. res.Messages.AssertEqual(
  24. OnNext(200, 4),
  25. OnNext(220, 2),
  26. OnNext(250, 3),
  27. OnCompleted<int>(250)
  28. );
  29. }
  30. [Fact]
  31. public void PrependAppend()
  32. {
  33. var scheduler = new TestScheduler();
  34. var xs = scheduler.CreateHotObservable(
  35. OnNext(150, 1),
  36. OnNext(220, 2),
  37. OnCompleted<int>(250)
  38. );
  39. var res = scheduler.Start(() =>
  40. xs.Prepend(4).Append(3)
  41. );
  42. res.Messages.AssertEqual(
  43. OnNext(200, 4),
  44. OnNext(220, 2),
  45. OnNext(250, 3),
  46. OnCompleted<int>(250)
  47. );
  48. }
  49. [Fact]
  50. public void AppendPrepend_Scheduler()
  51. {
  52. var scheduler = new TestScheduler();
  53. var xs = scheduler.CreateHotObservable(
  54. OnNext(150, 1),
  55. OnNext(220, 2),
  56. OnCompleted<int>(250)
  57. );
  58. var res = scheduler.Start(() =>
  59. xs.Append(3, scheduler).Prepend(4, scheduler)
  60. );
  61. res.Messages.AssertEqual(
  62. OnNext(201, 4),
  63. OnNext(220, 2),
  64. OnNext(251, 3),
  65. OnCompleted<int>(251)
  66. );
  67. }
  68. [Fact]
  69. public void PrependAppend_Scheduler()
  70. {
  71. var scheduler = new TestScheduler();
  72. var xs = scheduler.CreateHotObservable(
  73. OnNext(150, 1),
  74. OnNext(220, 2),
  75. OnCompleted<int>(250)
  76. );
  77. var res = scheduler.Start(() =>
  78. xs.Prepend(4, scheduler).Append(3, scheduler)
  79. );
  80. res.Messages.AssertEqual(
  81. OnNext(201, 4),
  82. OnNext(220, 2),
  83. OnNext(251, 3),
  84. OnCompleted<int>(251)
  85. );
  86. }
  87. [Fact]
  88. public void AppendPrepend_Many()
  89. {
  90. var scheduler = new TestScheduler();
  91. var xs = scheduler.CreateHotObservable(
  92. OnNext(150, 1),
  93. OnNext(220, 2),
  94. OnCompleted<int>(250)
  95. );
  96. var res = scheduler.Start(() =>
  97. xs.Append(3).Append(4).Append(5).Prepend(6).Prepend(7).Prepend(8)
  98. );
  99. res.Messages.AssertEqual(
  100. OnNext(200, 8),
  101. OnNext(200, 7),
  102. OnNext(200, 6),
  103. OnNext(220, 2),
  104. OnNext(250, 3),
  105. OnNext(250, 4),
  106. OnNext(250, 5),
  107. OnCompleted<int>(250)
  108. );
  109. }
  110. [Fact]
  111. public void PrependAppend_Many()
  112. {
  113. var scheduler = new TestScheduler();
  114. var xs = scheduler.CreateHotObservable(
  115. OnNext(150, 1),
  116. OnNext(220, 2),
  117. OnCompleted<int>(250)
  118. );
  119. var res = scheduler.Start(() =>
  120. xs.Prepend(6).Prepend(7).Prepend(8).Append(3).Append(4).Append(5)
  121. );
  122. res.Messages.AssertEqual(
  123. OnNext(200, 8),
  124. OnNext(200, 7),
  125. OnNext(200, 6),
  126. OnNext(220, 2),
  127. OnNext(250, 3),
  128. OnNext(250, 4),
  129. OnNext(250, 5),
  130. OnCompleted<int>(250)
  131. );
  132. }
  133. [Fact]
  134. public void AppendPrepend_Many_Scheduler()
  135. {
  136. var scheduler = new TestScheduler();
  137. var xs = scheduler.CreateHotObservable(
  138. OnNext(150, 1),
  139. OnNext(220, 2),
  140. OnCompleted<int>(250)
  141. );
  142. var res = scheduler.Start(() =>
  143. xs.Append(3, scheduler)
  144. .Append(4, scheduler)
  145. .Append(5, scheduler)
  146. .Prepend(6, scheduler)
  147. .Prepend(7, scheduler)
  148. .Prepend(8, scheduler)
  149. );
  150. res.Messages.AssertEqual(
  151. OnNext(201, 8),
  152. OnNext(202, 7),
  153. OnNext(203, 6),
  154. OnNext(220, 2),
  155. OnNext(251, 3),
  156. OnNext(252, 4),
  157. OnNext(253, 5),
  158. OnCompleted<int>(253)
  159. );
  160. }
  161. [Fact]
  162. public void PrependAppend_Many_Scheduler()
  163. {
  164. var scheduler = new TestScheduler();
  165. var xs = scheduler.CreateHotObservable(
  166. OnNext(150, 1),
  167. OnNext(220, 2),
  168. OnCompleted<int>(250)
  169. );
  170. var res = scheduler.Start(() =>
  171. xs.Prepend(6, scheduler)
  172. .Prepend(7, scheduler)
  173. .Prepend(8, scheduler)
  174. .Append(3, scheduler)
  175. .Append(4, scheduler)
  176. .Append(5, scheduler)
  177. );
  178. res.Messages.AssertEqual(
  179. OnNext(201, 8),
  180. OnNext(202, 7),
  181. OnNext(203, 6),
  182. OnNext(220, 2),
  183. OnNext(251, 3),
  184. OnNext(252, 4),
  185. OnNext(253, 5),
  186. OnCompleted<int>(253)
  187. );
  188. }
  189. [Fact]
  190. public void AppendPrepend_Mixed()
  191. {
  192. var scheduler = new TestScheduler();
  193. var xs = scheduler.CreateHotObservable(
  194. OnNext(150, 1),
  195. OnNext(220, 2),
  196. OnCompleted<int>(250)
  197. );
  198. var res = scheduler.Start(() =>
  199. xs.Append(3).Prepend(6).Append(4).Prepend(7).Prepend(8).Append(5)
  200. );
  201. res.Messages.AssertEqual(
  202. OnNext(200, 8),
  203. OnNext(200, 7),
  204. OnNext(200, 6),
  205. OnNext(220, 2),
  206. OnNext(250, 3),
  207. OnNext(250, 4),
  208. OnNext(250, 5),
  209. OnCompleted<int>(250)
  210. );
  211. }
  212. [Fact]
  213. public void AppendPrepend_Mixed_Scheduler()
  214. {
  215. var scheduler = new TestScheduler();
  216. var xs = scheduler.CreateHotObservable(
  217. OnNext(150, 1),
  218. OnNext(220, 2),
  219. OnCompleted<int>(250)
  220. );
  221. var res = scheduler.Start(() =>
  222. xs.Append(3, scheduler)
  223. .Prepend(6, scheduler)
  224. .Append(4, scheduler)
  225. .Prepend(7, scheduler)
  226. .Prepend(8, scheduler)
  227. .Append(5, scheduler)
  228. );
  229. res.Messages.AssertEqual(
  230. OnNext(201, 8),
  231. OnNext(202, 7),
  232. OnNext(203, 6),
  233. OnNext(220, 2),
  234. OnNext(251, 3),
  235. OnNext(252, 4),
  236. OnNext(253, 5),
  237. OnCompleted<int>(253)
  238. );
  239. }
  240. [Fact]
  241. public void AppendPrepend_MixedSchedulers()
  242. {
  243. var scheduler = new TestScheduler();
  244. var xs = scheduler.CreateHotObservable(
  245. OnNext(150, 1),
  246. OnNext(220, 2),
  247. OnCompleted<int>(250)
  248. );
  249. var res = scheduler.Start(() =>
  250. xs.Append(3, scheduler)
  251. .Prepend(6)
  252. .Append(4, scheduler)
  253. .Prepend(7)
  254. .Prepend(8, scheduler)
  255. .Append(5)
  256. );
  257. res.Messages.AssertEqual(
  258. OnNext(201, 8),
  259. OnNext(201, 7),
  260. OnNext(201, 6),
  261. OnNext(220, 2),
  262. OnNext(251, 3),
  263. OnNext(252, 4),
  264. OnNext(252, 5),
  265. OnCompleted<int>(252)
  266. );
  267. }
  268. }
  269. }