File size: 1,181 Bytes
bc20498
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
63
64
65
66
67
68
69
const tape = require('tape')
const tee = require('./')
const { Readable } = require('streamx')

tape('throttled by eachother', function (t) {
  const r = new Readable()

  for (let i = 0; i < 1000; i++) {
    r.push(Buffer.alloc(1000))
  }

  const [a, b] = tee(r)

  let aTicks = 0

  a.on('data', function (data) {
    aTicks++
  })

  setTimeout(() => b.read(), 100)

  setTimeout(() => {
    t.same(aTicks, 18)
    t.end()
  }, 200)
})

tape('does not premature destroy', function (t) {
  const r = new Readable()

  const [a, b] = tee(r)

  r.push('a')
  r.push('b')
  r.push('c')
  r.push(null)

  setTimeout(() => {
    const aSeen = []
    const bSeen = []

    a.on('data', function (data) {
      aSeen.push(data)
    })
    a.on('end', function () {
      aSeen.push(null)
    })

    b.on('data', function (data) {
      bSeen.push(data)
    })
    b.on('end', function () {
      bSeen.push(null)
    })

    let missing = 2
    a.on('close', onclose)
    b.on('close', onclose)

    function onclose () {
      if (--missing === 0) {
        t.same(aSeen, ['a', 'b', 'c', null])
        t.same(bSeen, ['a', 'b', 'c', null])
        t.end()
      }
    }
  }, 200)
})