21 lines
913 B
TypeScript
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);
|
|
});
|