mirror of
https://github.com/Wan-Video/Wan2.1.git
synced 2025-07-14 19:50:10 +00:00
92 lines
1.9 KiB
JavaScript
92 lines
1.9 KiB
JavaScript
'use strict';
|
|
|
|
var should = require('should');
|
|
var Callbacks = require('../../source/callbacks');
|
|
|
|
var namespace = {
|
|
reset: function () {
|
|
namespace.listeners = {};
|
|
},
|
|
listeners: {},
|
|
once: function (event, fn) {
|
|
if (! namespace.listeners[event]) {
|
|
namespace.listeners[event] = [];
|
|
}
|
|
namespace.listeners[event].push(fn);
|
|
}
|
|
};
|
|
|
|
describe('Callbacks', function () {
|
|
|
|
beforeEach(function() {
|
|
namespace.reset();
|
|
});
|
|
|
|
describe(':constructor', function () {
|
|
|
|
it('should create a new callbacks instance', function () {
|
|
var callbacks = new Callbacks(namespace);
|
|
callbacks.should.have.keys('collection', 'index', 'namespace');
|
|
});
|
|
|
|
});
|
|
|
|
describe(':register', function () {
|
|
|
|
it('should register a new callback', function (done) {
|
|
var callbacks = new Callbacks(namespace);
|
|
|
|
var fn = function (a, b, c) {
|
|
arguments.should.eql([1,2,3]);
|
|
done();
|
|
};
|
|
|
|
var id = callbacks.register(fn);
|
|
|
|
id.should.be.have.type('number');
|
|
callbacks.collection.should.keys(id.toString());
|
|
callbacks.index.should.equal(id + 1);
|
|
|
|
var listener = namespace.listeners['fn_' + id];
|
|
listener.should.have.length(1);
|
|
listener[0].should.have.type('function');
|
|
listener[0](1, 2, 3);
|
|
});
|
|
|
|
});
|
|
|
|
describe(':exec', function () {
|
|
|
|
it('should execute a callback', function (done) {
|
|
var callbacks = new Callbacks(namespace);
|
|
|
|
var fn = function (a, b, c) {
|
|
arguments.should.eql([1, 2, 3]);
|
|
done();
|
|
};
|
|
|
|
var id = callbacks.register(fn);
|
|
|
|
callbacks.exec(id, 1, 2, 3);
|
|
});
|
|
|
|
it('should only execute a callback once', function (done) {
|
|
var callbacks = new Callbacks(namespace);
|
|
|
|
var fn = function (x) {
|
|
x.should.equal(1);
|
|
done();
|
|
};
|
|
|
|
var id = callbacks.register(fn);
|
|
|
|
callbacks.exec(id, 1);
|
|
callbacks.exec(id, 2);
|
|
callbacks.exec(id, 3);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|