• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1var stream = require('stream')
2var pump = require('./index')
3
4var rs = new stream.Readable()
5var ws = new stream.Writable()
6
7rs._read = function (size) {
8  this.push(Buffer(size).fill('abc'))
9}
10
11ws._write = function (chunk, encoding, cb) {
12  setTimeout(function () {
13    cb()
14  }, 100)
15}
16
17var toHex = function () {
18  var reverse = new (require('stream').Transform)()
19
20  reverse._transform = function (chunk, enc, callback) {
21    reverse.push(chunk.toString('hex'))
22    callback()
23  }
24
25  return reverse
26}
27
28var wsClosed = false
29var rsClosed = false
30var callbackCalled = false
31
32var check = function () {
33  if (wsClosed && rsClosed && callbackCalled) {
34    console.log('test-browser.js passes')
35    clearTimeout(timeout)
36  }
37}
38
39ws.on('finish', function () {
40  wsClosed = true
41  check()
42})
43
44rs.on('end', function () {
45  rsClosed = true
46  check()
47})
48
49var res = pump(rs, toHex(), toHex(), toHex(), ws, function () {
50  callbackCalled = true
51  check()
52})
53
54if (res !== ws) {
55  throw new Error('should return last stream')
56}
57
58setTimeout(function () {
59  rs.push(null)
60  rs.emit('close')
61}, 1000)
62
63var timeout = setTimeout(function () {
64  check()
65  throw new Error('timeout')
66}, 5000)
67