Blame view

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