28 lines
795 B
TypeScript
28 lines
795 B
TypeScript
import assert from "node:assert/strict";
|
|
import test from "node:test";
|
|
import { createDeferredResultDelivery } from "./src/result-delivery.ts";
|
|
|
|
test("a result consumed by a later wait is not delivered", () => {
|
|
const delivery = createDeferredResultDelivery<{
|
|
id: string;
|
|
output: string;
|
|
}>();
|
|
|
|
delivery.defer({ id: "sa-1", output: "done" });
|
|
delivery.consume(["sa-1"]);
|
|
|
|
assert.deepEqual(delivery.drain(), []);
|
|
});
|
|
|
|
test("unconsumed results are delivered once in settlement order", () => {
|
|
const delivery = createDeferredResultDelivery<{ id: string }>();
|
|
const first = { id: "sa-1" };
|
|
const second = { id: "sa-2" };
|
|
|
|
delivery.defer(first);
|
|
delivery.defer(second);
|
|
|
|
assert.deepEqual(delivery.drain(), [first, second]);
|
|
assert.deepEqual(delivery.drain(), []);
|
|
});
|