mini-signals
Version:
signals, in TypeScript, fast
50 lines (49 loc) • 1.71 kB
JavaScript
;
/* jshint -W040 */
/* global it, describe, beforeEach */
Object.defineProperty(exports, "__esModule", { value: true });
const _1 = require(".");
const chai_1 = require("chai");
describe('MiniSignal', () => {
describe('CommonJS', () => {
let e;
let context;
beforeEach(() => {
e = new _1.MiniSignal();
context = { bar: 'baz' };
});
it('should expose MiniSignal and MiniSignalBinding', () => {
(0, chai_1.expect)(_1.MiniSignal).to.be.a('function');
(0, chai_1.expect)(_1.MiniSignalBinding).to.be.a('function');
});
it('emits with context', () => {
e.add(function (bar) {
(0, chai_1.expect)(bar).equals('bar');
(0, chai_1.expect)(this).equals(context);
(0, chai_1.expect)(arguments).has.length(1);
}, context);
e.dispatch('bar');
});
});
it('quick test', () => {
const pattern = [];
const e = new _1.MiniSignal();
const foo = e.add(writer, 'foo');
e.add(writer, 'baz');
const bar = e.add(writer, 'bar');
(0, chai_1.expect)(e instanceof _1.MiniSignal);
(0, chai_1.expect)(foo instanceof _1.MiniSignalBinding);
e.dispatch('banana');
e.dispatch('apple');
foo.detach();
bar.detach();
e.dispatch('pear');
e.detachAll();
e.dispatch('raspberry');
(0, chai_1.expect)(pattern.join(';') ===
'foo:banana;baz:banana;bar:banana;foo:apple;baz:apple;bar:apple;baz:pear');
function writer(a) {
pattern.push(String(this) + ':' + a);
}
});
});