Files
rea/src/process/capture/ProcessTimer.test.ts
T
YsopwnableandGitHub 6aa9afb549 refactor(process): separate capture implementation from analyst workflows (#988)
* refactor(process): separate capture implementation from analyst workflows

* fix(ci): generate source catalog before shard tests
2026-10-08 00:46:21 +08:00

39 lines
1.1 KiB
TypeScript

import { describe, expect, it } from "vitest";
import { scheduleProcessDelay } from "./ProcessTimer.js";
describe("process delay scheduling", () => {
it("splits long delays into timer-sized chunks and can cancel the next chunk", () => {
const scheduled: Array<{
readonly delayMs: number;
readonly callback: () => void;
cancelled: boolean;
}> = [];
const schedule = (callback: () => void, delayMs: number) => {
const entry = { delayMs, callback, cancelled: false };
scheduled.push(entry);
return { cancel: () => (entry.cancelled = true) };
};
let fired = false;
const timer = scheduleProcessDelay(
2_147_483_647 + 25,
() => {
fired = true;
},
schedule,
);
expect(scheduled.map(({ delayMs }) => delayMs)).toEqual([2_147_483_647]);
scheduled[0]?.callback();
expect(scheduled.map(({ delayMs }) => delayMs)).toEqual([
2_147_483_647, 25,
]);
expect(fired).toBe(false);
timer.cancel();
expect(scheduled[1]?.cancelled).toBe(true);
scheduled[1]?.callback();
expect(fired).toBe(false);
});
});