Files
2026-09-01 13:39:38 +02:00

46 lines
1.3 KiB
TypeScript

import { describe, expect, it } from "vitest";
import { findRoutes, properties } from "../../src/lab/catalog";
describe("format catalog", () => {
it("prefers the lower-loss route for selected properties", () => {
const routes = findRoutes("data", "json", "xml", [
"scalar-types",
"nested",
"nulls",
]);
expect(routes[0]?.formats).toEqual(["json", "xml"]);
expect(routes[0]?.summary).toMatchObject({
"scalar-types": "expected-preserved",
nested: "expected-preserved",
});
expect(
routes.find((route) => route.formats.includes("csv"))?.score,
).toBeGreaterThan(routes[0]!.score);
});
it("enumerates bounded acyclic routes and identity evidence", () => {
const routes = findRoutes(
"subtitle",
"ass",
"srt",
properties.subtitle.map((item) => item.id),
);
expect(routes.length).toBeGreaterThan(0);
expect(
routes.every(
(route) =>
route.edges.length <= 4 &&
new Set(route.formats).size === route.formats.length,
),
).toBe(true);
expect(findRoutes("image", "png", "png", ["pixels"])[0]).toMatchObject({
formats: ["png"],
score: 0,
});
});
it("does not invent paths between incompatible audio and video families", () => {
expect(findRoutes("av", "wav", "mp4", ["audio"])).toEqual([]);
});
});