Added Tests for MathAdd Node
parent
e7314e3477
commit
bf0c7a7daa
|
@ -223,6 +223,8 @@ void AnimGraph::evaluate() {
|
|||
|
||||
finishNodeEval(node->m_index);
|
||||
}
|
||||
|
||||
evalOutputNode();
|
||||
}
|
||||
|
||||
Socket* AnimGraph::getInputSocket(const std::string& name) {
|
||||
|
|
|
@ -150,8 +150,8 @@ TEST_CASE("ResourceSaveLoadMathGraphInputs", "[AnimGraphResource]") {
|
|||
graph_resource_origin.clear();
|
||||
graph_resource_origin.m_name = "TestInputOutputGraph";
|
||||
|
||||
size_t float_to_vec3_node_index =
|
||||
graph_resource_origin.addNode(AnimNodeResourceFactory("MathFloatToVec3Node"));
|
||||
size_t float_to_vec3_node_index = graph_resource_origin.addNode(
|
||||
AnimNodeResourceFactory("MathFloatToVec3Node"));
|
||||
|
||||
AnimNodeResource& graph_output_node =
|
||||
graph_resource_origin.getGraphOutputNode();
|
||||
|
@ -200,7 +200,6 @@ TEST_CASE("ResourceSaveLoadMathGraphInputs", "[AnimGraphResource]") {
|
|||
graph_output_node,
|
||||
"GraphVec3Output"));
|
||||
|
||||
|
||||
WHEN("Saving and loading graph resource") {
|
||||
const char* filename = "ResourceSaveLoadGraphInputs.json";
|
||||
graph_resource_origin.saveToFile(filename);
|
||||
|
@ -240,28 +239,173 @@ TEST_CASE("ResourceSaveLoadMathGraphInputs", "[AnimGraphResource]") {
|
|||
AnimGraph anim_graph = graph_resource_loaded.createInstance();
|
||||
|
||||
REQUIRE(anim_graph.getInputSocket("GraphFloatInput") != nullptr);
|
||||
REQUIRE(anim_graph.getInputPtr("GraphFloatInput") == anim_graph.m_input_buffer);
|
||||
REQUIRE(
|
||||
anim_graph.getInputPtr("GraphFloatInput")
|
||||
== anim_graph.m_input_buffer);
|
||||
|
||||
float* graph_float_input = nullptr;
|
||||
graph_float_input = static_cast<float*>(anim_graph.getInputPtr("GraphFloatInput"));
|
||||
graph_float_input =
|
||||
static_cast<float*>(anim_graph.getInputPtr("GraphFloatInput"));
|
||||
|
||||
*graph_float_input = 123.456f;
|
||||
|
||||
AND_WHEN("Evaluating Graph") {
|
||||
anim_graph.updateTime(0.f);
|
||||
anim_graph.evaluate();
|
||||
|
||||
anim_graph.evalOutputNode();
|
||||
|
||||
Socket* float_output_socket = anim_graph.getOutputSocket("GraphFloatOutput");
|
||||
Socket* vec3_output_socket = anim_graph.getOutputSocket("GraphVec3Output");
|
||||
Vec3& vec3_output = *static_cast<Vec3*>(vec3_output_socket->m_value.ptr);
|
||||
Socket* float_output_socket =
|
||||
anim_graph.getOutputSocket("GraphFloatOutput");
|
||||
Socket* vec3_output_socket =
|
||||
anim_graph.getOutputSocket("GraphVec3Output");
|
||||
Vec3& vec3_output =
|
||||
*static_cast<Vec3*>(vec3_output_socket->m_value.ptr);
|
||||
|
||||
THEN("output vector components equal the graph input vaulues") {
|
||||
CHECK(vec3_output[0] == *graph_float_input);
|
||||
CHECK(vec3_output[1] == *graph_float_input);
|
||||
CHECK(vec3_output[2] == *graph_float_input);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
TEST_CASE("SimpleMathEvaluations", "[AnimGraphResource]") {
|
||||
AnimGraphResource graph_resource_origin;
|
||||
|
||||
graph_resource_origin.clear();
|
||||
graph_resource_origin.m_name = "TestInputOutputGraph";
|
||||
|
||||
size_t math_add0_node_index =
|
||||
graph_resource_origin.addNode(AnimNodeResourceFactory("MathAddNode"));
|
||||
|
||||
size_t math_add1_node_index =
|
||||
graph_resource_origin.addNode(AnimNodeResourceFactory("MathAddNode"));
|
||||
|
||||
AnimNodeResource& graph_output_node =
|
||||
graph_resource_origin.getGraphOutputNode();
|
||||
|
||||
graph_output_node.m_socket_accessor->RegisterInput<float>(
|
||||
"GraphFloat0Output",
|
||||
nullptr);
|
||||
graph_output_node.m_socket_accessor->RegisterInput<float>(
|
||||
"GraphFloat1Output",
|
||||
nullptr);
|
||||
graph_output_node.m_socket_accessor->RegisterInput<float>(
|
||||
"GraphFloat2Output",
|
||||
nullptr);
|
||||
|
||||
AnimNodeResource& graph_input_node =
|
||||
graph_resource_origin.getGraphInputNode();
|
||||
graph_input_node.m_socket_accessor->RegisterOutput<float>(
|
||||
"GraphFloatInput",
|
||||
nullptr);
|
||||
|
||||
// Prepare graph inputs and outputs
|
||||
AnimNodeResource& math_add0_node =
|
||||
graph_resource_origin.m_nodes[math_add0_node_index];
|
||||
AnimNodeResource& math_add1_node =
|
||||
graph_resource_origin.m_nodes[math_add1_node_index];
|
||||
|
||||
// direct output
|
||||
REQUIRE(graph_resource_origin.connectSockets(
|
||||
graph_input_node,
|
||||
"GraphFloatInput",
|
||||
graph_output_node,
|
||||
"GraphFloat0Output"));
|
||||
|
||||
// add0 node
|
||||
REQUIRE(graph_resource_origin.connectSockets(
|
||||
graph_input_node,
|
||||
"GraphFloatInput",
|
||||
math_add0_node,
|
||||
"Input0"));
|
||||
|
||||
REQUIRE(graph_resource_origin.connectSockets(
|
||||
graph_input_node,
|
||||
"GraphFloatInput",
|
||||
math_add0_node,
|
||||
"Input1"));
|
||||
|
||||
REQUIRE(graph_resource_origin.connectSockets(
|
||||
math_add0_node,
|
||||
"Output",
|
||||
graph_output_node,
|
||||
"GraphFloat1Output"));
|
||||
|
||||
// add1 node
|
||||
REQUIRE(graph_resource_origin.connectSockets(
|
||||
math_add0_node,
|
||||
"Output",
|
||||
math_add1_node,
|
||||
"Input0"));
|
||||
|
||||
REQUIRE(graph_resource_origin.connectSockets(
|
||||
graph_input_node,
|
||||
"GraphFloatInput",
|
||||
math_add1_node,
|
||||
"Input1"));
|
||||
|
||||
REQUIRE(graph_resource_origin.connectSockets(
|
||||
math_add1_node,
|
||||
"Output",
|
||||
graph_output_node,
|
||||
"GraphFloat2Output"));
|
||||
|
||||
WHEN("Saving and loading graph resource") {
|
||||
const char* filename = "ResourceSaveLoadGraphInputs.json";
|
||||
graph_resource_origin.saveToFile(filename);
|
||||
|
||||
AnimGraphResource graph_resource_loaded;
|
||||
graph_resource_loaded.loadFromFile(filename);
|
||||
|
||||
const AnimNodeResource& graph_loaded_output_node =
|
||||
graph_resource_loaded.m_nodes[0];
|
||||
const AnimNodeResource& graph_loaded_input_node =
|
||||
graph_resource_loaded.m_nodes[1];
|
||||
|
||||
WHEN("Instantiating an AnimGraph") {
|
||||
AnimGraph anim_graph = graph_resource_loaded.createInstance();
|
||||
|
||||
REQUIRE(anim_graph.getInputSocket("GraphFloatInput") != nullptr);
|
||||
REQUIRE(
|
||||
anim_graph.getInputPtr("GraphFloatInput")
|
||||
== anim_graph.m_input_buffer);
|
||||
|
||||
float* graph_float_input = nullptr;
|
||||
graph_float_input =
|
||||
static_cast<float*>(anim_graph.getInputPtr("GraphFloatInput"));
|
||||
|
||||
*graph_float_input = 123.456f;
|
||||
|
||||
AND_WHEN("Evaluating Graph") {
|
||||
anim_graph.updateTime(0.f);
|
||||
anim_graph.evaluate();
|
||||
|
||||
Socket* float0_output_socket =
|
||||
anim_graph.getOutputSocket("GraphFloat0Output");
|
||||
Socket* float1_output_socket =
|
||||
anim_graph.getOutputSocket("GraphFloat1Output");
|
||||
Socket* float2_output_socket =
|
||||
anim_graph.getOutputSocket("GraphFloat2Output");
|
||||
|
||||
REQUIRE(float0_output_socket != nullptr);
|
||||
REQUIRE(float1_output_socket != nullptr);
|
||||
REQUIRE(float2_output_socket != nullptr);
|
||||
|
||||
float& float0_output = *static_cast<float*>(float0_output_socket->m_value.ptr);
|
||||
float& float1_output = *static_cast<float*>(float1_output_socket->m_value.ptr);
|
||||
float& float2_output = *static_cast<float*>(float2_output_socket->m_value.ptr);
|
||||
|
||||
THEN("output vector components equal the graph input vaulues") {
|
||||
CHECK(float0_output == Approx(*graph_float_input));
|
||||
CHECK(float1_output == Approx(*graph_float_input * 2.));
|
||||
CHECK(float2_output == Approx(*graph_float_input * 3.));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in New Issue