1'use strict';
2
3const common = require('../common');
4const EventEmitter = require('events');
5const assert = require('assert');
6
7const EE = new EventEmitter();
8const handler = common.mustCall(undefined, 3);
9const anotherHandler = common.mustCall();
10
11assert.strictEqual(EE.listenerCount('event'), 0);
12assert.strictEqual(EE.listenerCount('event', handler), 0);
13assert.strictEqual(EE.listenerCount('event', anotherHandler), 0);
14
15EE.once('event', handler);
16
17assert.strictEqual(EE.listenerCount('event'), 1);
18assert.strictEqual(EE.listenerCount('event', handler), 1);
19assert.strictEqual(EE.listenerCount('event', anotherHandler), 0);
20
21EE.removeAllListeners('event');
22
23assert.strictEqual(EE.listenerCount('event'), 0);
24assert.strictEqual(EE.listenerCount('event', handler), 0);
25assert.strictEqual(EE.listenerCount('event', anotherHandler), 0);
26
27EE.on('event', handler);
28
29assert.strictEqual(EE.listenerCount('event'), 1);
30assert.strictEqual(EE.listenerCount('event', handler), 1);
31assert.strictEqual(EE.listenerCount('event', anotherHandler), 0);
32
33EE.once('event', anotherHandler);
34
35assert.strictEqual(EE.listenerCount('event'), 2);
36assert.strictEqual(EE.listenerCount('event', handler), 1);
37assert.strictEqual(EE.listenerCount('event', anotherHandler), 1);
38
39assert.strictEqual(EE.listenerCount('another-event'), 0);
40assert.strictEqual(EE.listenerCount('another-event', handler), 0);
41assert.strictEqual(EE.listenerCount('another-event', anotherHandler), 0);
42
43EE.once('event', handler);
44
45assert.strictEqual(EE.listenerCount('event'), 3);
46assert.strictEqual(EE.listenerCount('event', handler), 2);
47assert.strictEqual(EE.listenerCount('event', anotherHandler), 1);
48
49EE.emit('event');
50
51assert.strictEqual(EE.listenerCount('event'), 1);
52assert.strictEqual(EE.listenerCount('event', handler), 1);
53assert.strictEqual(EE.listenerCount('event', anotherHandler), 0);
54
55EE.emit('event');
56
57assert.strictEqual(EE.listenerCount('event'), 1);
58assert.strictEqual(EE.listenerCount('event', handler), 1);
59assert.strictEqual(EE.listenerCount('event', anotherHandler), 0);
60
61EE.off('event', handler);
62
63assert.strictEqual(EE.listenerCount('event'), 0);
64assert.strictEqual(EE.listenerCount('event', handler), 0);
65assert.strictEqual(EE.listenerCount('event', anotherHandler), 0);
66