From 0a0a33fb2a5fbe63d449371f1e3ea91a969b8817 Mon Sep 17 00:00:00 2001 From: Jordan Harband Date: Thu, 25 Jan 2024 22:48:35 -0800 Subject: [PATCH] [Tests] increase coverage --- test/auto-destroy.js | 3 +-- test/buffering.js | 29 +++++++++++++++++++++++++++++ test/end.js | 44 ++++++++++++++++++++++++++++++++++++++------ test/index.js | 10 +++++++++- 4 files changed, 77 insertions(+), 9 deletions(-) diff --git a/test/auto-destroy.js b/test/auto-destroy.js index d08c72c..3bb22ba 100644 --- a/test/auto-destroy.js +++ b/test/auto-destroy.js @@ -6,8 +6,7 @@ var through = require('../'); // must emit end before close. test('end before close', function (assert) { - var ts = through(); - ts.autoDestroy = false; + var ts = through(null, null, { autoDestroy: false }); var ended = false; var closed = false; diff --git a/test/buffering.js b/test/buffering.js index 4209013..c28537f 100644 --- a/test/buffering.js +++ b/test/buffering.js @@ -68,3 +68,32 @@ test('buffering has data in queue, when ends', function (assert) { assert.ok(ended, 'end should be emitted once all data was delivered'); assert.end(); }); + +test('data pauses', function (t) { + var ts = through(); + + var results = []; + ts.on('data', function (data) { + ts.pause(); + results.push(data); + }); + + t.equal(ts.paused, false, 'starts not paused'); + + ts.write(1); + t.equal(ts.paused, true, 'pauses on write'); + ts.write(2); + t.equal(ts.paused, true, 'pauses on write'); + ts.write(3); + t.equal(ts.paused, true, 'pauses on write'); + + t.deepEqual(results, [1], 'has not been resumed'); + ts.resume(); + t.equal(ts.paused, true, 'resume unpauses, but write re-pauses'); + + t.deepEqual(results, [1, 2], 'has only been resumed once'); + ts.resume(); + t.deepEqual(results, [1, 2, 3], 'has been resumed twice'); + + t.end(); +}); diff --git a/test/end.js b/test/end.js index 93955c4..5fa72d9 100644 --- a/test/end.js +++ b/test/end.js @@ -5,17 +5,19 @@ var through = require('../'); // must emit end before close. -test('end before close', function (assert) { +test('end before close', function (t) { + t.plan(4); + var ts = through(); var ended = false; var closed = false; ts.on('end', function () { - assert.ok(!closed); + t.ok(!closed); ended = true; }); ts.on('close', function () { - assert.ok(ended); + t.ok(ended); closed = true; }); @@ -23,12 +25,16 @@ test('end before close', function (assert) { ts.write(2); ts.write(3); ts.end(); - assert.ok(ended); - assert.ok(closed); - assert.end(); + + t.ok(ended); + t.ok(closed); + + t.end(); }); test('end only once', function (t) { + t.plan(4); + var ts = through(); var ended = false; @@ -43,5 +49,31 @@ test('end only once', function (t) { ts.resume(); + t.equal(ended, true, 'is ended'); + + ts.end(); + t.equal(ended, true, 'is still ended after end()'); + + ts.end(); + t.equal(ended, true, 'is still ended after end() 2x'); + + t.end(); +}); + +test('end with value', function (t) { + var ts = through(null, null, { autoDestroy: false }); + + var results = []; + ts.on('data', function (data) { + results.push(data); + }); + + ts.queue(123); + ts.queue(456); + + ts.end('end'); + + t.deepEqual(results, [123, 456, 'end']); + t.end(); }); diff --git a/test/index.js b/test/index.js index ad1e32b..c79f1a5 100644 --- a/test/index.js +++ b/test/index.js @@ -78,8 +78,16 @@ test('simple functions', function (assert) { write(expected, t); }); -test('pauses', function (assert) { +test('pauses twice', function (t) { + var ts = through(); + + t.equal(ts.pause(), ts, 'when pausing, returns stream'); + t.equal(ts.pause(), undefined, 'when already paused, returns void'); + t.end(); +}); + +test('pauses', function (assert) { var l = 1000; var expected = [];