PageRenderTime 61ms CodeModel.GetById 35ms RepoModel.GetById 1ms app.codeStats 0ms

/tests/observable/do.js

https://github.com/davgit/RxJS
JavaScript | 378 lines | 355 code | 23 blank | 0 comment | 0 complexity | e8f9ffed3bbe60a279a0f4e83726f26b MD5 | raw file
Possible License(s): Apache-2.0
  1. QUnit.module('Do');
  2. var Observable = Rx.Observable,
  3. TestScheduler = Rx.TestScheduler,
  4. onNext = Rx.ReactiveTest.onNext,
  5. onError = Rx.ReactiveTest.onError,
  6. onCompleted = Rx.ReactiveTest.onCompleted,
  7. subscribe = Rx.ReactiveTest.subscribe;
  8. test('Do_ShouldSeeAllValues', function () {
  9. var i, scheduler, sum, xs;
  10. scheduler = new TestScheduler();
  11. xs = scheduler.createHotObservable(onNext(150, 1), onNext(210, 2), onNext(220, 3), onNext(230, 4), onNext(240, 5), onCompleted(250));
  12. i = 0;
  13. sum = 2 + 3 + 4 + 5;
  14. scheduler.startWithCreate(function () {
  15. return xs.doAction(function (x) {
  16. i++;
  17. return sum -= x;
  18. });
  19. });
  20. equal(4, i);
  21. equal(0, sum);
  22. });
  23. test('Do_PlainAction', function () {
  24. var i, scheduler, xs;
  25. scheduler = new TestScheduler();
  26. xs = scheduler.createHotObservable(onNext(150, 1), onNext(210, 2), onNext(220, 3), onNext(230, 4), onNext(240, 5), onCompleted(250));
  27. i = 0;
  28. scheduler.startWithCreate(function () {
  29. return xs.doAction(function (x) {
  30. return i++;
  31. });
  32. });
  33. equal(4, i);
  34. });
  35. test('Do_NextCompleted', function () {
  36. var completed, i, scheduler, sum, xs;
  37. scheduler = new TestScheduler();
  38. xs = scheduler.createHotObservable(onNext(150, 1), onNext(210, 2), onNext(220, 3), onNext(230, 4), onNext(240, 5), onCompleted(250));
  39. i = 0;
  40. sum = 2 + 3 + 4 + 5;
  41. completed = false;
  42. scheduler.startWithCreate(function () {
  43. return xs.doAction(function (x) {
  44. i++;
  45. sum -= x;
  46. }, undefined, function () {
  47. completed = true;
  48. });
  49. });
  50. equal(4, i);
  51. equal(0, sum);
  52. ok(completed);
  53. });
  54. test('Do_NextCompleted_Never', function () {
  55. var completed, i, scheduler;
  56. scheduler = new TestScheduler();
  57. i = 0;
  58. completed = false;
  59. scheduler.startWithCreate(function () {
  60. return Rx.Observable.never().doAction(function (x) {
  61. i++;
  62. }, undefined, function () {
  63. completed = true;
  64. });
  65. });
  66. equal(0, i);
  67. ok(!completed);
  68. });
  69. test('Do_NextError', function () {
  70. var ex, i, sawError, scheduler, sum, xs;
  71. ex = 'ex';
  72. scheduler = new TestScheduler();
  73. xs = scheduler.createHotObservable(onNext(150, 1), onNext(210, 2), onNext(220, 3), onNext(230, 4), onNext(240, 5), onError(250, ex));
  74. i = 0;
  75. sum = 2 + 3 + 4 + 5;
  76. sawError = false;
  77. scheduler.startWithCreate(function () {
  78. return xs.doAction(function (x) {
  79. i++;
  80. sum -= x;
  81. }, function (e) {
  82. sawError = e === ex;
  83. });
  84. });
  85. equal(4, i);
  86. equal(0, sum);
  87. ok(sawError);
  88. });
  89. test('Do_NextErrorNot', function () {
  90. var i, sawError, scheduler, sum, xs;
  91. scheduler = new TestScheduler();
  92. xs = scheduler.createHotObservable(onNext(150, 1), onNext(210, 2), onNext(220, 3), onNext(230, 4), onNext(240, 5), onCompleted(250));
  93. i = 0;
  94. sum = 2 + 3 + 4 + 5;
  95. sawError = false;
  96. scheduler.startWithCreate(function () {
  97. return xs.doAction(function (x) {
  98. i++;
  99. sum -= x;
  100. }, function (e) {
  101. sawError = true;
  102. });
  103. });
  104. equal(4, i);
  105. equal(0, sum);
  106. ok(!sawError);
  107. });
  108. test('Do_NextErrorCompleted', function () {
  109. var hasCompleted, i, sawError, scheduler, sum, xs;
  110. scheduler = new TestScheduler();
  111. xs = scheduler.createHotObservable(onNext(150, 1), onNext(210, 2), onNext(220, 3), onNext(230, 4), onNext(240, 5), onCompleted(250));
  112. i = 0;
  113. sum = 2 + 3 + 4 + 5;
  114. sawError = false;
  115. hasCompleted = false;
  116. scheduler.startWithCreate(function () {
  117. return xs.doAction(function (x) {
  118. i++;
  119. sum -= x;
  120. }, function (e) {
  121. sawError = true;
  122. }, function () {
  123. hasCompleted = true;
  124. });
  125. });
  126. equal(4, i);
  127. equal(0, sum);
  128. ok(!sawError);
  129. ok(hasCompleted);
  130. });
  131. test('Do_NextErrorCompletedError', function () {
  132. var ex, hasCompleted, i, sawError, scheduler, sum, xs;
  133. ex = 'ex';
  134. scheduler = new TestScheduler();
  135. xs = scheduler.createHotObservable(onNext(150, 1), onNext(210, 2), onNext(220, 3), onNext(230, 4), onNext(240, 5), onError(250, ex));
  136. i = 0;
  137. sum = 2 + 3 + 4 + 5;
  138. sawError = false;
  139. hasCompleted = false;
  140. scheduler.startWithCreate(function () {
  141. return xs.doAction(function (x) {
  142. i++;
  143. sum -= x;
  144. }, function (e) {
  145. sawError = ex === e;
  146. }, function () {
  147. hasCompleted = true;
  148. });
  149. });
  150. equal(4, i);
  151. equal(0, sum);
  152. ok(sawError);
  153. ok(!hasCompleted);
  154. });
  155. test('Do_NextErrorCompletedNever', function () {
  156. var hasCompleted, i, sawError, scheduler;
  157. scheduler = new TestScheduler();
  158. i = 0;
  159. sawError = false;
  160. hasCompleted = false;
  161. scheduler.startWithCreate(function () {
  162. return Rx.Observable.never().doAction(function (x) {
  163. i++;
  164. }, function (e) {
  165. sawError = true;
  166. }, function () {
  167. hasCompleted = true;
  168. });
  169. });
  170. equal(0, i);
  171. ok(!sawError);
  172. ok(!hasCompleted);
  173. });
  174. test('Do_Observer_SomeDataWithError', function () {
  175. var ex, hasCompleted, i, sawError, scheduler, sum, xs;
  176. ex = 'ex';
  177. scheduler = new TestScheduler();
  178. xs = scheduler.createHotObservable(onNext(150, 1), onNext(210, 2), onNext(220, 3), onNext(230, 4), onNext(240, 5), onError(250, ex));
  179. i = 0;
  180. sum = 2 + 3 + 4 + 5;
  181. sawError = false;
  182. hasCompleted = false;
  183. scheduler.startWithCreate(function () {
  184. return xs.doAction(Rx.Observer.create(function (x) {
  185. i++;
  186. sum -= x;
  187. }, function (e) {
  188. sawError = e === ex;
  189. }, function () {
  190. hasCompleted = true;
  191. }));
  192. });
  193. equal(4, i);
  194. equal(0, sum);
  195. ok(sawError);
  196. ok(!hasCompleted);
  197. });
  198. test('Do_Observer_SomeDataWithError', function () {
  199. var hasCompleted, i, sawError, scheduler, sum, xs;
  200. scheduler = new TestScheduler();
  201. xs = scheduler.createHotObservable(onNext(150, 1), onNext(210, 2), onNext(220, 3), onNext(230, 4), onNext(240, 5), onCompleted(250));
  202. i = 0;
  203. sum = 2 + 3 + 4 + 5;
  204. sawError = false;
  205. hasCompleted = false;
  206. scheduler.startWithCreate(function () {
  207. return xs.doAction(Rx.Observer.create(function (x) {
  208. i++;
  209. sum -= x;
  210. }, function (e) {
  211. sawError = true;
  212. }, function () {
  213. hasCompleted = true;
  214. }));
  215. });
  216. equal(4, i);
  217. equal(0, sum);
  218. ok(!sawError);
  219. ok(hasCompleted);
  220. });
  221. test('Do1422_Next_NextThrows', function () {
  222. var ex, results, scheduler, xs;
  223. ex = 'ex';
  224. scheduler = new TestScheduler();
  225. xs = scheduler.createHotObservable(onNext(150, 1), onNext(210, 2), onCompleted(250));
  226. results = scheduler.startWithCreate(function () {
  227. return xs.doAction(function () {
  228. throw ex;
  229. });
  230. });
  231. results.messages.assertEqual(onError(210, ex));
  232. });
  233. test('Do1422_NextCompleted_NextThrows', function () {
  234. var ex, results, scheduler, xs, _undefined;
  235. ex = 'ex';
  236. scheduler = new TestScheduler();
  237. xs = scheduler.createHotObservable(onNext(150, 1), onNext(210, 2), onCompleted(250));
  238. results = scheduler.startWithCreate(function () {
  239. return xs.doAction(function () {
  240. throw ex;
  241. }, _undefined, function () { });
  242. });
  243. results.messages.assertEqual(onError(210, ex));
  244. });
  245. test('Do1422_NextCompleted_CompletedThrows', function () {
  246. var ex, results, scheduler, xs, _undefined;
  247. ex = 'ex';
  248. scheduler = new TestScheduler();
  249. xs = scheduler.createHotObservable(onNext(150, 1), onNext(210, 2), onCompleted(250));
  250. results = scheduler.startWithCreate(function () {
  251. return xs.doAction(function () { }, _undefined, function () {
  252. throw ex;
  253. });
  254. });
  255. results.messages.assertEqual(onNext(210, 2), onError(250, ex));
  256. });
  257. test('Do1422_NextError_NextThrows', function () {
  258. var ex, results, scheduler, xs;
  259. ex = 'ex';
  260. scheduler = new TestScheduler();
  261. xs = scheduler.createHotObservable(onNext(150, 1), onNext(210, 2), onCompleted(250));
  262. results = scheduler.startWithCreate(function () {
  263. return xs.doAction(function () {
  264. throw ex;
  265. }, function () { });
  266. });
  267. results.messages.assertEqual(onError(210, ex));
  268. });
  269. test('Do1422_NextError_NextThrows', function () {
  270. var ex1, ex2, results, scheduler, xs;
  271. ex1 = 'ex1';
  272. ex2 = 'ex2';
  273. scheduler = new TestScheduler();
  274. xs = scheduler.createHotObservable(onNext(150, 1), onError(210, ex1));
  275. results = scheduler.startWithCreate(function () {
  276. return xs.doAction(function () { }, function () {
  277. throw ex2;
  278. });
  279. });
  280. results.messages.assertEqual(onError(210, ex2));
  281. });
  282. test('Do1422_NextErrorCompleted_NextThrows', function () {
  283. var ex, results, scheduler, xs;
  284. ex = 'ex';
  285. scheduler = new TestScheduler();
  286. xs = scheduler.createHotObservable(onNext(150, 1), onNext(210, 2), onCompleted(250));
  287. results = scheduler.startWithCreate(function () {
  288. return xs.doAction(function () {
  289. throw ex;
  290. }, function () { }, function () { });
  291. });
  292. results.messages.assertEqual(onError(210, ex));
  293. });
  294. test('Do1422_NextErrorCompleted_ErrorThrows', function () {
  295. var ex1, ex2, results, scheduler, xs;
  296. ex1 = 'ex1';
  297. ex2 = 'ex2';
  298. scheduler = new TestScheduler();
  299. xs = scheduler.createHotObservable(onNext(150, 1), onError(210, ex1));
  300. results = scheduler.startWithCreate(function () {
  301. return xs.doAction(function () { }, function () {
  302. throw ex2;
  303. }, function () { });
  304. });
  305. results.messages.assertEqual(onError(210, ex2));
  306. });
  307. test('Do1422_NextErrorCompleted_CompletedThrows', function () {
  308. var ex, results, scheduler, xs;
  309. ex = 'ex';
  310. scheduler = new TestScheduler();
  311. xs = scheduler.createHotObservable(onNext(150, 1), onNext(210, 2), onCompleted(250));
  312. results = scheduler.startWithCreate(function () {
  313. return xs.doAction(function () { }, function () { }, function () {
  314. throw ex;
  315. });
  316. });
  317. results.messages.assertEqual(onNext(210, 2), onError(250, ex));
  318. });
  319. test('Do1422_Observer_NextThrows', function () {
  320. var ex, results, scheduler, xs;
  321. ex = 'ex';
  322. scheduler = new TestScheduler();
  323. xs = scheduler.createHotObservable(onNext(150, 1), onNext(210, 2), onCompleted(250));
  324. results = scheduler.startWithCreate(function () {
  325. return xs.doAction(Rx.Observer.create(function () {
  326. throw ex;
  327. }, function () { }, function () { }));
  328. });
  329. results.messages.assertEqual(onError(210, ex));
  330. });
  331. test('Do1422_Observer_ErrorThrows', function () {
  332. var ex1, ex2, results, scheduler, xs;
  333. ex1 = 'ex1';
  334. ex2 = 'ex2';
  335. scheduler = new TestScheduler();
  336. xs = scheduler.createHotObservable(onNext(150, 1), onError(210, ex1));
  337. results = scheduler.startWithCreate(function () {
  338. return xs.doAction(Rx.Observer.create(function () { }, function () {
  339. throw ex2;
  340. }, function () { }));
  341. });
  342. results.messages.assertEqual(onError(210, ex2));
  343. });
  344. test('Do1422_Observer_CompletedThrows', function () {
  345. var ex, results, scheduler, xs;
  346. ex = 'ex';
  347. scheduler = new TestScheduler();
  348. xs = scheduler.createHotObservable(onNext(150, 1), onNext(210, 2), onCompleted(250));
  349. results = scheduler.startWithCreate(function () {
  350. return xs.doAction(Rx.Observer.create(function () { }, function () { }, function () {
  351. throw ex;
  352. }));
  353. });
  354. results.messages.assertEqual(onNext(210, 2), onError(250, ex));
  355. });