31 lines
1.1 KiB
JavaScript
31 lines
1.1 KiB
JavaScript
import test from "node:test";
|
|
import assert from "node:assert/strict";
|
|
import { queueSteps, benchmarks } from "./model.js";
|
|
|
|
test("faster processing leaves no waiting queue", () => {
|
|
const steps = queueSteps(160, 80);
|
|
assert.equal(steps[0].arrival, 160);
|
|
assert.equal(steps[0].end, 240);
|
|
assert.ok(steps.every((step) => step.wait === 0));
|
|
});
|
|
test("equal processing and media intervals leave zero ideal headroom", () => {
|
|
assert.ok(queueSteps(160, 160).every((step) => step.wait === 0));
|
|
});
|
|
test("overload adds sixty milliseconds per subsequent input block", () => {
|
|
const steps = queueSteps(160, 220);
|
|
assert.equal(steps[0].wait, 0);
|
|
assert.equal(steps[7].wait, 420);
|
|
assert.equal(steps[7].end, 1920);
|
|
});
|
|
test("invalid media times fail explicitly", () => {
|
|
assert.throws(() => queueSteps(0, 80), RangeError);
|
|
assert.throws(() => queueSteps(160, Number.NaN), RangeError);
|
|
});
|
|
test("benchmark ordering and source values are preserved", () => {
|
|
assert.deepEqual(
|
|
benchmarks.map((model) => model.answer),
|
|
[10.12, 8.4, 6.89, 4.25],
|
|
);
|
|
assert.ok(benchmarks.every((model) => model.first <= model.answer));
|
|
});
|