import test from "node:test";
import assert from "node:assert/strict";
import { SAMPLES, decoderConfig, supportedSamples } from "./samples.js";
const HEVC = SAMPLES.find((sample) => sample.codec.startsWith("hev1."));
const AV1 = SAMPLES.find((sample) => sample.codec.startsWith("av01."));
test("the page carries a sample for a browser that decodes neither codec of the other", () => {
assert.ok(HEVC, "an HEVC sample is declared");
assert.ok(AV1, "an AV1 sample is declared");
assert.deepEqual(
SAMPLES.map((sample) => sample.file),
[HEVC.file, AV1.file],
);
for (const sample of SAMPLES) {
assert.match(sample.file, /^\.\/[\w.]+\.mp4$/);
assert.ok(sample.width > 0 && sample.height > 0, `${sample.file} declares a coded size`);
assert.ok(sample.description.length > 0, `${sample.file} names itself`);
}
});
test("a sample is asked about with the codec string and size it declares", () => {
assert.deepEqual(decoderConfig(AV1), {
codec: AV1.codec,
codedWidth: AV1.width,
codedHeight: AV1.height,
});
assert.deepEqual(Object.keys(decoderConfig(HEVC)).sort(), ["codec", "codedHeight", "codedWidth"]);
});
test("the browser's answer picks the sample, in preference order", () => {
const supports = (...codecs) => (sample) => codecs.includes(sample.codec);
assert.deepEqual(supportedSamples(SAMPLES, supports(HEVC.codec, AV1.codec)), [HEVC, AV1]);
assert.deepEqual(supportedSamples(SAMPLES, supports(AV1.codec)), [AV1]);
assert.deepEqual(supportedSamples(SAMPLES, supports(HEVC.codec)), [HEVC]);
});
test("a browser that reports no decoder is left with nothing to fetch", () => {
assert.deepEqual(supportedSamples(SAMPLES, () => false), []);
assert.deepEqual(supportedSamples(SAMPLES, () => undefined), []);
});