Files
MineGeo/tests/round-clock.test.ts

21 lines
913 B
TypeScript

import { test } from "node:test";
import assert from "node:assert/strict";
import { roundClock } from "../shared/round-clock";
test("round timer accounts for return latency and stops at the server deadline", () => {
const clock = roundClock(100000, 1000, 5000);
const deadline = new Date(105000).toISOString();
assert.equal(clock.remaining(deadline, 5000), 3);
assert.equal(clock.remaining(deadline, 7001), 1);
assert.equal(clock.remaining(deadline, 8000), 0);
assert.equal(clock.remaining(deadline, 9000), 0);
});
test("round timer relies on elapsed time even if the device wall clock changes", (t) => {
const clock = roundClock(100000, 1000, 1000);
t.mock.method(Date, "now", () => -10000000);
assert.equal(clock.remaining(new Date(110000).toISOString(), 5000), 6);
t.mock.method(Date, "now", () => 10000000);
assert.equal(clock.remaining(new Date(110000).toISOString(), 11000), 0);
});