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