cf17dedac3
Move 34 flat modules into cas/, registry/, bundle/, extract/, engine/, util/. Move gc.ts to engine/ (was in cas/) to avoid cas→engine reverse dependency. Dependency direction: util ← cas ← extract ← engine, util ← registry ← bundle. No logic changes — only file locations and import paths. Refs #102
32 lines
867 B
TypeScript
32 lines
867 B
TypeScript
import { describe, expect, test } from "bun:test";
|
|
|
|
import { createThreadPauseGate } from "../src/engine/thread-pause-gate.js";
|
|
|
|
describe("createThreadPauseGate", () => {
|
|
test("pause blocks awaitAfterYield until resume", async () => {
|
|
const gate = createThreadPauseGate();
|
|
gate.pause();
|
|
|
|
let progressed = false;
|
|
const wait = (async () => {
|
|
await gate.awaitAfterYield();
|
|
progressed = true;
|
|
})();
|
|
|
|
await new Promise((r) => setTimeout(r, 30));
|
|
expect(progressed).toBe(false);
|
|
|
|
gate.resume();
|
|
await wait;
|
|
expect(progressed).toBe(true);
|
|
});
|
|
|
|
test("duplicate pause and resume are rejected", () => {
|
|
const gate = createThreadPauseGate();
|
|
expect(gate.pause().ok).toBe(true);
|
|
expect(gate.pause().ok).toBe(false);
|
|
expect(gate.resume().ok).toBe(true);
|
|
expect(gate.resume().ok).toBe(false);
|
|
});
|
|
});
|