burnchart/test/EventEmitter.js

91 lines
1.4 KiB
JavaScript
Raw Normal View History

2016-01-12 13:55:48 +00:00
import { assert } from 'chai';
2016-01-21 14:55:18 +00:00
import EventEmitter from '../src/js/lib/EventEmitter.js';
2016-01-12 13:55:48 +00:00
2018-04-21 16:47:51 +00:00
describe('EventEmitter', () => {
it('on', done => {
let m = new EventEmitter();
2016-01-12 13:55:48 +00:00
2018-04-21 16:47:51 +00:00
let i = 0;
2016-01-12 13:55:48 +00:00
2018-04-21 16:47:51 +00:00
// Plain string.
m.on('A', (o, e) => {
assert.equal(1, o);
assert.equal('A', e);
i += o;
});
m.emit('A', 1);
2016-01-12 13:55:48 +00:00
2018-04-21 16:47:51 +00:00
// Namespaced path.
m.on(/^A\./, (o, e) => {
assert.equal(2, o);
assert(/^A\.B/.test(e));
i += o;
});
m.emit('A.B', 2);
m.emit('A.B.C', 2);
2016-01-12 13:55:48 +00:00
2018-04-21 16:47:51 +00:00
m.emit('C.A.B', 3); // should not register
2016-01-12 13:55:48 +00:00
2018-04-21 16:47:51 +00:00
assert.equal(5, i);
2016-01-12 13:55:48 +00:00
2018-04-21 16:47:51 +00:00
done();
});
2016-01-12 13:55:48 +00:00
2018-04-21 16:47:51 +00:00
it('onAny', done => {
let m = new EventEmitter();
2016-01-12 13:55:48 +00:00
2018-04-21 16:47:51 +00:00
let i = 0;
2016-01-12 13:55:48 +00:00
2018-04-21 16:47:51 +00:00
m.onAny((o, e) => i += o);
2016-01-12 13:55:48 +00:00
2018-04-21 16:47:51 +00:00
m.emit('A', 1);
m.emit('A.B', 2);
m.emit('', 3); // should not register
2016-01-12 13:55:48 +00:00
2018-04-21 16:47:51 +00:00
assert.equal(3, i);
2016-01-12 13:55:48 +00:00
2018-04-21 16:47:51 +00:00
done();
});
2016-01-12 13:55:48 +00:00
2018-04-21 16:47:51 +00:00
it('off', done => {
let m = new EventEmitter();
2016-01-12 13:55:48 +00:00
2018-04-21 16:47:51 +00:00
let map = { A: 0, B: 0 };
2016-01-12 13:55:48 +00:00
2018-04-21 16:47:51 +00:00
let cb = (o, e) => map[e] += 1;
2016-01-12 13:55:48 +00:00
2018-04-21 16:47:51 +00:00
m.on('A', cb);
m.on('B', cb);
2016-01-12 13:55:48 +00:00
2018-04-21 16:47:51 +00:00
m.emit('A');
m.off('A', cb);
m.emit('A');
m.emit('B');
2016-01-12 13:55:48 +00:00
2018-04-21 16:47:51 +00:00
assert.deepEqual({ A: 1, B: 1 }, map);
2016-01-12 13:55:48 +00:00
2018-04-21 16:47:51 +00:00
done();
});
2016-01-12 13:55:48 +00:00
2018-04-21 16:47:51 +00:00
it('offAny', done => {
let m = new EventEmitter();
2016-01-12 13:55:48 +00:00
2018-04-21 16:47:51 +00:00
let map = { A: 0, B: 0 };
2016-01-12 13:55:48 +00:00
2018-04-21 16:47:51 +00:00
let cb = (o, e) => map[e] += 1;
2016-01-12 13:55:48 +00:00
2018-04-21 16:47:51 +00:00
m.on('A', cb);
m.on('B', cb);
2016-01-12 13:55:48 +00:00
2018-04-21 16:47:51 +00:00
m.emit('A');
m.offAny(cb);
m.emit('A');
m.emit('B');
2016-01-12 13:55:48 +00:00
2018-04-21 16:47:51 +00:00
assert.deepEqual({ A: 1, B: 0 }, map);
2016-01-12 13:55:48 +00:00
2018-04-21 16:47:51 +00:00
done();
});
});