Blame view
node_modules/through/test/buffering.js
1.47 KB
f7563de62
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
var test = require('tape') var through = require('../') // must emit end before close. test('buffering', function(assert) { var ts = through(function (data) { this.queue(data) }, function () { this.queue(null) }) var ended = false, actual = [] ts.on('data', actual.push.bind(actual)) ts.on('end', function () { ended = true }) ts.write(1) ts.write(2) ts.write(3) assert.deepEqual(actual, [1, 2, 3]) ts.pause() ts.write(4) ts.write(5) ts.write(6) assert.deepEqual(actual, [1, 2, 3]) ts.resume() assert.deepEqual(actual, [1, 2, 3, 4, 5, 6]) ts.pause() ts.end() assert.ok(!ended) ts.resume() assert.ok(ended) assert.end() }) test('buffering has data in queue, when ends', function (assert) { /* * If stream ends while paused with data in the queue, * stream should still emit end after all data is written * on resume. */ var ts = through(function (data) { this.queue(data) }, function () { this.queue(null) }) var ended = false, actual = [] ts.on('data', actual.push.bind(actual)) ts.on('end', function () { ended = true }) ts.pause() ts.write(1) ts.write(2) ts.write(3) ts.end() assert.deepEqual(actual, [], 'no data written yet, still paused') assert.ok(!ended, 'end not emitted yet, still paused') ts.resume() assert.deepEqual(actual, [1, 2, 3], 'resumed, all data should be delivered') assert.ok(ended, 'end should be emitted once all data was delivered') assert.end(); }) |