Home Manual Reference Source Test Repository

spec-js/operators/bufferCount-spec.js

"use strict";
var Rx = require('../../dist/package/Rx');
var chai_1 = require('chai');
var Observable = Rx.Observable;
/** @test {bufferCount} */
describe('Observable.prototype.bufferCount', function () {
    asDiagram('bufferCount(3,2)')('should emit buffers at intervals', function () {
        var values = {
            v: ['a', 'b', 'c'],
            w: ['c', 'd', 'e'],
            x: ['e', 'f', 'g'],
            y: ['g', 'h', 'i'],
            z: ['i']
        };
        var e1 = hot('--a--b--c--d--e--f--g--h--i--|');
        var expected = '--------v-----w-----x-----y--(z|)';
        expectObservable(e1.bufferCount(3, 2)).toBe(expected, values);
    });
    it('should emit buffers at buffersize of intervals if not specified', function () {
        var values = {
            x: ['a', 'b'],
            y: ['c', 'd'],
            z: ['e', 'f']
        };
        var e1 = hot('--a--b--c--d--e--f--|');
        var expected = '-----x-----y-----z--|';
        expectObservable(e1.bufferCount(2)).toBe(expected, values);
    });
    it('should buffer properly (issue #2062)', function () {
        var item$ = new Rx.Subject();
        var results = [];
        item$
            .bufferCount(3, 1)
            .subscribe(function (value) {
            results.push(value);
            if (value.join() === '1,2,3') {
                item$.next(4);
            }
        });
        item$.next(1);
        item$.next(2);
        item$.next(3);
        chai_1.expect(results).to.deep.equal([[1, 2, 3], [2, 3, 4]]);
    });
    it('should emit partial buffers if source completes before reaching specified buffer count', function () {
        var e1 = hot('--a--b--c--d--|');
        var expected = '--------------(x|)';
        expectObservable(e1.bufferCount(5)).toBe(expected, { x: ['a', 'b', 'c', 'd'] });
    });
    it('should emit full buffer then last partial buffer if source completes', function () {
        var e1 = hot('--a^-b--c--d--e--|');
        var e1subs = '^             !';
        var expected = '--------y-----(z|)';
        expectObservable(e1.bufferCount(3)).toBe(expected, { y: ['b', 'c', 'd'], z: ['e'] });
        expectSubscriptions(e1.subscriptions).toBe(e1subs);
    });
    it('should emit buffers at intervals, but stop when result is unsubscribed early', function () {
        var values = {
            v: ['a', 'b', 'c'],
            w: ['c', 'd', 'e']
        };
        var e1 = hot('--a--b--c--d--e--f--g--h--i--|');
        var unsub = '                  !           ';
        var subs = '^                 !           ';
        var expected = '--------v-----w----           ';
        expectObservable(e1.bufferCount(3, 2), unsub).toBe(expected, values);
        expectSubscriptions(e1.subscriptions).toBe(subs);
    });
    it('should not break unsubscription chains when result is unsubscribed explicitly', function () {
        var values = {
            v: ['a', 'b', 'c'],
            w: ['c', 'd', 'e']
        };
        var e1 = hot('--a--b--c--d--e--f--g--h--i--|');
        var subs = '^                 !           ';
        var expected = '--------v-----w----           ';
        var unsub = '                  !           ';
        var result = e1
            .mergeMap(function (x) { return Observable.of(x); })
            .bufferCount(3, 2)
            .mergeMap(function (x) { return Observable.of(x); });
        expectObservable(result, unsub).toBe(expected, values);
        expectSubscriptions(e1.subscriptions).toBe(subs);
    });
    it('should raise error if source raise error before reaching specified buffer count', function () {
        var e1 = hot('--a--b--c--d--#');
        var e1subs = '^             !';
        var expected = '--------------#';
        expectObservable(e1.bufferCount(5)).toBe(expected);
        expectSubscriptions(e1.subscriptions).toBe(e1subs);
    });
    it('should emit buffers with specified skip count when skip count is less than window count', function () {
        var values = {
            v: ['a', 'b', 'c'],
            w: ['b', 'c', 'd'],
            x: ['c', 'd', 'e'],
            y: ['d', 'e'],
            z: ['e']
        };
        var e1 = hot('--a--b--c--d--e--|');
        var e1subs = '^                !';
        var expected = '--------v--w--x--(yz|)';
        expectObservable(e1.bufferCount(3, 1)).toBe(expected, values);
        expectSubscriptions(e1.subscriptions).toBe(e1subs);
    });
    it('should emit buffers with specified skip count when skip count is more than window count', function () {
        var e1 = hot('--a--b--c--d--e--|');
        var e1subs = '^                !';
        var expected = '-----y--------z--|';
        var values = {
            y: ['a', 'b'],
            z: ['d', 'e']
        };
        expectObservable(e1.bufferCount(2, 3)).toBe(expected, values);
        expectSubscriptions(e1.subscriptions).toBe(e1subs);
    });
});
//# sourceMappingURL=bufferCount-spec.js.map