| 
						 | 
						- 
 - var test = require('tape')
 - var spec = require('stream-spec')
 - var through = require('../')
 - 
 - /*
 -   I'm using these two functions, and not streams and pipe
 -   so there is less to break. if this test fails it must be
 -   the implementation of _through_
 - */
 - 
 - function write(array, stream) {
 -   array = array.slice()
 -   function next() {
 -     while(array.length)
 -       if(stream.write(array.shift()) === false)
 -         return stream.once('drain', next)
 -     
 -     stream.end()
 -   }
 - 
 -   next()
 - }
 - 
 - function read(stream, callback) {
 -   var actual = []
 -   stream.on('data', function (data) {
 -     actual.push(data)
 -   })
 -   stream.once('end', function () {
 -     callback(null, actual)
 -   })
 -   stream.once('error', function (err) {
 -     callback(err)
 -   })
 - }
 - 
 - test('simple defaults', function(assert) {
 - 
 -   var l = 1000
 -     , expected = []
 - 
 -   while(l--) expected.push(l * Math.random())
 - 
 -   var t = through()
 -   var s = spec(t).through().pausable()
 - 
 -   read(t, function (err, actual) {
 -     assert.ifError(err)
 -     assert.deepEqual(actual, expected)
 -     assert.end()
 -   })
 - 
 -   t.on('close', s.validate)
 - 
 -   write(expected, t)
 - });
 - 
 - test('simple functions', function(assert) {
 - 
 -   var l = 1000
 -     , expected = [] 
 - 
 -   while(l--) expected.push(l * Math.random())
 - 
 -   var t = through(function (data) {
 -       this.emit('data', data*2)
 -     }) 
 -   var s = spec(t).through().pausable()
 -       
 - 
 -   read(t, function (err, actual) {
 -     assert.ifError(err)
 -     assert.deepEqual(actual, expected.map(function (data) {
 -       return data*2
 -     }))
 -     assert.end()
 -   })
 - 
 -   t.on('close', s.validate)
 - 
 -   write(expected, t)
 - })
 - 
 - test('pauses', function(assert) {
 - 
 -   var l = 1000
 -     , expected = [] 
 - 
 -   while(l--) expected.push(l) //Math.random())
 - 
 -   var t = through()    
 -  
 -   var s = spec(t)
 -       .through()
 -       .pausable()
 - 
 -   t.on('data', function () {
 -     if(Math.random() > 0.1) return
 -     t.pause()
 -     process.nextTick(function () {
 -       t.resume()
 -     })
 -   })
 - 
 -   read(t, function (err, actual) {
 -     assert.ifError(err)
 -     assert.deepEqual(actual, expected)
 -   })
 - 
 -   t.on('close', function () {
 -     s.validate()
 -     assert.end()
 -   })
 - 
 -   write(expected, t)
 - })
 - 
 - test('does not soft-end on `undefined`', function(assert) {
 -   var stream = through()
 -     , count = 0
 - 
 -   stream.on('data', function (data) {
 -     count++
 -   })
 - 
 -   stream.write(undefined)
 -   stream.write(undefined)
 - 
 -   assert.equal(count, 2)
 - 
 -   assert.end()
 - })
 
 
  |