UNPKG

@reactivex/rxjs

Version:

Reactive Extensions for modern JavaScript

688 lines (678 loc) 39.1 kB
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <base data-ice="baseUrl" href="../../../"> <title data-ice="title">spec-js/operators/zipAll-spec.js | RxJS API Document</title> <link type="text/css" rel="stylesheet" href="css/style.css"> <link type="text/css" rel="stylesheet" href="css/prettify-tomorrow.css"> <script src="script/prettify/prettify.js"></script> <script src="script/manual.js"></script> <script data-ice="userScript" src="user/script/0-Rx.js"></script> <script data-ice="userScript" src="user/script/1-devtools-welcome.js"></script> <script data-ice="userScript" src="user/script/2-custom-manual-styles.js"></script> <script data-ice="userScript" src="user/script/3-decision-tree-widget.min.js"></script> <script data-ice="userScript" src="user/script/4-theme-toggler.js"></script> <link data-ice="userStyle" rel="stylesheet" href="user/css/0-main.css"> </head> <body class="layout-container" data-ice="rootContainer"> <header> <a href="./">Home</a> <a href="./manual/index.html" data-ice="manualHeaderLink">Manual</a> <a href="identifiers.html">Reference</a> <a href="source.html">Source</a> <a href="test.html" data-ice="testLink">Test</a> <a data-ice="repoURL" href="https://github.com/ReactiveX/RxJS" class="repo-url-github">Repository</a> <div class="search-box"> <span> <img src="./image/search.png"> <span class="search-input-edge"></span><input class="search-input"><span class="search-input-edge"></span> </span> <ul class="search-result"></ul> </div> </header> <nav class="navigation" data-ice="nav"><div> <ul> <li data-ice="doc"><span data-ice="kind" class="kind-variable">V</span><span data-ice="name"><span><a href="variable/index.html#static-variable-AsyncSubject">AsyncSubject</a></span></span></li> <li data-ice="doc"><span data-ice="kind" class="kind-variable">V</span><span data-ice="name"><span><a href="variable/index.html#static-variable-BehaviorSubject">BehaviorSubject</a></span></span></li> <li data-ice="doc"><span data-ice="kind" class="kind-variable">V</span><span data-ice="name"><span><a href="variable/index.html#static-variable-Notification">Notification</a></span></span></li> <li data-ice="doc"><span data-ice="kind" class="kind-variable">V</span><span data-ice="name"><span><a href="variable/index.html#static-variable-Observable">Observable</a></span></span></li> <li data-ice="doc"><span data-ice="kind" class="kind-variable">V</span><span data-ice="name"><span><a href="variable/index.html#static-variable-ReplaySubject">ReplaySubject</a></span></span></li> <li data-ice="doc"><span data-ice="kind" class="kind-variable">V</span><span data-ice="name"><span><a href="variable/index.html#static-variable-Scheduler">Scheduler</a></span></span></li> <li data-ice="doc"><span data-ice="kind" class="kind-variable">V</span><span data-ice="name"><span><a href="variable/index.html#static-variable-AnonymousSubject">AnonymousSubject</a></span></span></li> <li data-ice="doc"><span data-ice="kind" class="kind-variable">V</span><span data-ice="name"><span><a href="variable/index.html#static-variable-Subject">Subject</a></span></span></li> <li data-ice="doc"><span data-ice="kind" class="kind-variable">V</span><span data-ice="name"><span><a href="variable/index.html#static-variable-SubjectSubscriber">SubjectSubscriber</a></span></span></li> <li data-ice="doc"><span data-ice="kind" class="kind-variable">V</span><span data-ice="name"><span><a href="variable/index.html#static-variable-Subscriber">Subscriber</a></span></span></li> <li data-ice="doc"><span data-ice="kind" class="kind-variable">V</span><span data-ice="name"><span><a href="variable/index.html#static-variable-Subscription">Subscription</a></span></span></li> <li data-ice="doc"><span data-ice="kind" class="kind-typedef">T</span><span data-ice="name"><span><a href="typedef/index.html#static-typedef-Rx.Scheduler">Rx.Scheduler</a></span></span></li> <li data-ice="doc"><span data-ice="kind" class="kind-typedef">T</span><span data-ice="name"><span><a href="typedef/index.html#static-typedef-Rx.Symbol">Rx.Symbol</a></span></span></li> <li data-ice="doc"><div data-ice="dirPath" class="nav-dir-path">observable</div><span data-ice="kind" class="kind-variable">V</span><span data-ice="name"><span><a href="variable/index.html#static-variable-ConnectableObservable">ConnectableObservable</a></span></span></li> <li data-ice="doc"><div data-ice="dirPath" class="nav-dir-path">observable/dom</div><span data-ice="kind" class="kind-variable">V</span><span data-ice="name"><span><a href="variable/index.html#static-variable-AjaxError">AjaxError</a></span></span></li> <li data-ice="doc"><span data-ice="kind" class="kind-variable">V</span><span data-ice="name"><span><a href="variable/index.html#static-variable-AjaxResponse">AjaxResponse</a></span></span></li> <li data-ice="doc"><span data-ice="kind" class="kind-variable">V</span><span data-ice="name"><span><a href="variable/index.html#static-variable-AjaxTimeoutError">AjaxTimeoutError</a></span></span></li> <li data-ice="doc"><div data-ice="dirPath" class="nav-dir-path">operator</div><span data-ice="kind" class="kind-variable">V</span><span data-ice="name"><span><a href="variable/index.html#static-variable-GroupedObservable">GroupedObservable</a></span></span></li> <li data-ice="doc"><div data-ice="dirPath" class="nav-dir-path">scheduler</div><span data-ice="kind" class="kind-variable">V</span><span data-ice="name"><span><a href="variable/index.html#static-variable-Action">Action</a></span></span></li> <li data-ice="doc"><div data-ice="dirPath" class="nav-dir-path">util</div><span data-ice="kind" class="kind-variable">V</span><span data-ice="name"><span><a href="variable/index.html#static-variable-ArgumentOutOfRangeError">ArgumentOutOfRangeError</a></span></span></li> <li data-ice="doc"><span data-ice="kind" class="kind-variable">V</span><span data-ice="name"><span><a href="variable/index.html#static-variable-EmptyError">EmptyError</a></span></span></li> <li data-ice="doc"><span data-ice="kind" class="kind-variable">V</span><span data-ice="name"><span><a href="variable/index.html#static-variable-ObjectUnsubscribedError">ObjectUnsubscribedError</a></span></span></li> <li data-ice="doc"><span data-ice="kind" class="kind-variable">V</span><span data-ice="name"><span><a href="variable/index.html#static-variable-TimeoutError">TimeoutError</a></span></span></li> <li data-ice="doc"><span data-ice="kind" class="kind-variable">V</span><span data-ice="name"><span><a href="variable/index.html#static-variable-UnsubscriptionError">UnsubscriptionError</a></span></span></li> <li data-ice="doc"><span data-ice="kind" class="kind-variable">V</span><span data-ice="name"><span><a href="variable/index.html#static-variable-root">root</a></span></span></li> </ul> </div> </nav> <div class="content" data-ice="content"><h1 data-ice="title">spec-js/operators/zipAll-spec.js</h1> <pre class="source-code line-number raw-source-code"><code class="prettyprint linenums" data-ice="content">&quot;use strict&quot;; var chai_1 = require(&apos;chai&apos;); var Rx = require(&apos;../../dist/cjs/Rx&apos;); var Observable = Rx.Observable; var queueScheduler = Rx.Scheduler.queue; /** @test {zipAll} */ describe(&apos;Observable.prototype.zipAll&apos;, function () { asDiagram(&apos;zipAll&apos;)(&apos;should combine paired events from two observables&apos;, function () { var x = cold(&apos;-a-----b-|&apos;); var y = cold(&apos;--1-2-----&apos;); var outer = hot(&apos;-x----y--------| &apos;, { x: x, y: y }); var expected = &apos;-----------------A----B-|&apos;; var result = outer.zipAll(function (a, b) { return String(a) + String(b); }); expectObservable(result).toBe(expected, { A: &apos;a1&apos;, B: &apos;b2&apos; }); }); it(&apos;should combine two observables&apos;, function () { var a = hot(&apos;---1---2---3---&apos;); var asubs = &apos;^&apos;; var b = hot(&apos;--4--5--6--7--8--&apos;); var bsubs = &apos;^&apos;; var expected = &apos;---x---y---z&apos;; var values = { x: [&apos;1&apos;, &apos;4&apos;], y: [&apos;2&apos;, &apos;5&apos;], z: [&apos;3&apos;, &apos;6&apos;] }; expectObservable(Observable.of(a, b).zipAll()).toBe(expected, values); expectSubscriptions(a.subscriptions).toBe(asubs); expectSubscriptions(b.subscriptions).toBe(bsubs); }); it(&apos;should take all observables from the source and zip them&apos;, function (done) { var expected = [&apos;a1&apos;, &apos;b2&apos;, &apos;c3&apos;]; var i = 0; Observable.of(Observable.of(&apos;a&apos;, &apos;b&apos;, &apos;c&apos;), Observable.of(1, 2, 3)) .zipAll(function (a, b) { return a + b; }) .subscribe(function (x) { chai_1.expect(x).to.equal(expected[i++]); }, null, done); }); it(&apos;should end once one observable completes and its buffer is empty&apos;, function () { var e1 = hot(&apos;---a--b--c--| &apos;); var e1subs = &apos;^ ! &apos;; var e2 = hot(&apos;------d----e----f--------| &apos;); var e2subs = &apos;^ ! &apos;; var e3 = hot(&apos;--------h----i----j---------&apos;); // doesn&apos;t complete var e3subs = &apos;^ ! &apos;; var expected = &apos;--------x----y----(z|) &apos;; // e1 complete and buffer empty var values = { x: [&apos;a&apos;, &apos;d&apos;, &apos;h&apos;], y: [&apos;b&apos;, &apos;e&apos;, &apos;i&apos;], z: [&apos;c&apos;, &apos;f&apos;, &apos;j&apos;] }; expectObservable(Observable.of(e1, e2, e3).zipAll()).toBe(expected, values); expectSubscriptions(e1.subscriptions).toBe(e1subs); expectSubscriptions(e2.subscriptions).toBe(e2subs); expectSubscriptions(e3.subscriptions).toBe(e3subs); }); it(&apos;should end once one observable nexts and zips value from completed other &apos; + &apos;observable whose buffer is empty&apos;, function () { var e1 = hot(&apos;---a--b--c--| &apos;); var e1subs = &apos;^ ! &apos;; var e2 = hot(&apos;------d----e----f| &apos;); var e2subs = &apos;^ ! &apos;; var e3 = hot(&apos;--------h----i----j-------&apos;); // doesn&apos;t complete var e3subs = &apos;^ ! &apos;; var expected = &apos;--------x----y----(z|) &apos;; // e2 buffer empty and signaled complete var values = { x: [&apos;a&apos;, &apos;d&apos;, &apos;h&apos;], y: [&apos;b&apos;, &apos;e&apos;, &apos;i&apos;], z: [&apos;c&apos;, &apos;f&apos;, &apos;j&apos;] }; expectObservable(Observable.of(e1, e2, e3).zipAll()).toBe(expected, values); expectSubscriptions(e1.subscriptions).toBe(e1subs); expectSubscriptions(e2.subscriptions).toBe(e2subs); expectSubscriptions(e3.subscriptions).toBe(e3subs); }); describe(&apos;with iterables&apos;, function () { it(&apos;should zip them with values&apos;, function () { var myIterator = { count: 0, next: function () { return { value: this.count++, done: false }; } }; myIterator[Symbol.iterator] = function () { return this; }; var e1 = hot(&apos;---a---b---c---d---|&apos;); var e1subs = &apos;^ !&apos;; var expected = &apos;---w---x---y---z---|&apos;; var values = { w: [&apos;a&apos;, 0], x: [&apos;b&apos;, 1], y: [&apos;c&apos;, 2], z: [&apos;d&apos;, 3] }; expectObservable(Observable.of(e1, myIterator).zipAll()).toBe(expected, values); expectSubscriptions(e1.subscriptions).toBe(e1subs); }); it(&apos;should only call `next` as needed&apos;, function () { var nextCalled = 0; var myIterator = { count: 0, next: function () { nextCalled++; return { value: this.count++, done: false }; } }; myIterator[Symbol.iterator] = function () { return this; }; Observable.of(Observable.of(1, 2, 3), myIterator).zipAll() .subscribe(); // since zip will call `next()` in advance, total calls when // zipped with 3 other values should be 4. chai_1.expect(nextCalled).to.equal(4); }); it(&apos;should work with never observable and empty iterable&apos;, function () { var a = cold(&apos;-&apos;); var asubs = &apos;^&apos;; var b = []; var expected = &apos;-&apos;; expectObservable(Observable.of(a, b).zipAll()).toBe(expected); expectSubscriptions(a.subscriptions).toBe(asubs); }); it(&apos;should work with empty observable and empty iterable&apos;, function () { var a = cold(&apos;|&apos;); var asubs = &apos;(^!)&apos;; var b = []; var expected = &apos;|&apos;; expectObservable(Observable.of(a, b).zipAll()).toBe(expected); expectSubscriptions(a.subscriptions).toBe(asubs); }); it(&apos;should work with empty observable and non-empty iterable&apos;, function () { var a = cold(&apos;|&apos;); var asubs = &apos;(^!)&apos;; var b = [1]; var expected = &apos;|&apos;; expectObservable(Observable.of(a, b).zipAll()).toBe(expected); expectSubscriptions(a.subscriptions).toBe(asubs); }); it(&apos;should work with non-empty observable and empty iterable&apos;, function () { var a = hot(&apos;---^----a--|&apos;); var asubs = &apos;^ !&apos;; var b = []; var expected = &apos;--------|&apos;; expectObservable(Observable.of(a, b).zipAll()).toBe(expected); expectSubscriptions(a.subscriptions).toBe(asubs); }); it(&apos;should work with never observable and non-empty iterable&apos;, function () { var a = cold(&apos;-&apos;); var asubs = &apos;^&apos;; var b = [1]; var expected = &apos;-&apos;; expectObservable(Observable.of(a, b).zipAll()).toBe(expected); expectSubscriptions(a.subscriptions).toBe(asubs); }); it(&apos;should work with non-empty observable and non-empty iterable&apos;, function () { var a = hot(&apos;---^----1--|&apos;); var asubs = &apos;^ ! &apos;; var b = [2]; var expected = &apos;-----(x|)&apos;; expectObservable(Observable.of(a, b).zipAll()).toBe(expected, { x: [&apos;1&apos;, 2] }); expectSubscriptions(a.subscriptions).toBe(asubs); }); it(&apos;should work with non-empty observable and empty iterable&apos;, function () { var a = hot(&apos;---^----#&apos;); var asubs = &apos;^ !&apos;; var b = []; var expected = &apos;-----#&apos;; expectObservable(Observable.of(a, b).zipAll()).toBe(expected); expectSubscriptions(a.subscriptions).toBe(asubs); }); it(&apos;should work with observable which raises error and non-empty iterable&apos;, function () { var a = hot(&apos;---^----#&apos;); var asubs = &apos;^ !&apos;; var b = [1]; var expected = &apos;-----#&apos;; expectObservable(Observable.of(a, b).zipAll()).toBe(expected); expectSubscriptions(a.subscriptions).toBe(asubs); }); it(&apos;should work with non-empty many observable and non-empty many iterable&apos;, function () { var a = hot(&apos;---^--1--2--3--|&apos;); var asubs = &apos;^ ! &apos;; var b = [4, 5, 6]; var expected = &apos;---x--y--(z|)&apos;; expectObservable(Observable.of(a, b).zipAll()).toBe(expected, { x: [&apos;1&apos;, 4], y: [&apos;2&apos;, 5], z: [&apos;3&apos;, 6] }); expectSubscriptions(a.subscriptions).toBe(asubs); }); it(&apos;should work with non-empty observable and non-empty iterable selector that throws&apos;, function () { var a = hot(&apos;---^--1--2--3--|&apos;); var asubs = &apos;^ !&apos;; var b = [4, 5, 6]; var expected = &apos;---x--#&apos;; var selector = function (x, y) { if (y === 5) { throw new Error(&apos;too bad&apos;); } else { return x + y; } }; expectObservable(Observable.of(a, b).zipAll(selector)).toBe(expected, { x: &apos;14&apos; }, new Error(&apos;too bad&apos;)); expectSubscriptions(a.subscriptions).toBe(asubs); }); }); it(&apos;should combine two observables and selector&apos;, function () { var a = hot(&apos;---1---2---3---&apos;); var asubs = &apos;^&apos;; var b = hot(&apos;--4--5--6--7--8--&apos;); var bsubs = &apos;^&apos;; var expected = &apos;---x---y---z&apos;; expectObservable(Observable.of(a, b).zipAll(function (e1, e2) { return e1 + e2; })) .toBe(expected, { x: &apos;14&apos;, y: &apos;25&apos;, z: &apos;36&apos; }); expectSubscriptions(a.subscriptions).toBe(asubs); expectSubscriptions(b.subscriptions).toBe(bsubs); }); it(&apos;should work with n-ary symmetric&apos;, function () { var a = hot(&apos;---1-^-1----4----|&apos;); var asubs = &apos;^ ! &apos;; var b = hot(&apos;---1-^--2--5----| &apos;); var bsubs = &apos;^ ! &apos;; var c = hot(&apos;---1-^---3---6-| &apos;); var expected = &apos;----x---y-| &apos;; expectObservable(Observable.of(a, b, c).zipAll()).toBe(expected, { x: [&apos;1&apos;, &apos;2&apos;, &apos;3&apos;], y: [&apos;4&apos;, &apos;5&apos;, &apos;6&apos;] }); expectSubscriptions(a.subscriptions).toBe(asubs); expectSubscriptions(b.subscriptions).toBe(bsubs); }); it(&apos;should work with n-ary symmetric selector&apos;, function () { var a = hot(&apos;---1-^-1----4----|&apos;); var asubs = &apos;^ ! &apos;; var b = hot(&apos;---1-^--2--5----| &apos;); var bsubs = &apos;^ ! &apos;; var c = hot(&apos;---1-^---3---6-| &apos;); var expected = &apos;----x---y-| &apos;; var observable = Observable.of(a, b, c).zipAll(function (r0, r1, r2) { return [r0, r1, r2]; }); expectObservable(observable).toBe(expected, { x: [&apos;1&apos;, &apos;2&apos;, &apos;3&apos;], y: [&apos;4&apos;, &apos;5&apos;, &apos;6&apos;] }); expectSubscriptions(a.subscriptions).toBe(asubs); expectSubscriptions(b.subscriptions).toBe(bsubs); }); it(&apos;should work with n-ary symmetric array selector&apos;, function () { var a = hot(&apos;---1-^-1----4----|&apos;); var asubs = &apos;^ ! &apos;; var b = hot(&apos;---1-^--2--5----| &apos;); var bsubs = &apos;^ ! &apos;; var c = hot(&apos;---1-^---3---6-| &apos;); var expected = &apos;----x---y-| &apos;; var observable = Observable.of(a, b, c).zipAll(function (r0, r1, r2) { return [r0, r1, r2]; }); expectObservable(observable).toBe(expected, { x: [&apos;1&apos;, &apos;2&apos;, &apos;3&apos;], y: [&apos;4&apos;, &apos;5&apos;, &apos;6&apos;] }); expectSubscriptions(a.subscriptions).toBe(asubs); expectSubscriptions(b.subscriptions).toBe(bsubs); }); it(&apos;should work with some data asymmetric 1&apos;, function () { var a = hot(&apos;---1-^-1-3-5-7-9-x-y-z-w-u-|&apos;); var asubs = &apos;^ ! &apos;; var b = hot(&apos;---1-^--2--4--6--8--0--| &apos;); var bsubs = &apos;^ ! &apos;; var expected = &apos;---a--b--c--d--e--| &apos;; expectObservable(Observable.of(a, b).zipAll(function (r1, r2) { return r1 + r2; })) .toBe(expected, { a: &apos;12&apos;, b: &apos;34&apos;, c: &apos;56&apos;, d: &apos;78&apos;, e: &apos;90&apos; }); expectSubscriptions(a.subscriptions).toBe(asubs); expectSubscriptions(b.subscriptions).toBe(bsubs); }); it(&apos;should work with some data asymmetric 2&apos;, function () { var a = hot(&apos;---1-^--2--4--6--8--0--| &apos;); var asubs = &apos;^ ! &apos;; var b = hot(&apos;---1-^-1-3-5-7-9-x-y-z-w-u-|&apos;); var bsubs = &apos;^ ! &apos;; var expected = &apos;---a--b--c--d--e--| &apos;; expectObservable(Observable.of(a, b).zipAll(function (r1, r2) { return r1 + r2; })) .toBe(expected, { a: &apos;21&apos;, b: &apos;43&apos;, c: &apos;65&apos;, d: &apos;87&apos;, e: &apos;09&apos; }); expectSubscriptions(a.subscriptions).toBe(asubs); expectSubscriptions(b.subscriptions).toBe(bsubs); }); it(&apos;should work with some data symmetric&apos;, function () { var a = hot(&apos;---1-^-1-3-5-7-9------| &apos;); var asubs = &apos;^ ! &apos;; var b = hot(&apos;---1-^--2--4--6--8--0--|&apos;); var bsubs = &apos;^ ! &apos;; var expected = &apos;---a--b--c--d--e-| &apos;; expectObservable(Observable.of(a, b).zipAll(function (r1, r2) { return r1 + r2; })) .toBe(expected, { a: &apos;12&apos;, b: &apos;34&apos;, c: &apos;56&apos;, d: &apos;78&apos;, e: &apos;90&apos; }); expectSubscriptions(a.subscriptions).toBe(asubs); expectSubscriptions(b.subscriptions).toBe(bsubs); }); it(&apos;should work with selector throws&apos;, function () { var a = hot(&apos;---1-^-2---4----| &apos;); var asubs = &apos;^ ! &apos;; var b = hot(&apos;---1-^--3----5----|&apos;); var bsubs = &apos;^ ! &apos;; var expected = &apos;---x----# &apos;; var selector = function (x, y) { if (y === &apos;5&apos;) { throw new Error(&apos;too bad&apos;); } else { return x + y; } }; var observable = Observable.of(a, b).zipAll(selector); expectObservable(observable).toBe(expected, { x: &apos;23&apos; }, new Error(&apos;too bad&apos;)); expectSubscriptions(a.subscriptions).toBe(asubs); expectSubscriptions(b.subscriptions).toBe(bsubs); }); it(&apos;should work with right completes first&apos;, function () { var a = hot(&apos;---1-^-2-----|&apos;); var asubs = &apos;^ !&apos;; var b = hot(&apos;---1-^--3--|&apos;); var bsubs = &apos;^ !&apos;; var expected = &apos;---x--|&apos;; expectObservable(Observable.zip(a, b)).toBe(expected, { x: [&apos;2&apos;, &apos;3&apos;] }); expectSubscriptions(a.subscriptions).toBe(asubs); expectSubscriptions(b.subscriptions).toBe(bsubs); }); it(&apos;should zip until one child terminates&apos;, function (done) { var expected = [&apos;a1&apos;, &apos;b2&apos;]; var i = 0; Observable.of(Observable.of(&apos;a&apos;, &apos;b&apos;, &apos;c&apos;), Observable.of(1, 2)) .zipAll(function (a, b) { return a + b; }) .subscribe(function (x) { chai_1.expect(x).to.equal(expected[i++]); }, null, done); }); it(&apos;should handle a hot observable of observables&apos;, function () { var x = cold(&apos;a---b---c---| &apos;); var xsubs = &apos; ^ !&apos;; var y = cold(&apos;d---e---f---| &apos;); var ysubs = &apos; ^ !&apos;; var e1 = hot(&apos;--x--y--| &apos;, { x: x, y: y }); var e1subs = &apos;^ !&apos;; var expected = &apos;--------u---v---w---|&apos;; var values = { u: [&apos;a&apos;, &apos;d&apos;], v: [&apos;b&apos;, &apos;e&apos;], w: [&apos;c&apos;, &apos;f&apos;] }; expectObservable(e1.zipAll()).toBe(expected, values); expectSubscriptions(x.subscriptions).toBe(xsubs); expectSubscriptions(y.subscriptions).toBe(ysubs); expectSubscriptions(e1.subscriptions).toBe(e1subs); }); it(&apos;should handle merging a hot observable of non-overlapped observables&apos;, function () { var x = cold(&apos;a-b---------| &apos;); var xsubs = &apos; ^ !&apos;; var y = cold(&apos;c-d-e-f-| &apos;); var ysubs = &apos; ^ ! &apos;; var z = cold(&apos;g-h-i-j-k-| &apos;); var zsubs = &apos; ^ ! &apos;; var e1 = hot(&apos;--x------y--------z--------| &apos;, { x: x, y: y, z: z }); var e1subs = &apos;^ !&apos;; var expected = &apos;---------------------------u-v---------|&apos;; var values = { u: [&apos;a&apos;, &apos;c&apos;, &apos;g&apos;], v: [&apos;b&apos;, &apos;d&apos;, &apos;h&apos;] }; expectObservable(e1.zipAll()).toBe(expected, values); expectSubscriptions(x.subscriptions).toBe(xsubs); expectSubscriptions(y.subscriptions).toBe(ysubs); expectSubscriptions(z.subscriptions).toBe(zsubs); expectSubscriptions(e1.subscriptions).toBe(e1subs); }); it(&apos;should raise error if inner observable raises error&apos;, function () { var x = cold(&apos;a-b---------| &apos;); var xsubs = &apos; ^ !&apos;; var y = cold(&apos;c-d-e-f-# &apos;); var ysubs = &apos; ^ !&apos;; var z = cold(&apos;g-h-i-j-k-| &apos;); var zsubs = &apos; ^ !&apos;; var e1 = hot(&apos;--x---------y--------z--------|&apos;, { x: x, y: y, z: z }); var e1subs = &apos;^ !&apos;; var expected = &apos;------------------------------u-v-----#&apos;; var expectedValues = { u: [&apos;a&apos;, &apos;c&apos;, &apos;g&apos;], v: [&apos;b&apos;, &apos;d&apos;, &apos;h&apos;] }; expectObservable(e1.zipAll()).toBe(expected, expectedValues); expectSubscriptions(x.subscriptions).toBe(xsubs); expectSubscriptions(y.subscriptions).toBe(ysubs); expectSubscriptions(z.subscriptions).toBe(zsubs); expectSubscriptions(e1.subscriptions).toBe(e1subs); }); it(&apos;should raise error if outer observable raises error&apos;, function () { var y = cold(&apos;a-b---------|&apos;); var z = cold(&apos;c-d-e-f-|&apos;); var e1 = hot(&apos;--y---------z---#&apos;, { y: y, z: z }); var e1subs = &apos;^ !&apos;; var expected = &apos;----------------#&apos;; expectObservable(e1.zipAll()).toBe(expected); expectSubscriptions(e1.subscriptions).toBe(e1subs); }); it(&apos;should work with two nevers&apos;, function () { var a = cold(&apos;-&apos;); var asubs = &apos;^&apos;; var b = cold(&apos;-&apos;); var bsubs = &apos;^&apos;; var expected = &apos;-&apos;; expectObservable(Observable.of(a, b).zipAll()).toBe(expected); expectSubscriptions(a.subscriptions).toBe(asubs); expectSubscriptions(b.subscriptions).toBe(bsubs); }); it(&apos;should work with never and empty&apos;, function () { var a = cold(&apos;-&apos;); var asubs = &apos;(^!)&apos;; var b = cold(&apos;|&apos;); var bsubs = &apos;(^!)&apos;; var expected = &apos;|&apos;; expectObservable(Observable.of(a, b).zipAll()).toBe(expected); expectSubscriptions(a.subscriptions).toBe(asubs); expectSubscriptions(b.subscriptions).toBe(bsubs); }); it(&apos;should work with empty and never&apos;, function () { var a = cold(&apos;|&apos;); var asubs = &apos;(^!)&apos;; var b = cold(&apos;-&apos;); var bsubs = &apos;(^!)&apos;; var expected = &apos;|&apos;; expectObservable(Observable.of(a, b).zipAll()).toBe(expected); expectSubscriptions(a.subscriptions).toBe(asubs); expectSubscriptions(b.subscriptions).toBe(bsubs); }); it(&apos;should work with empty and empty&apos;, function () { var a = cold(&apos;|&apos;); var asubs = &apos;(^!)&apos;; var b = cold(&apos;|&apos;); var bsubs = &apos;(^!)&apos;; var expected = &apos;|&apos;; expectObservable(Observable.of(a, b).zipAll()).toBe(expected); expectSubscriptions(a.subscriptions).toBe(asubs); expectSubscriptions(b.subscriptions).toBe(bsubs); }); it(&apos;should work with empty and non-empty&apos;, function () { var a = cold(&apos;|&apos;); var asubs = &apos;(^!)&apos;; var b = hot(&apos;---1--|&apos;); var bsubs = &apos;(^!)&apos;; var expected = &apos;|&apos;; expectObservable(Observable.of(a, b).zipAll()).toBe(expected); expectSubscriptions(a.subscriptions).toBe(asubs); expectSubscriptions(b.subscriptions).toBe(bsubs); }); it(&apos;should work with non-empty and empty&apos;, function () { var a = hot(&apos;---1--|&apos;); var asubs = &apos;(^!)&apos;; var b = cold(&apos;|&apos;); var bsubs = &apos;(^!)&apos;; var expected = &apos;|&apos;; expectObservable(Observable.of(a, b).zipAll()).toBe(expected); expectSubscriptions(a.subscriptions).toBe(asubs); expectSubscriptions(b.subscriptions).toBe(bsubs); }); it(&apos;should work with never and non-empty&apos;, function () { var a = cold(&apos;-&apos;); var asubs = &apos;^&apos;; var b = hot(&apos;---1--|&apos;); var bsubs = &apos;^ !&apos;; var expected = &apos;-&apos;; expectObservable(Observable.of(a, b).zipAll()).toBe(expected); expectSubscriptions(a.subscriptions).toBe(asubs); expectSubscriptions(b.subscriptions).toBe(bsubs); }); it(&apos;should work with non-empty and never&apos;, function () { var a = hot(&apos;---1--|&apos;); var asubs = &apos;^ !&apos;; var b = cold(&apos;-&apos;); var bsubs = &apos;^&apos;; var expected = &apos;-&apos;; expectObservable(Observable.of(a, b).zipAll()).toBe(expected); expectSubscriptions(a.subscriptions).toBe(asubs); expectSubscriptions(b.subscriptions).toBe(bsubs); }); it(&apos;should combine a source with a second&apos;, function () { var a = hot(&apos;---1---2---3---&apos;); var asubs = &apos;^&apos;; var b = hot(&apos;--4--5--6--7--8--&apos;); var bsubs = &apos;^&apos;; var expected = &apos;---x---y---z&apos;; expectObservable(Observable.of(a, b).zipAll()) .toBe(expected, { x: [&apos;1&apos;, &apos;4&apos;], y: [&apos;2&apos;, &apos;5&apos;], z: [&apos;3&apos;, &apos;6&apos;] }); expectSubscriptions(a.subscriptions).toBe(asubs); expectSubscriptions(b.subscriptions).toBe(bsubs); }); it(&apos;should work with empty and error&apos;, function () { var a = cold(&apos;|&apos;); var asubs = &apos;(^!)&apos;; var b = hot(&apos;------#&apos;, null, &apos;too bad&apos;); var bsubs = &apos;(^!)&apos;; var expected = &apos;|&apos;; expectObservable(Observable.of(a, b).zipAll()).toBe(expected); expectSubscriptions(a.subscriptions).toBe(asubs); expectSubscriptions(b.subscriptions).toBe(bsubs); }); it(&apos;should work with error and empty&apos;, function () { var a = hot(&apos;------#&apos;, null, &apos;too bad&apos;); var asubs = &apos;(^!)&apos;; var b = cold(&apos;|&apos;); var bsubs = &apos;(^!)&apos;; var expected = &apos;|&apos;; expectObservable(Observable.of(a, b).zipAll()).toBe(expected); expectSubscriptions(a.subscriptions).toBe(asubs); expectSubscriptions(b.subscriptions).toBe(bsubs); }); it(&apos;should work with error&apos;, function () { var a = hot(&apos;----------|&apos;); var asubs = &apos;^ ! &apos;; var b = hot(&apos;------# &apos;); var bsubs = &apos;^ ! &apos;; var expected = &apos;------# &apos;; expectObservable(Observable.of(a, b).zipAll()).toBe(expected); expectSubscriptions(a.subscriptions).toBe(asubs); expectSubscriptions(b.subscriptions).toBe(bsubs); }); it(&apos;should work with never and error&apos;, function () { var a = cold(&apos;-&apos;); var asubs = &apos;^ !&apos;; var b = hot(&apos;------#&apos;); var bsubs = &apos;^ !&apos;; var expected = &apos;------#&apos;; expectObservable(Observable.of(a, b).zipAll()).toBe(expected); expectSubscriptions(a.subscriptions).toBe(asubs); expectSubscriptions(b.subscriptions).toBe(bsubs); }); it(&apos;should work with error and never&apos;, function () { var a = hot(&apos;------#&apos;); var asubs = &apos;^ !&apos;; var b = cold(&apos;-&apos;); var bsubs = &apos;^ !&apos;; var expected = &apos;------#&apos;; expectObservable(Observable.of(a, b).zipAll()).toBe(expected); expectSubscriptions(a.subscriptions).toBe(asubs); expectSubscriptions(b.subscriptions).toBe(bsubs); }); it(&apos;should work with error and error&apos;, function () { var a = hot(&apos;------#&apos;, null, &apos;too bad&apos;); var asubs = &apos;^ !&apos;; var b = hot(&apos;----------#&apos;, null, &apos;too bad 2&apos;); var bsubs = &apos;^ !&apos;; var expected = &apos;------#&apos;; expectObservable(Observable.of(a, b).zipAll()).toBe(expected, null, &apos;too bad&apos;); expectSubscriptions(a.subscriptions).toBe(asubs); expectSubscriptions(b.subscriptions).toBe(bsubs); }); it(&apos;should work with two sources that eventually raise errors&apos;, function () { var a = hot(&apos;--w-----#----&apos;, { w: 1 }, &apos;too bad&apos;); var asubs = &apos;^ !&apos;; var b = hot(&apos;-----z-----#-&apos;, { z: 2 }, &apos;too bad 2&apos;); var bsubs = &apos;^ !&apos;; var expected = &apos;-----x--#&apos;; expectObservable(Observable.of(a, b).zipAll()).toBe(expected, { x: [1, 2] }, &apos;too bad&apos;); expectSubscriptions(a.subscriptions).toBe(asubs); expectSubscriptions(b.subscriptions).toBe(bsubs); }); it(&apos;should work with two sources that eventually raise errors (swapped)&apos;, function () { var a = hot(&apos;-----z-----#-&apos;, { z: 2 }, &apos;too bad 2&apos;); var asubs = &apos;^ !&apos;; var b = hot(&apos;--w-----#----&apos;, { w: 1 }, &apos;too bad&apos;); var bsubs = &apos;^ !&apos;; var expected = &apos;-----x--#&apos;; expectObservable(Observable.of(a, b).zipAll()).toBe(expected, { x: [2, 1] }, &apos;too bad&apos;); expectSubscriptions(a.subscriptions).toBe(asubs); expectSubscriptions(b.subscriptions).toBe(bsubs); }); it(&apos;should work with error and some&apos;, function () { var a = cold(&apos;#&apos;); var asubs = &apos;(^!)&apos;; var b = hot(&apos;--1--2--3--&apos;); var bsubs = &apos;(^!)&apos;; var expected = &apos;#&apos;; expectObservable(Observable.of(a, b).zipAll()).toBe(expected); expectSubscriptions(a.subscriptions).toBe(asubs); expectSubscriptions(b.subscriptions).toBe(bsubs); }); it(&apos;should combine two immediately-scheduled observables&apos;, function (done) { var a = Observable.of(1, 2, 3, queueScheduler); var b = Observable.of(4, 5, 6, 7, 8, queueScheduler); var r = [[1, 4], [2, 5], [3, 6]]; var i = 0; var result = Observable.of(a, b, queueScheduler).zipAll(); result.subscribe(function (vals) { chai_1.expect(vals).to.deep.equal(r[i++]); }, null, done); }); it(&apos;should combine a source with an immediately-scheduled source&apos;, function (done) { var a = Observable.of(1, 2, 3, queueScheduler); var b = Observable.of(4, 5, 6, 7, 8); var r = [[1, 4], [2, 5], [3, 6]]; var i = 0; var result = Observable.of(a, b, queueScheduler).zipAll(); result.subscribe(function (vals) { chai_1.expect(vals).to.deep.equal(r[i++]); }, null, done); }); it(&apos;should not break unsubscription chain when unsubscribed explicitly&apos;, function () { var a = hot(&apos;---1---2---3---|&apos;); var unsub = &apos; !&apos;; var asubs = &apos;^ !&apos;; var b = hot(&apos;--4--5--6--7--8--|&apos;); var bsubs = &apos;^ !&apos;; var expected = &apos;---x---y--&apos;; var values = { x: [&apos;1&apos;, &apos;4&apos;], y: [&apos;2&apos;, &apos;5&apos;] }; var r = Observable.of(a, b) .mergeMap(function (x) { return Observable.of(x); }) .zipAll() .mergeMap(function (x) { return Observable.of(x); }); expectObservable(r, unsub).toBe(expected, values); expectSubscriptions(a.subscriptions).toBe(asubs); expectSubscriptions(b.subscriptions).toBe(bsubs); }); }); //# sourceMappingURL=zipAll-spec.js.map</code></pre> </div> <footer class="footer"> Generated by <a href="https://esdoc.org">ESDoc<span data-ice="esdocVersion">(0.4.8)</span></a> </footer> <script src="script/search_index.js"></script> <script src="script/search.js"></script> <script src="script/pretty-print.js"></script> <script src="script/inherited-summary.js"></script> <script src="script/test-summary.js"></script> <script src="script/inner-link.js"></script> <script src="script/patch-for-local.js"></script> </body> </html>