mudb
Version:
Real-time database for multiplayer games
116 lines • 3.42 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const test = require("tape");
const mock_1 = require("../mock");
test('FIFO', (t) => {
const scheduler = new mock_1.MuMockScheduler();
const st = scheduler.setTimeout;
function cb1() { cb1['called'] = true; }
function cb2() { cb2['called'] = true; }
function cb3() { cb3['called'] = true; }
st(cb1, 0);
st(cb2, 0);
st(cb3, 0);
scheduler.poll();
t.ok(cb1['called'], 'after first poll');
t.notOk(cb2['called'], 'after first poll');
t.notOk(cb3['called'], 'after first poll');
scheduler.poll();
t.ok(cb2['called'], 'after second poll');
t.notOk(cb3['called'], 'after second poll');
scheduler.poll();
t.ok(cb3['called'], 'after third poll');
t.end();
});
test('smaller, earlier', (t) => {
const scheduler = new mock_1.MuMockScheduler();
const st = scheduler.setTimeout;
function cb1() { cb1['called'] = true; }
function cb2() { cb2['called'] = true; }
function cb3() { cb3['called'] = true; }
st(cb1, 2);
st(cb2, 1);
st(cb3, 0);
scheduler.poll();
t.notOk(cb1['called'], 'after fist poll');
t.notOk(cb2['called'], 'after fist poll');
t.ok(cb3['called'], 'after fist poll');
scheduler.poll();
t.notOk(cb1['called'], 'after second poll');
t.ok(cb2['called'], 'after second poll');
scheduler.poll();
t.ok(cb1['called'], 'after third poll');
t.end();
});
test('setting clock', (t) => {
const scheduler = new mock_1.MuMockScheduler();
const st = scheduler.setTimeout;
let c1 = 0;
let c2 = 0;
function cb1() {
if (c1 === 0) {
++c1;
st(cb1, 0);
return;
}
++c1;
}
function cb2() {
if (c2 === 0) {
++c2;
st(cb2, 1);
return;
}
++c2;
}
st(cb1, 2);
st(cb2, 1);
scheduler.poll();
t.equal(c1, 0, 'after first poll');
t.equal(c2, 1, 'after first poll');
scheduler.poll();
t.equal(c1, 1, 'after second poll');
t.equal(c2, 1, 'after second poll');
scheduler.poll();
t.equal(c1, 1, 'after third poll');
t.equal(c2, 2, 'after third poll');
scheduler.poll();
t.equal(c1, 2, 'after fourth poll');
t.equal(c2, 2, 'after fourth poll');
t.end();
});
test('setInterval', (t) => {
const scheduler = new mock_1.MuMockScheduler();
const si = scheduler.setInterval;
let c1 = 0;
let c2 = 0;
let c3 = 0;
function cb1() { ++c1; }
function cb2() { ++c2; }
function cb3() { ++c3; }
si(cb1, 1);
si(cb2, 1);
si(cb3, 4);
scheduler.poll();
t.equal(c1, 1, 'after first poll');
t.equal(c2, 0, 'after first poll');
t.equal(c3, 0, 'after first poll');
scheduler.poll();
t.equal(c1, 1, 'after second poll');
t.equal(c2, 1, 'after second poll');
t.equal(c3, 0, 'after second poll');
scheduler.poll();
t.equal(c1, 2, 'after third poll');
t.equal(c2, 1, 'after third poll');
t.equal(c3, 0, 'after third poll');
scheduler.poll();
t.equal(c1, 2, 'after fourth poll');
t.equal(c2, 2, 'after fourth poll');
t.equal(c3, 0, 'after fourth poll');
scheduler.poll();
t.equal(c1, 2, 'after fifth poll');
t.equal(c2, 2, 'after fifth poll');
t.equal(c3, 1, 'after fifth poll');
t.end();
});
//# sourceMappingURL=mock.js.map