-
Notifications
You must be signed in to change notification settings - Fork 0
/
test.js
92 lines (75 loc) · 1.78 KB
/
test.js
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
'use strict'
const { test } = require('tap')
const { promisify } = require('util')
const EventEmitter = require('events')
const on = require('.')
const immediate = promisify(setTimeout)
const collect = async (asyncIterator) => {
const result = []
for await (let element of asyncIterator) {
result.push(element)
}
return result
}
// test('polyfil', async ( { is } ) => {
// require('./polyfill')
// is(on, EventEmitter.on)
// })
test('on an event', async ( { is } ) => {
const ee = new EventEmitter()
const st = immediate(100, () => {
ee.emit('myevent', 42)
})
await st
// for await (let [n] of on(ee, 'myevent', st)) {
// is(n, 42)
// }
})
return
test('on an event with two args', async ( { same } ) => {
const ee = new EventEmitter()
process.nextTick(() => {
ee.emit('myevent', 42, 24)
})
const value = await on(ee, 'myevent')
same(value, [42, 24])
})
test('catches errors', async ( { is } ) => {
const ee = new EventEmitter()
const err = new Error('kaboom')
process.nextTick(() => {
ee.emit('error', err)
})
try {
await on(ee, 'myevent')
} catch (_e) {
is(_e, err)
}
})
test('stop listening after catching error', async ( { is, fail } ) => {
const ee = new EventEmitter()
const err = new Error('kaboom')
process.nextTick(() => {
ee.emit('error', err)
ee.emit('myevent', 42, 24)
})
process.on('multipleResolves', () => fail('resolve multiple times'))
try {
await on(ee, 'myevent')
} catch (e) {
is(e, err)
}
process.removeAllListeners('multipleResolves')
})
test('on error', async ( { is } ) => {
const ee = new EventEmitter()
const err = new Error('kaboom')
process.nextTick(() => {
ee.emit('error', err)
})
try {
await on(ee, 'error')
} catch (_e) {
is(_e, err)
}
})