58 lines
2.7 KiB
TypeScript
58 lines
2.7 KiB
TypeScript
import { describe, it } from "node:test";
|
|
import assert from "node:assert/strict";
|
|
import {
|
|
generateLargeGraphFixture,
|
|
LARGE_GRAPH_FIXTURE_SPECS,
|
|
summarizeLargeGraphFixture
|
|
} from "./large-graph-fixtures";
|
|
|
|
describe("large graph fixture generation", () => {
|
|
it("generates every required graph shape with deterministic metadata", () => {
|
|
for (const spec of LARGE_GRAPH_FIXTURE_SPECS) {
|
|
const fixture = generateLargeGraphFixture(spec.id);
|
|
assert.equal(fixture.metadata.id, spec.id);
|
|
assert.equal(fixture.metadata.nodes, spec.nodes, `${spec.id} node count`);
|
|
assert.equal(fixture.metadata.edges, spec.edges, `${spec.id} edge count`);
|
|
assert.equal(fixture.metadata.communities, spec.communities, `${spec.id} community count`);
|
|
assert.equal(fixture.metadata.largest_community, spec.largestCommunity, `${spec.id} largest community`);
|
|
assert.equal(fixture.metadata.search_hits, spec.searchHits, `${spec.id} search-hit count`);
|
|
assert.equal(fixture.metadata.pin_count, spec.pinCount, `${spec.id} Pin count`);
|
|
assert.equal(fixture.metadata.oversized_community, spec.oversizedCommunity, `${spec.id} oversized flag`);
|
|
assert.deepEqual(
|
|
summarizeLargeGraphFixture(spec.id, fixture.data, fixture.pins),
|
|
fixture.metadata,
|
|
`${spec.id} metadata should be reproducible from graph data`
|
|
);
|
|
}
|
|
});
|
|
|
|
it("keeps generated output stable for the same fixture id", () => {
|
|
const first = generateLargeGraphFixture("nodes-1000-sparse");
|
|
const second = generateLargeGraphFixture("nodes-1000-sparse");
|
|
|
|
assert.deepEqual(second.metadata, first.metadata);
|
|
assert.deepEqual(second.data.nodes.slice(0, 20), first.data.nodes.slice(0, 20));
|
|
assert.deepEqual(second.data.edges.slice(0, 40), first.data.edges.slice(0, 40));
|
|
assert.deepEqual(second.pins, first.pins);
|
|
});
|
|
|
|
it("keeps the 1000 node many-community fixture inside the Sigma global route limit", () => {
|
|
const fixture = generateLargeGraphFixture("nodes-1000-many-communities");
|
|
|
|
assert.equal(fixture.metadata.nodes, 1000);
|
|
assert.equal(fixture.metadata.communities, 200);
|
|
assert.equal(fixture.metadata.largest_community, 5);
|
|
assert.equal(fixture.metadata.oversized_community, false);
|
|
assert.equal(fixture.data.meta.degraded, false);
|
|
});
|
|
|
|
it("does not require committed generated graph artifacts", () => {
|
|
const fixture = generateLargeGraphFixture("nodes-10000-high-edge");
|
|
|
|
assert.equal(fixture.data.nodes.length, 10000);
|
|
assert.equal(fixture.data.edges.length, 90000);
|
|
assert.ok(fixture.data.meta.degraded, "large generated fixtures should be marked degraded for current DOM/SVG baseline");
|
|
assert.equal(Object.keys(fixture.pins).length, 300);
|
|
});
|
|
});
|