mirror of
https://github.com/wavetermdev/xterm.js.git
synced 2026-08-05 13:43:48 -07:00
Add tests
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
import { assert } from 'chai';
|
||||
import { EventEmitter } from './EventEmitter';
|
||||
|
||||
describe('EventEmitter', () => {
|
||||
let eventEmitter: EventEmitter;
|
||||
|
||||
beforeEach(() => {
|
||||
eventEmitter = new EventEmitter();
|
||||
});
|
||||
|
||||
describe('once', () => {
|
||||
it('should trigger the listener only once', () => {
|
||||
let count = 0;
|
||||
const listener = () => count++;
|
||||
eventEmitter.once('test', listener);
|
||||
eventEmitter.emit('test');
|
||||
assert.equal(count, 1);
|
||||
eventEmitter.emit('test');
|
||||
assert.equal(count, 1);
|
||||
});
|
||||
});
|
||||
|
||||
describe('emit', () => {
|
||||
it('should emit events to listeners', () => {
|
||||
let count1 = 0;
|
||||
let count2 = 0;
|
||||
const listener1 = () => count1++;
|
||||
const listener2 = () => count2++;
|
||||
eventEmitter.on('test', listener1);
|
||||
eventEmitter.on('test', listener2);
|
||||
eventEmitter.emit('test');
|
||||
assert.equal(count1, 1);
|
||||
assert.equal(count2, 1);
|
||||
eventEmitter.emit('test');
|
||||
assert.equal(count1, 2);
|
||||
assert.equal(count2, 2);
|
||||
});
|
||||
|
||||
it('should manage multiple listener types', () => {
|
||||
let count1 = 0;
|
||||
let count2 = 0;
|
||||
const listener1 = () => count1++;
|
||||
const listener2 = () => count2++;
|
||||
eventEmitter.on('test', listener1);
|
||||
eventEmitter.on('foo', listener2);
|
||||
eventEmitter.emit('test');
|
||||
assert.equal(count1, 1);
|
||||
assert.equal(count2, 0);
|
||||
eventEmitter.emit('foo');
|
||||
assert.equal(count1, 1);
|
||||
assert.equal(count2, 1);
|
||||
});
|
||||
});
|
||||
|
||||
describe('listeners', () => {
|
||||
it('should return listeners for the type requested', () => {
|
||||
assert.equal(eventEmitter.listeners('test').length, 0);
|
||||
const listener = () => {};
|
||||
eventEmitter.addListener('test', listener);
|
||||
assert.deepEqual(eventEmitter.listeners('test'), [listener]);
|
||||
});
|
||||
});
|
||||
|
||||
describe('removeListener', () => {
|
||||
it('should remove the specific listener', () => {
|
||||
const listener1 = () => {};
|
||||
const listener2 = () => {};
|
||||
eventEmitter.addListener('foo', listener1);
|
||||
eventEmitter.addListener('foo', listener2);
|
||||
assert.equal(eventEmitter.listeners('foo').length, 2);
|
||||
eventEmitter.removeListener('foo', listener1);
|
||||
assert.deepEqual(eventEmitter.listeners('foo'), [listener2]);
|
||||
});
|
||||
});
|
||||
|
||||
describe('removeAllListeners', () => {
|
||||
it('should clear all listeners', () => {
|
||||
eventEmitter.addListener('foo', () => {});
|
||||
assert.equal(eventEmitter.listeners('foo').length, 1);
|
||||
eventEmitter.removeAllListeners('foo');
|
||||
assert.equal(eventEmitter.listeners('foo').length, 0);
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user