Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
81172 views
1
var common = require('../common');
2
var assert = common.assert;
3
var fake = common.fake.create();
4
var DelayedStream = common.DelayedStream;
5
var Stream = require('stream').Stream;
6
7
(function testDelayEventsUntilResume() {
8
var source = new Stream();
9
var delayedStream = DelayedStream.create(source, {pauseStream: false});
10
11
// delayedStream must not emit until we resume
12
fake.expect(delayedStream, 'emit', 0);
13
14
// but our original source must emit
15
var params = [];
16
source.on('foo', function(param) {
17
params.push(param);
18
});
19
20
source.emit('foo', 1);
21
source.emit('foo', 2);
22
23
// Make sure delayedStream did not emit, and source did
24
assert.deepEqual(params, [1, 2]);
25
fake.verify();
26
27
// After resume, delayedStream must playback all events
28
fake
29
.stub(delayedStream, 'emit')
30
.times(Infinity)
31
.withArg(1, 'newListener');
32
fake.expect(delayedStream, 'emit', ['foo', 1]);
33
fake.expect(delayedStream, 'emit', ['foo', 2]);
34
fake.expect(source, 'resume');
35
36
delayedStream.resume();
37
fake.verify();
38
39
// Calling resume again will delegate to source
40
fake.expect(source, 'resume');
41
delayedStream.resume();
42
fake.verify();
43
44
// Emitting more events directly leads to them being emitted
45
fake.expect(delayedStream, 'emit', ['foo', 3]);
46
source.emit('foo', 3);
47
fake.verify();
48
})();
49
50