mudb
Version:
Real-time database for multiplayer games
87 lines • 2.9 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const work = require("webworkify");
const test = require("tape");
const client_1 = require("../../client");
const socket_1 = require("../../../socket");
function noop() { }
function sessionId() {
return Math.random().toString(36).substr(2);
}
function serverWorker() {
return work(require('./worker'));
}
test('workerSocket initial state', (t) => {
const socket = new client_1.MuWorkerSocket(sessionId(), serverWorker());
t.equal(socket.state(), socket_1.MuSocketState.INIT, 'should be MuSocketState.INIT');
t.end();
});
test('workerSocket.open() - when INIT', (t) => {
t.plan(2);
const socket = new client_1.MuWorkerSocket(sessionId(), serverWorker());
socket.open({
ready: () => {
t.ok(true, 'should invoke ready handler');
t.equal(socket.state(), socket_1.MuSocketState.OPEN, 'should change state to MuSocketState.OPEN');
},
message: noop,
close: noop,
});
});
test('workerSocket.open() - when OPEN', (t) => {
t.plan(1);
const socket = new client_1.MuWorkerSocket(sessionId(), serverWorker());
socket.open({
ready: () => t.throws(() => socket.open({
ready: noop,
message: noop,
close: noop,
})),
message: noop,
close: noop,
});
});
test('workerSocket.open() - when CLOSED', (t) => {
t.plan(1);
const socket = new client_1.MuWorkerSocket(sessionId(), serverWorker());
socket.open({
ready: () => socket.close(),
message: noop,
close: () => t.throws(() => socket.open({
ready: noop,
message: noop,
close: noop,
})),
});
});
test('workerSocket.close() - when OPEN', (t) => {
t.plan(2);
const socket = new client_1.MuWorkerSocket(sessionId(), serverWorker());
socket.open({
ready: () => socket.close(),
message: noop,
close: (error) => {
t.equal(error, undefined, 'should invoke close handler without error message');
t.equal(socket.state(), socket_1.MuSocketState.CLOSED, 'should change state to MuSocketState.CLOSED');
},
});
});
test('workerSocket.close() - when INIT', (t) => {
const socket = new client_1.MuWorkerSocket(sessionId(), serverWorker());
socket.close();
t.equal(socket.state(), socket_1.MuSocketState.CLOSED, 'should change state to MuSocketState.CLOSED');
t.end();
});
test('workerSocket.close() - when CLOSED', (t) => {
const socket = new client_1.MuWorkerSocket(sessionId(), serverWorker());
socket.open({
ready: () => socket.close(),
message: noop,
close: () => {
socket.close();
t.ok(true, 'should not invoke close handler');
t.end();
},
});
});
//# sourceMappingURL=client.js.map