jspurefix
Version:
pure node js fix engine
71 lines • 3.24 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const transport_1 = require("../transport");
let state;
let now;
beforeEach(() => __awaiter(this, void 0, void 0, function* () {
state = new transport_1.FixSessionState(30);
state.state = transport_1.SessionState.PeerLoggedOn;
now = new Date(2018, 0, 1, 20, 0, 0, 0);
state.LastSentAt = now;
state.lastReceivedAt = now;
state.peerHeartBeatSecs = 30;
state.lastPeerMsgSeqNum = 1;
}));
test('do nothing', () => {
const action = state.calcAction(now);
expect(action).toEqual(transport_1.TickAction.Nothing);
});
test('heartbeat', () => {
const next = new Date(now.getTime() + 31 * 1000);
state.lastReceivedAt = next;
const action = state.calcAction(next);
expect(state.timeToDie()).toEqual(false);
expect(state.timeToHeartbeat()).toEqual(true);
expect(state.timeToTerminate()).toEqual(false);
expect(state.timeToTestRequest()).toEqual(false);
expect(action).toEqual(transport_1.TickAction.Heartbeat);
});
test('testrequest', () => {
const next = new Date(now.getTime() + 51 * 1000);
state.LastSentAt = next;
const action = state.calcAction(next);
expect(state.timeToDie()).toEqual(false);
expect(state.timeToHeartbeat()).toEqual(false);
expect(state.timeToTerminate()).toEqual(false);
expect(state.timeToTestRequest()).toEqual(true);
expect(action).toEqual(transport_1.TickAction.TestRequest);
});
test('testrequest - no response', () => {
const next = new Date(now.getTime() + 55 * 2 * 1000);
state.LastSentAt = next;
state.lastTestRequestAt = now;
const action = state.calcAction(next);
expect(state.timeToDie()).toEqual(false);
expect(state.timeToHeartbeat()).toEqual(false);
expect(state.timeToTerminate()).toEqual(true);
expect(state.timeToTestRequest()).toEqual(true);
expect(action).toEqual(transport_1.TickAction.TerminateOnError);
});
test('time to die - no logout response', () => {
const next = new Date(now.getTime() + 20 * 1000);
state.state = transport_1.SessionState.WaitingLogoutConfirm;
state.LastSentAt = now;
state.lastReceivedAt = now;
state.logoutSentAt = now;
const action = state.calcAction(next);
expect(state.timeToDie()).toEqual(true);
expect(state.timeToHeartbeat()).toEqual(false);
expect(state.timeToTerminate()).toEqual(false);
expect(state.timeToTestRequest()).toEqual(false);
expect(action).toEqual(transport_1.TickAction.Stop);
});
//# sourceMappingURL=session-state.test.js.map
;