30 std::cout <<
"Test 1: Create GraphDocument... ";
34 doc.graphKind =
"BehaviorTree";
39 std::cout <<
"PASSED" << std::endl;
45 std::cout <<
"Test 2: CRUD Nodes... ";
49 NodeId id1 =
doc.CreateNode(
"BT_Selector", Vector2(100, 100));
50 NodeId id2 =
doc.CreateNode(
"BT_Action", Vector2(200, 200));
60 std::cout <<
"PASSED" << std::endl;
66 std::cout <<
"Test 3: Connect Pins... ";
70 NodeId id1 =
doc.CreateNode(
"BT_Selector", Vector2(0, 0));
71 NodeId id2 =
doc.CreateNode(
"BT_Action", Vector2(0, 100));
83 std::cout <<
"PASSED" << std::endl;
89 std::cout <<
"Test 4: Serialization... ";
93 doc.graphKind =
"BehaviorTree";
94 doc.CreateNode(
"BT_Selector", Vector2(100, 100));
102 assert(
j[
"data"][
"nodes"].size() == 1);
104 std::cout <<
"PASSED" << std::endl;
110 std::cout <<
"Test 5: Multi-graph... ";
114 GraphId g1 =
mgr.CreateGraph(
"AIGraph",
"BehaviorTree");
117 assert(
mgr.GetAllGraphIds().size() >= 2);
119 mgr.SetActiveGraph(
g2);
126 std::cout <<
"PASSED" << std::endl;
132 std::cout <<
"Test 6: Undo/Redo... ";
138 stack.ExecuteCommand(std::move(
cmd));
148 std::cout <<
"PASSED" << std::endl;
154 std::cout <<
"Test 7: HasCycles... ";
163 if (
nodeA !=
nullptr)
172 if (
nodeB !=
nullptr)
179 std::cout <<
"PASSED" << std::endl;
185 std::cout <<
"Test 8: ValidateGraph... ";
195 doc.CreateNode(
"BT_Selector", Vector2(0, 0));
200 assert(
error.find(
"0 children") != std::string::npos);
202 std::cout <<
"PASSED" << std::endl;
207 std::cout <<
"==================================" << std::endl;
208 std::cout <<
"NodeGraphCore Basic Tests" << std::endl;
209 std::cout <<
"==================================" << std::endl;
222 std::cout <<
"==================================" << std::endl;
223 std::cout <<
"All tests PASSED!" << std::endl;
224 std::cout <<
"==================================" << std::endl;
228 catch (
const std::exception&
e)
230 std::cerr <<
"Test FAILED with exception: " <<
e.what() << std::endl;
Command pattern for undo/redo operations.
Command for connecting pins.
Command for creating a node.
Command for deleting a node.
ComponentTypeID GetComponentTypeID_Static()
Document class for managing node graphs.
Migration system for JSON versions.
Command for moving a node.
Core data structures for generic node graph system.
Singleton manager for multiple node graphs.
void Test4_Serialization()
void Test8_ValidateGraph()
void Test1_CreateGraphDocument()
Manages undo/redo stacks for commands.
Creates a new node in the graph.
Main document class for a node graph.
bool ValidateGraph(std::string &errorMessage) const
Validate the graph structure.
Singleton manager for multiple node graphs.
static NodeGraphManager & Get()
Get singleton instance.
std::string GetString(const json &j, const std::string &key, const std::string &defaultValue="")
Safely get a string value from JSON.
int GetInt(const json &j, const std::string &key, int defaultValue=0)
Safely get an integer value from JSON.
std::vector< NodeId > children