UNPKG

@bett3r-dev/flyd

Version:

The less is more, modular, functional reactive programming library

74 lines (71 loc) 1.71 kB
var assert = require('assert'); var flyd = require('../../../lib'); var stream = flyd.stream; var inLast = require('../index.js'); describe('inLast', function() { it('adds values', function(done) { var s = stream(); var lastMs = inLast(50, s); s(1); setTimeout(function() { assert.deepEqual(lastMs(), [1]); s(2); }, 20); setTimeout(function() { assert.deepEqual(lastMs(), [1, 2]); done(); }, 40); }); it('adds and removes values', function(done) { var s = stream(); var lastMs = inLast(50, s); s(1); setTimeout(function() { assert.deepEqual(lastMs(), [1]); s(2); }, 35); setTimeout(function() { assert.deepEqual(lastMs(), [1, 2]); s(3); }, 40); setTimeout(function() { assert.deepEqual(lastMs(), [2, 3]); s(4); }, 60); setTimeout(function() { assert.deepEqual(lastMs(), [2, 3, 4]); s(5); }, 80); setTimeout(function() { assert.deepEqual(lastMs(), [4, 5]); done(); }, 100); }); it('is updated when values come and go', function(done) { var result = []; var s = stream(); var lastMs = inLast(50, s); flyd.map(function(a) { result.push(a); }, lastMs); s(1); setTimeout(function() { s(2); }, 35); setTimeout(function() { s(3); }, 40); // 1 leaves setTimeout(function() { s(4); }, 60); setTimeout(function() { s(5); }, 80); // 2 leaves // 3 leaves setTimeout(function() { assert.deepEqual(result, [ [1], [1, 2], [1, 2, 3], [2, 3], [2, 3, 4], [2, 3, 4, 5], [3, 4, 5], [4, 5] ]); done(); }, 100); }); });