69 lines
1.7 KiB
TypeScript
69 lines
1.7 KiB
TypeScript
import {
|
|
createDefinitionGraphNode,
|
|
definitionConnectionError,
|
|
type DefinitionGraph,
|
|
type DefinitionGraphNodeType
|
|
} from "../src/definitionGraph";
|
|
|
|
const library: DefinitionGraphNodeType[] = [
|
|
{
|
|
type: "start",
|
|
category: "control",
|
|
category_label: "Control",
|
|
label: "Start",
|
|
description: "Start",
|
|
icon: "play",
|
|
input_ports: [],
|
|
output_ports: [
|
|
{ id: "output", label: "Output", required: true, multiple: false, minimum_connections: 1 }
|
|
],
|
|
config_fields: [],
|
|
default_config: { mode: "manual" }
|
|
},
|
|
{
|
|
type: "end",
|
|
category: "control",
|
|
category_label: "Control",
|
|
label: "End",
|
|
description: "End",
|
|
icon: "circle-stop",
|
|
input_ports: [
|
|
{ id: "input", label: "Input", required: true, multiple: false, minimum_connections: 1 }
|
|
],
|
|
output_ports: [],
|
|
config_fields: [],
|
|
default_config: {}
|
|
}
|
|
];
|
|
|
|
const graph: DefinitionGraph = {
|
|
schema_version: 1,
|
|
nodes: [
|
|
{ id: "start", type: "start", label: "Start", position: { x: 0, y: 0 }, config: {} },
|
|
{ id: "end", type: "end", label: "End", position: { x: 100, y: 0 }, config: {} }
|
|
],
|
|
edges: []
|
|
};
|
|
|
|
if (definitionConnectionError(
|
|
graph,
|
|
library,
|
|
{ source: "start", target: "end" }
|
|
) !== null) {
|
|
throw new Error("Expected a valid library-driven connection.");
|
|
}
|
|
|
|
graph.edges.push({ id: "edge", source: "start", target: "end" });
|
|
if (!definitionConnectionError(
|
|
graph,
|
|
library,
|
|
{ source: "start", target: "end" }
|
|
)) {
|
|
throw new Error("Expected duplicate connection validation.");
|
|
}
|
|
|
|
const created = createDefinitionGraphNode("start", { x: 40, y: 50 }, library);
|
|
if (created.config.mode !== "manual" || created.position.x !== 40) {
|
|
throw new Error("Expected node creation to clone library defaults.");
|
|
}
|