reisarod's picture
Upload folder using huggingface_hub
5fae594 verified
'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);
});
});
});