summaryrefslogtreecommitdiff
path: root/deps/npm/node_modules/mute-stream/test/basic.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/npm/node_modules/mute-stream/test/basic.js')
-rw-r--r--deps/npm/node_modules/mute-stream/test/basic.js207
1 files changed, 207 insertions, 0 deletions
diff --git a/deps/npm/node_modules/mute-stream/test/basic.js b/deps/npm/node_modules/mute-stream/test/basic.js
new file mode 100644
index 0000000000..41f9e10c38
--- /dev/null
+++ b/deps/npm/node_modules/mute-stream/test/basic.js
@@ -0,0 +1,207 @@
+var Stream = require('stream')
+var tap = require('tap')
+var MS = require('../mute.js')
+
+// some marker objects
+var END = {}
+var PAUSE = {}
+var RESUME = {}
+
+function PassThrough () {
+ Stream.call(this)
+ this.readable = this.writable = true
+}
+
+PassThrough.prototype = Object.create(Stream.prototype, {
+ constructor: {
+ value: PassThrough
+ },
+ write: {
+ value: function (c) {
+ this.emit('data', c)
+ return true
+ }
+ },
+ end: {
+ value: function (c) {
+ if (c) this.write(c)
+ this.emit('end')
+ }
+ },
+ pause: {
+ value: function () {
+ this.emit('pause')
+ }
+ },
+ resume: {
+ value: function () {
+ this.emit('resume')
+ }
+ }
+})
+
+tap.test('incoming', function (t) {
+ var ms = new MS
+ var str = new PassThrough
+ str.pipe(ms)
+
+ var expect = ['foo', 'boo', END]
+ ms.on('data', function (c) {
+ t.equal(c, expect.shift())
+ })
+ ms.on('end', function () {
+ t.equal(END, expect.shift())
+ t.end()
+ })
+ str.write('foo')
+ ms.mute()
+ str.write('bar')
+ ms.unmute()
+ str.write('boo')
+ ms.mute()
+ str.write('blaz')
+ str.end('grelb')
+})
+
+tap.test('outgoing', function (t) {
+ var ms = new MS
+ var str = new PassThrough
+ ms.pipe(str)
+
+ var expect = ['foo', 'boo', END]
+ str.on('data', function (c) {
+ t.equal(c, expect.shift())
+ })
+ str.on('end', function () {
+ t.equal(END, expect.shift())
+ t.end()
+ })
+
+ ms.write('foo')
+ ms.mute()
+ ms.write('bar')
+ ms.unmute()
+ ms.write('boo')
+ ms.mute()
+ ms.write('blaz')
+ ms.end('grelb')
+})
+
+tap.test('isTTY', function (t) {
+ var str = new PassThrough
+ str.isTTY = true
+ str.columns=80
+ str.rows=24
+
+ var ms = new MS
+ t.equal(ms.isTTY, false)
+ t.equal(ms.columns, undefined)
+ t.equal(ms.rows, undefined)
+ ms.pipe(str)
+ t.equal(ms.isTTY, true)
+ t.equal(ms.columns, 80)
+ t.equal(ms.rows, 24)
+ str.isTTY = false
+ t.equal(ms.isTTY, false)
+ t.equal(ms.columns, 80)
+ t.equal(ms.rows, 24)
+ str.isTTY = true
+ t.equal(ms.isTTY, true)
+ t.equal(ms.columns, 80)
+ t.equal(ms.rows, 24)
+ ms.isTTY = false
+ t.equal(ms.isTTY, false)
+ t.equal(ms.columns, 80)
+ t.equal(ms.rows, 24)
+
+ ms = new MS
+ t.equal(ms.isTTY, false)
+ str.pipe(ms)
+ t.equal(ms.isTTY, true)
+ str.isTTY = false
+ t.equal(ms.isTTY, false)
+ str.isTTY = true
+ t.equal(ms.isTTY, true)
+ ms.isTTY = false
+ t.equal(ms.isTTY, false)
+
+ t.end()
+})
+
+tap.test('pause/resume incoming', function (t) {
+ var str = new PassThrough
+ var ms = new MS
+ str.on('pause', function () {
+ t.equal(PAUSE, expect.shift())
+ })
+ str.on('resume', function () {
+ t.equal(RESUME, expect.shift())
+ })
+ var expect = [PAUSE, RESUME, PAUSE, RESUME]
+ str.pipe(ms)
+ ms.pause()
+ ms.resume()
+ ms.pause()
+ ms.resume()
+ t.equal(expect.length, 0, 'saw all events')
+ t.end()
+})
+
+tap.test('replace with *', function (t) {
+ var str = new PassThrough
+ var ms = new MS({replace: '*'})
+ str.pipe(ms)
+ var expect = ['foo', '*****', 'bar', '***', 'baz', 'boo', '**', '****']
+
+ ms.on('data', function (c) {
+ t.equal(c, expect.shift())
+ })
+
+ str.write('foo')
+ ms.mute()
+ str.write('12345')
+ ms.unmute()
+ str.write('bar')
+ ms.mute()
+ str.write('baz')
+ ms.unmute()
+ str.write('baz')
+ str.write('boo')
+ ms.mute()
+ str.write('xy')
+ str.write('xyzΩ')
+
+ t.equal(expect.length, 0)
+ t.end()
+})
+
+tap.test('replace with ~YARG~', function (t) {
+ var str = new PassThrough
+ var ms = new MS({replace: '~YARG~'})
+ str.pipe(ms)
+ var expect = ['foo', '~YARG~~YARG~~YARG~~YARG~~YARG~', 'bar',
+ '~YARG~~YARG~~YARG~', 'baz', 'boo', '~YARG~~YARG~',
+ '~YARG~~YARG~~YARG~~YARG~']
+
+ ms.on('data', function (c) {
+ t.equal(c, expect.shift())
+ })
+
+ // also throw some unicode in there, just for good measure.
+ str.write('foo')
+ ms.mute()
+ str.write('ΩΩ')
+ ms.unmute()
+ str.write('bar')
+ ms.mute()
+ str.write('Ω')
+ ms.unmute()
+ str.write('baz')
+ str.write('boo')
+ ms.mute()
+ str.write('Ω')
+ str.write('ΩΩ')
+
+ t.equal(expect.length, 0)
+ t.end()
+})