blob: 9a06c8a4ccb58cb2b8c51f25aeee8fedfe513c37 [file] [log] [blame]
Leo Repp58b9f112021-11-22 11:57:47 +01001var 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)