| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207 | 
							- 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()
 
- })
 
 
  |