Files
OmniRoute/tests/unit/guardrails/videoBridgeFocusWindow.test.ts
2026-08-18 08:25:10 -03:00

88 lines
2.9 KiB
TypeScript

import assert from "node:assert/strict";
import test from "node:test";
import {
calculateFrameTimestamps,
calculateSamplingDecision,
resolveVideoFocusWindow,
} from "../../../src/lib/guardrails/videoBridgeRuntime.ts";
import {
describeVideoPart,
extractVideoParts,
} from "../../../src/lib/guardrails/videoBridgeHelpers.ts";
test("focus windows are optional and do not change the default uniform sampler", () => {
assert.equal(resolveVideoFocusWindow(10, {}), null);
assert.deepEqual(calculateFrameTimestamps(10, 2), [2.5, 7.5]);
assert.deepEqual(calculateSamplingDecision(10, 2, "uniform").timestamps, [2.5, 7.5]);
});
test("focus windows clamp finite bounds to the validated duration", () => {
assert.deepEqual(resolveVideoFocusWindow(10, { startSeconds: -2, endSeconds: 14 }), {
endSeconds: 10,
startSeconds: 0,
});
});
test("focus windows reject non-finite and reversed bounds", () => {
assert.throws(() => resolveVideoFocusWindow(10, { startSeconds: Number.NaN }), /focus window/i);
assert.throws(
() => resolveVideoFocusWindow(10, { startSeconds: 8, endSeconds: 2 }),
/focus window/i
);
assert.throws(
() => resolveVideoFocusWindow(10, { startSeconds: 4, endSeconds: 4 }),
/focus window/i
);
});
test("focused sampling stays inside the requested interval", () => {
const focus = resolveVideoFocusWindow(10, { startSeconds: 2, endSeconds: 8 });
assert.ok(focus);
const decision = calculateSamplingDecision(10, 4, "uniform", [], focus);
assert.deepEqual(decision.timestamps, [2.75, 4.25, 5.75, 7.25]);
assert.ok(decision.timestamps.every((timestamp) => timestamp >= 2 && timestamp < 8));
});
test("focus metadata is read from a video URL object and marked in the description", async () => {
const parts = extractVideoParts({
messages: [
{
role: "user",
content: [
{
type: "video_url",
video_url: { end: 8, start: 2, url: "https://cdn.example/video.mp4" },
},
],
},
],
});
assert.deepEqual(parts[0].focusWindow, { endSeconds: 8, startSeconds: 2 });
let receivedFocus: unknown;
const described = await describeVideoPart(
parts[0],
{ frameCount: 2, focusWindow: parts[0].focusWindow, timeoutMs: 5_000 },
async () => "a focused frame",
{
fetchRemote: async () => ({
buffer: Buffer.from("video"),
contentType: "video/mp4",
url: "https://cdn.example/video.mp4",
}),
extractFrames: async (_bytes, options) => {
receivedFocus = options.focusWindow;
return {
durationSeconds: 10,
frames: [{ timestampSeconds: 3, dataUri: "data:image/jpeg;base64,QQ==" }],
};
},
}
);
assert.deepEqual(receivedFocus, { endSeconds: 8, startSeconds: 2 });
assert.deepEqual(described.focusWindow, { endSeconds: 8, startSeconds: 2 });
assert.match(described.description, /focus=00:02\.000-00:08\.000/);
});