]> git.proxmox.com Git - mirror_xterm.js.git/blame - src/EventEmitter.test.ts
Merge pull request #926 from ficristo/search-fix
[mirror_xterm.js.git] / src / EventEmitter.test.ts
CommitLineData
dba432d1
DI
1import { assert } from 'chai';
2import { EventEmitter } from './EventEmitter';
3
4describe('EventEmitter', () => {
5 let eventEmitter: EventEmitter;
6
7 beforeEach(() => {
8 eventEmitter = new EventEmitter();
9 });
10
11 describe('once', () => {
12 it('should trigger the listener only once', () => {
13 let count = 0;
14 const listener = () => count++;
15 eventEmitter.once('test', listener);
16 eventEmitter.emit('test');
17 assert.equal(count, 1);
18 eventEmitter.emit('test');
19 assert.equal(count, 1);
20 });
21 });
22
23 describe('emit', () => {
24 it('should emit events to listeners', () => {
25 let count1 = 0;
26 let count2 = 0;
27 const listener1 = () => count1++;
28 const listener2 = () => count2++;
29 eventEmitter.on('test', listener1);
30 eventEmitter.on('test', listener2);
31 eventEmitter.emit('test');
32 assert.equal(count1, 1);
33 assert.equal(count2, 1);
34 eventEmitter.emit('test');
35 assert.equal(count1, 2);
36 assert.equal(count2, 2);
37 });
38
39 it('should manage multiple listener types', () => {
40 let count1 = 0;
41 let count2 = 0;
42 const listener1 = () => count1++;
43 const listener2 = () => count2++;
44 eventEmitter.on('test', listener1);
45 eventEmitter.on('foo', listener2);
46 eventEmitter.emit('test');
47 assert.equal(count1, 1);
48 assert.equal(count2, 0);
49 eventEmitter.emit('foo');
50 assert.equal(count1, 1);
51 assert.equal(count2, 1);
52 });
53 });
54
55 describe('listeners', () => {
56 it('should return listeners for the type requested', () => {
57 assert.equal(eventEmitter.listeners('test').length, 0);
58 const listener = () => {};
0d9d3aca 59 eventEmitter.on('test', listener);
dba432d1
DI
60 assert.deepEqual(eventEmitter.listeners('test'), [listener]);
61 });
62 });
63
0d9d3aca 64 describe('off', () => {
dba432d1
DI
65 it('should remove the specific listener', () => {
66 const listener1 = () => {};
67 const listener2 = () => {};
0d9d3aca
DI
68 eventEmitter.on('foo', listener1);
69 eventEmitter.on('foo', listener2);
dba432d1 70 assert.equal(eventEmitter.listeners('foo').length, 2);
0d9d3aca 71 eventEmitter.off('foo', listener1);
dba432d1
DI
72 assert.deepEqual(eventEmitter.listeners('foo'), [listener2]);
73 });
74 });
75
76 describe('removeAllListeners', () => {
77 it('should clear all listeners', () => {
0d9d3aca 78 eventEmitter.on('foo', () => {});
dba432d1
DI
79 assert.equal(eventEmitter.listeners('foo').length, 1);
80 eventEmitter.removeAllListeners('foo');
81 assert.equal(eventEmitter.listeners('foo').length, 0);
82 });
83 });
84});