/// /// import xs, {Listener, Producer} from '../../src/index'; import debounce from '../../src/extra/debounce'; import * as assert from 'assert'; describe('debounce (extra)', () => { it('should delay events until a period of silence has passed', (done) => { const producer: Producer = { start(out: Listener) { out.next(1); out.next(2); out.next(5); }, stop() {} } const stream = xs.create(producer).compose(debounce(100)); const expected = [5]; let listener = { next: (x: number) => { assert.equal(x, expected.shift()); if (expected.length === 0) { stream.removeListener(listener); done(); } }, error: (err: Error) => done(err), complete: () => done(new Error('This should not be called')), }; stream.addListener(listener); }); });