The Great ScriptCanvas Purge. Part I.

Signed-off-by: chcurran <82187351+carlitosan@users.noreply.github.com>
This commit is contained in:
chcurran
2021-07-01 09:57:36 -07:00
parent ffe77f7eed
commit 59ff74f559
81 changed files with 40 additions and 3906 deletions
@@ -470,14 +470,6 @@ namespace ScriptCanvasTests
AZ::u32 TestBehaviorContextObject::s_createdCount = 0;
AZ::u32 TestBehaviorContextObject::s_destroyedCount = 0;
ScriptCanvas::Nodes::Core::BehaviorContextObjectNode* CreateTestObjectNode(const AZ::EntityId& graphUniqueId, AZ::EntityId& entityOut, const AZ::Uuid& objectTypeID)
{
ScriptCanvas::Nodes::Core::BehaviorContextObjectNode* node = CreateTestNode<ScriptCanvas::Nodes::Core::BehaviorContextObjectNode>(graphUniqueId, entityOut);
EXPECT_TRUE(node != nullptr);
node->InitializeObject(objectTypeID);
return node;
}
AZ::EntityId CreateClassFunctionNode(const ScriptCanvasId& scriptCanvasId, AZStd::string_view className, AZStd::string_view methodName)
{
using namespace ScriptCanvas;
@@ -495,93 +487,6 @@ namespace ScriptCanvasTests
return methodNodeID;
}
ScriptCanvas::Node* CreateDataNodeByType(const ScriptCanvasId& scriptCanvasId, const ScriptCanvas::Data::Type& type, AZ::EntityId& nodeIDout)
{
using namespace ScriptCanvas;
Node* node(nullptr);
switch (type.GetType())
{
case Data::eType::AABB:
node = CreateTestNode<ScriptCanvas::Nodes::Math::AABB>(scriptCanvasId, nodeIDout);
break;
case Data::eType::BehaviorContextObject:
{
auto objectNode = CreateTestNode<ScriptCanvas::Nodes::Core::BehaviorContextObjectNode>(scriptCanvasId, nodeIDout);
objectNode->InitializeObject(type);
node = objectNode;
}
break;
case Data::eType::Boolean:
node = CreateTestNode<ScriptCanvas::Nodes::Logic::Boolean>(scriptCanvasId, nodeIDout);
break;
case Data::eType::Color:
node = CreateTestNode<ScriptCanvas::Nodes::Math::Color>(scriptCanvasId, nodeIDout);
break;
case Data::eType::CRC:
node = CreateTestNode<ScriptCanvas::Nodes::Math::CRC>(scriptCanvasId, nodeIDout);
break;
case Data::eType::EntityID:
node = CreateTestNode<ScriptCanvas::Nodes::Entity::EntityRef>(scriptCanvasId, nodeIDout);
break;
case Data::eType::Matrix3x3:
node = CreateTestNode<ScriptCanvas::Nodes::Math::Matrix3x3>(scriptCanvasId, nodeIDout);
break;
case Data::eType::Matrix4x4:
node = CreateTestNode<ScriptCanvas::Nodes::Math::Matrix4x4>(scriptCanvasId, nodeIDout);
break;
case Data::eType::Number:
node = CreateTestNode<ScriptCanvas::Nodes::Math::Number>(scriptCanvasId, nodeIDout);
break;
case Data::eType::OBB:
node = CreateTestNode<ScriptCanvas::Nodes::Math::OBB>(scriptCanvasId, nodeIDout);
break;
case Data::eType::Plane:
node = CreateTestNode<ScriptCanvas::Nodes::Math::Plane>(scriptCanvasId, nodeIDout);
break;
case Data::eType::Quaternion:
node = CreateTestNode<ScriptCanvas::Nodes::Math::Quaternion>(scriptCanvasId, nodeIDout);
break;
case Data::eType::String:
node = CreateTestNode<ScriptCanvas::Nodes::Core::String>(scriptCanvasId, nodeIDout);
break;
case Data::eType::Transform:
node = CreateTestNode<ScriptCanvas::Nodes::Math::Transform>(scriptCanvasId, nodeIDout);
break;
case Data::eType::Vector2:
node = CreateTestNode<ScriptCanvas::Nodes::Math::Vector2>(scriptCanvasId, nodeIDout);
break;
case Data::eType::Vector3:
node = CreateTestNode<ScriptCanvas::Nodes::Math::Vector3>(scriptCanvasId, nodeIDout);
break;
case Data::eType::Vector4:
node = CreateTestNode<ScriptCanvas::Nodes::Math::Vector4>(scriptCanvasId, nodeIDout);
break;
default:
AZ_Error("ScriptCanvas", false, "unsupported data type");
}
return node;
}
AZStd::string SlotDescriptorToString(ScriptCanvas::SlotDescriptor descriptor)
{
AZStd::string name;
@@ -101,7 +101,6 @@ namespace ScriptCanvasTests
return addVariableOutcome.TakeValue();
}
ScriptCanvas::Nodes::Core::BehaviorContextObjectNode* CreateTestObjectNode(const ScriptCanvas::ScriptCanvasId& scriptCanvasId, AZ::EntityId& entityOut, const AZ::Uuid& objectTypeID);
AZ::EntityId CreateClassFunctionNode(const ScriptCanvas::ScriptCanvasId& scriptCanvasId, AZStd::string_view className, AZStd::string_view methodName);
AZStd::string SlotDescriptorToString(ScriptCanvas::SlotDescriptor type);
void DumpSlots(const ScriptCanvas::Node& node);
@@ -12,7 +12,6 @@
#include <Source/Framework/ScriptCanvasTestNodes.h>
#include <ScriptCanvas/Libraries/Core/Start.h>
#include <ScriptCanvas/Libraries/Core/BehaviorContextObjectNode.h>
#include <AzCore/Math/Uuid.h>
#include <AzCore/std/string/string.h>
@@ -20,48 +19,6 @@ using namespace ScriptCanvasTests;
using namespace ScriptCanvasEditor;
using namespace TestNodes;
TEST_F(ScriptCanvasTestFixture, BehaviorContextObjectGenericConstructor)
{
using namespace ScriptCanvas;
TestBehaviorContextObject::Reflect(m_serializeContext);
TestBehaviorContextObject::Reflect(m_behaviorContext);
AZ::Entity* graphEntity = aznew AZ::Entity("Graph");
graphEntity->Init();
SystemRequestBus::Broadcast(&SystemRequests::CreateGraphOnEntity, graphEntity);
auto graph = graphEntity->FindComponent<ScriptCanvas::Graph>();
EXPECT_NE(nullptr, graph);
const ScriptCanvasId& graphUniqueId = graph->GetScriptCanvasId();
//Validates the GenericConstructorOverride attribute is being used to construct types that are normally not initialized in C++
AZ::EntityId vector3IdA;
ScriptCanvas::Nodes::Core::BehaviorContextObjectNode* vector3NodeA = CreateTestNode<ScriptCanvas::Nodes::Core::BehaviorContextObjectNode>(graphUniqueId, vector3IdA);
vector3NodeA->InitializeObject(azrtti_typeid<TestBehaviorContextObject>());
ReportErrors(graph);
if (auto result = vector3NodeA->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set"))
{
EXPECT_EQ(0, result->GetValue());
}
else
{
ADD_FAILURE();
}
delete graphEntity;
m_serializeContext->EnableRemoveReflection();
m_behaviorContext->EnableRemoveReflection();
TestBehaviorContextObject::Reflect(m_serializeContext);
TestBehaviorContextObject::Reflect(m_behaviorContext);
m_serializeContext->DisableRemoveReflection();
m_behaviorContext->DisableRemoveReflection();
}
// Tests the basic footprint of the ebus node both before and after graph activation to make sure all internal bookeeping is correct.
TEST_F(ScriptCanvasTestFixture, BehaviorContext_BusHandlerNodeFootPrint)
{
@@ -407,38 +407,6 @@ TEST_F(ScriptCanvasTestFixture, ValueTypes)
GTEST_SUCCEED();
}
namespace
{
using namespace ScriptCanvas;
using namespace ScriptCanvas::Nodes;
bool GraphHasVectorWithValue(const ScriptCanvas::Graph& graph, const AZ::Vector3& vector)
{
for (auto nodeId : graph.GetNodes())
{
AZ::Entity* entity{};
AZ::ComponentApplicationBus::BroadcastResult(entity, &AZ::ComponentApplicationRequests::FindEntity, nodeId);
if (entity)
{
if (auto node = AZ::EntityUtils::FindFirstDerivedComponent<Core::BehaviorContextObjectNode>(entity))
{
if (auto candidate = node->GetInput_UNIT_TEST<AZ::Vector3>("Set"))
{
if (*candidate == vector)
{
return true;
}
}
}
}
}
return false;
}
}
TEST_F(ScriptCanvasTestFixture, Contracts)
{
using namespace ScriptCanvas;
@@ -666,126 +634,6 @@ TEST_F(ScriptCanvasTestFixture, Contracts)
// m_behaviorContext->DisableRemoveReflection();
// }
TEST_F(ScriptCanvasTestFixture, EntityRefTest)
{
using namespace ScriptCanvas;
using namespace ScriptCanvas::Nodes;
// Fake "world" entities
AZ::Entity first("First");
first.CreateComponent<ScriptCanvasTests::TestComponent>();
first.Init();
first.Activate();
AZ::Entity second("Second");
second.CreateComponent<ScriptCanvasTests::TestComponent>();
second.Init();
second.Activate();
// Script Canvas ScriptCanvas::Graph
ScriptCanvas::Graph* graph = nullptr;
SystemRequestBus::BroadcastResult(graph, &SystemRequests::MakeGraph);
EXPECT_TRUE(graph != nullptr);
m_entityContext.AddEntity(first.GetId());
m_entityContext.AddEntity(second.GetId());
m_entityContext.AddEntity(graph->GetEntityId());
graph->GetEntity()->SetName("ScriptCanvas::Graph Owner Entity");
graph->GetEntity()->CreateComponent<ScriptCanvasTests::TestComponent>();
graph->GetEntity()->Init();
const ScriptCanvasId& graphUniqueId = graph->GetScriptCanvasId();
AZ::EntityId startID;
CreateTestNode<ScriptCanvas::Nodes::Core::Start>(graphUniqueId, startID);
// EntityRef node to some specific entity #1
AZ::EntityId selfEntityIdNode;
auto selfEntityRef = CreateTestNode<ScriptCanvas::Nodes::Entity::EntityRef>(graphUniqueId, selfEntityIdNode);
selfEntityRef->SetEntityRef(first.GetId());
// EntityRef node to some specific entity #2
AZ::EntityId otherEntityIdNode;
auto otherEntityRef = CreateTestNode<ScriptCanvas::Nodes::Entity::EntityRef>(graphUniqueId, otherEntityIdNode);
otherEntityRef->SetEntityRef(second.GetId());
// Explicitly set an EntityRef node with this graph's entity Id.
AZ::EntityId graphEntityIdNode;
auto graphEntityRef = CreateTestNode<ScriptCanvas::Nodes::Entity::EntityRef>(graphUniqueId, graphEntityIdNode);
graphEntityRef->SetEntityRef(graph->GetEntity()->GetId());
// First test: directly set an entity Id on the EntityID: 0 slot
AZ::EntityId eventAid;
ScriptCanvas::Nodes::Core::Method* nodeA = CreateTestNode<ScriptCanvas::Nodes::Core::Method>(graphUniqueId, eventAid);
nodeA->InitializeEvent({ {} }, "EntityRefTestEventBus", "TestEvent");
if (auto entityId = nodeA->ModInput_UNIT_TEST<AZ::EntityId>("EntityID: 0"))
{
*entityId = first.GetId();
}
// Second test: Will connect the slot to an EntityRef node
AZ::EntityId eventBid;
ScriptCanvas::Nodes::Core::Method* nodeB = CreateTestNode<ScriptCanvas::Nodes::Core::Method>(graphUniqueId, eventBid);
nodeB->InitializeEvent({ {} }, "EntityRefTestEventBus", "TestEvent");
// Third test: Set the slot's EntityId: 0 to SelfReferenceId, this should result in the same Id as graph->GetEntityId()
AZ::EntityId eventCid;
ScriptCanvas::Nodes::Core::Method* nodeC = CreateTestNode<ScriptCanvas::Nodes::Core::Method>(graphUniqueId, eventCid);
nodeC->InitializeEvent({ {} }, "EntityRefTestEventBus", "TestEvent");
if (auto entityId = nodeC->ModInput_UNIT_TEST<AZ::EntityId>("EntityID: 0"))
{
*entityId = ScriptCanvas::GraphOwnerId;
}
// True
AZ::EntityId trueNodeId;
CreateDataNode<Data::BooleanType>(graphUniqueId, true, trueNodeId);
// False
AZ::EntityId falseNodeId;
CreateDataNode<Data::BooleanType>(graphUniqueId, false, falseNodeId);
// Start -> TestEvent
// O EntityId: 0 (not connected, it was set directly on the slot)
// EntityRef: first -O EntityId: 1
// False -O Boolean: 2
EXPECT_TRUE(Connect(*graph, startID, "Out", eventAid, "In"));
EXPECT_TRUE(Connect(*graph, eventAid, "EntityID: 1", selfEntityIdNode, "Get"));
EXPECT_TRUE(Connect(*graph, eventAid, "Boolean: 2", falseNodeId, "Get"));
// Start -> TestEvent
// EntityRef: second -O EntityId: 0
// EntityRef: second -O EntityId: 1
// False -O Boolean: 2
EXPECT_TRUE(Connect(*graph, startID, "Out", eventBid, "In"));
EXPECT_TRUE(Connect(*graph, eventBid, "EntityID: 0", otherEntityIdNode, "Get"));
EXPECT_TRUE(Connect(*graph, eventBid, "EntityID: 1", otherEntityIdNode, "Get"));
EXPECT_TRUE(Connect(*graph, eventBid, "Boolean: 2", falseNodeId, "Get"));
// Start -> TestEvent
// -O EntityId: 0 (not connected, slot is set to SelfReferenceId)
// graphEntityIdNode -O EntityId: 1
// True -O Boolean: 2
EXPECT_TRUE(Connect(*graph, startID, "Out", eventCid, "In"));
EXPECT_TRUE(Connect(*graph, eventCid, "EntityID: 1", graphEntityIdNode, "Get"));
EXPECT_TRUE(Connect(*graph, eventCid, "Boolean: 2", trueNodeId, "Get"));
// Execute the graph
{
ScriptCanvasEditor::ScopedOutputSuppression suppressOutput;
graph->GetEntity()->Activate();
}
ReportErrors(graph);
delete graph->GetEntity();
}
const int k_executionCount = 998;
TEST_F(ScriptCanvasTestFixture, ExecutionLength)
@@ -828,10 +676,11 @@ TEST_F(ScriptCanvasTestFixture, ExecutionLength)
TEST_F(ScriptCanvasTestFixture, While)
{
RunUnitTestGraph("LY_SC_UnitTest_While", ExecutionMode::Interpreted);
RunUnitTestGraph("LY_SC_UnitTest_While", ScriptCanvas::ExecutionMode::Interpreted);
}
TEST_F(ScriptCanvasTestFixture, WhileBreak)
{
RunUnitTestGraph("LY_SC_UnitTest_WhileBreak", ExecutionMode::Interpreted);
RunUnitTestGraph("LY_SC_UnitTest_WhileBreak", ScriptCanvas::ExecutionMode::Interpreted);
}
@@ -17,76 +17,6 @@
using namespace ScriptCanvasTests;
using namespace ScriptCanvas;
template<typename t_Node>
AZStd::vector<ScriptCanvas::Datum> TestMathFunction(std::initializer_list<AZStd::string_view> inputNamesList, std::initializer_list<ScriptCanvas::Datum> inputList, std::initializer_list<AZStd::string_view> outputNamesList, std::initializer_list<ScriptCanvas::Datum> outputList)
{
AZStd::vector<AZStd::string_view> inputNames(inputNamesList);
AZStd::vector<Datum> input(inputList);
AZStd::vector<AZStd::string_view> outputNames(outputNamesList);
AZStd::vector<Datum> output(outputList);
AZ_Assert(inputNames.size() == input.size(), "Size mismatch");
AZ_Assert(outputNames.size() == output.size(), "Size mismatch");
AZ::Entity graphEntity("Graph");
graphEntity.Init();
SystemRequestBus::Broadcast(&SystemRequests::CreateGraphOnEntity, &graphEntity);
auto graph = graphEntity.FindComponent<Graph>();
EXPECT_NE(nullptr, graph);
const AZ::EntityId& graphEntityId = graph->GetEntityId();
const ScriptCanvasId& graphUniqueId = graph->GetScriptCanvasId();
AZ::EntityId startID;
CreateTestNode<ScriptCanvas::Nodes::Core::Start>(graphUniqueId, startID);
AZ::EntityId functionID;
CreateTestNode<t_Node>(graphUniqueId, functionID);
EXPECT_TRUE(Connect(*graph, startID, "Out", functionID, "In"));
AZStd::vector<Node*> inputNodes;
AZStd::vector<AZ::EntityId> inputNodeIDs;
AZStd::vector<Node*> outputNodes;
AZStd::vector<AZ::EntityId> outputNodeIDs;
for (int i = 0; i < input.size(); ++i)
{
AZ::EntityId inputNodeID;
auto node = CreateDataNodeByType(graphUniqueId, input[i].GetType(), inputNodeID);
inputNodeIDs.push_back(inputNodeID);
inputNodes.push_back(node);
node->SetInput_UNIT_TEST(PureData::k_setThis, input[i]);
}
for (int i = 0; i < output.size(); ++i)
{
AZ::EntityId outputNodeID;
auto node = CreateDataNodeByType(graphUniqueId, output[i].GetType(), outputNodeID);
outputNodeIDs.push_back(outputNodeID);
outputNodes.push_back(node);
}
for (int i = 0; i < inputNames.size(); ++i)
{
EXPECT_TRUE(Connect(*graph, inputNodeIDs[i], "Get", functionID, inputNames[i].data()));
}
for (int i = 0; i < output.size(); ++i)
{
EXPECT_TRUE(Connect(*graph, functionID, outputNames[i].data(), outputNodeIDs[i], PureData::k_setThis));
}
graph->GetEntity()->Activate();
for (int i = 0; i < output.size(); ++i)
{
output[i] = *outputNodes[i]->GetInput_UNIT_TEST(PureData::k_setThis);
}
graph->GetEntity()->Deactivate();
delete graph;
return output;
}
TEST_F(ScriptCanvasTestFixture, MathOperations_Graph)
{
RunUnitTestGraph("LY_SC_UnitTest_MathOperations", ExecutionMode::Interpreted);
@@ -163,906 +163,5 @@ TEST_F(ScriptCanvasTestFixture, NodeGenerics)
delete graph->GetEntity();
}
TEST_F(ScriptCanvasTestFixture, NodeGenericsByValue)
{
using namespace ScriptCanvas;
using namespace ScriptCanvas::Nodes;
RegisterComponentDescriptor<MaxReturnByValueNode>();
TestBehaviorContextObject::Reflect(m_serializeContext);
TestBehaviorContextObject::Reflect(m_behaviorContext);
TestBehaviorContextObject::ResetCounts();
UnitTestEventsHandler unitTestHandler;
unitTestHandler.BusConnect();
Graph* graph = nullptr;
SystemRequestBus::BroadcastResult(graph, &SystemRequests::MakeGraph);
EXPECT_TRUE(graph != nullptr);
graph->GetEntity()->Init();
const ScriptCanvasId& graphUniqueId = graph->GetScriptCanvasId();
AZ::EntityId startID;
CreateTestNode<ScriptCanvas::Nodes::Core::Start>(graphUniqueId, startID);
AZ::EntityId maxByValueID;
CreateTestNode<MaxReturnByValueNode>(graphUniqueId, maxByValueID);
AZ::EntityId valueID1, valueID2, valueID3, valueID4, valueID5;
Core::BehaviorContextObjectNode* valueNode1 = CreateTestNode<Core::BehaviorContextObjectNode>(graphUniqueId, valueID1);
valueNode1->InitializeObject(azrtti_typeid<TestBehaviorContextObject>());
valueNode1->ModInput_UNIT_TEST<TestBehaviorContextObject>("Set")->SetValue(1);
EXPECT_EQ(1, valueNode1->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set")->GetValue());
Core::BehaviorContextObjectNode* valueNode2 = CreateTestNode<Core::BehaviorContextObjectNode>(graphUniqueId, valueID2);
valueNode2->InitializeObject(azrtti_typeid<TestBehaviorContextObject>());
valueNode2->ModInput_UNIT_TEST<TestBehaviorContextObject>("Set")->SetValue(2);
EXPECT_EQ(2, valueNode2->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set")->GetValue());
Core::BehaviorContextObjectNode* valueNode3 = CreateTestNode<Core::BehaviorContextObjectNode>(graphUniqueId, valueID3);
valueNode3->InitializeObject(azrtti_typeid<TestBehaviorContextObject>());
valueNode3->ModInput_UNIT_TEST<TestBehaviorContextObject>("Set")->SetValue(3);
EXPECT_EQ(3, valueNode3->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set")->GetValue());
Core::BehaviorContextObjectNode* valueNode4 = CreateTestNode<Core::BehaviorContextObjectNode>(graphUniqueId, valueID4);
valueNode4->InitializeObject(azrtti_typeid<TestBehaviorContextObject>());
valueNode4->ModInput_UNIT_TEST<TestBehaviorContextObject>("Set")->SetValue(4);
EXPECT_EQ(4, valueNode4->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set")->GetValue());
Core::BehaviorContextObjectNode* valueNode5 = CreateTestNode<Core::BehaviorContextObjectNode>(graphUniqueId, valueID5);
valueNode5->InitializeObject(azrtti_typeid<TestBehaviorContextObject>());
valueNode5->ModInput_UNIT_TEST<TestBehaviorContextObject>("Set")->SetValue(5);
EXPECT_EQ(5, valueNode5->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set")->GetValue());
auto value1 = valueNode1->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set");
auto value2 = valueNode2->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set");
auto value3 = valueNode3->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set");
auto value4 = valueNode4->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set");
auto value5 = valueNode5->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set");
EXPECT_NE(value1, value2);
EXPECT_NE(value1, value3);
EXPECT_NE(value1, value4);
EXPECT_NE(value1, value5);
EXPECT_NE(value2, value3);
EXPECT_NE(value2, value4);
EXPECT_NE(value2, value5);
EXPECT_NE(value3, value4);
EXPECT_NE(value3, value5);
EXPECT_NE(value4, value5);
// data
EXPECT_TRUE(Connect(*graph, valueID1, "Get", maxByValueID, "TestBehaviorContextObject: 0"));
EXPECT_TRUE(Connect(*graph, valueID2, "Get", maxByValueID, "TestBehaviorContextObject: 1"));
EXPECT_TRUE(Connect(*graph, maxByValueID, "Result: TestBehaviorContextObject", valueID3, "Set"));
EXPECT_TRUE(Connect(*graph, valueID3, "Get", valueID4, "Set"));
EXPECT_TRUE(Connect(*graph, maxByValueID, "Result: TestBehaviorContextObject", valueID5, "Set"));
delete graph->GetEntity();
m_serializeContext->EnableRemoveReflection();
m_behaviorContext->EnableRemoveReflection();
TestBehaviorContextObject::Reflect(m_serializeContext);
TestBehaviorContextObject::Reflect(m_behaviorContext);
m_serializeContext->DisableRemoveReflection();
m_behaviorContext->DisableRemoveReflection();
}
TEST_F(ScriptCanvasTestFixture, NodeGenericsByPointer)
{
using namespace ScriptCanvas;
using namespace ScriptCanvas::Nodes;
RegisterComponentDescriptor<MaxReturnByPointerNode>();
TestBehaviorContextObject::Reflect(m_serializeContext);
TestBehaviorContextObject::Reflect(m_behaviorContext);
TestBehaviorContextObject::ResetCounts();
UnitTestEventsHandler unitTestHandler;
unitTestHandler.BusConnect();
Graph* graph = nullptr;
SystemRequestBus::BroadcastResult(graph, &SystemRequests::MakeGraph);
EXPECT_TRUE(graph != nullptr);
graph->GetEntity()->Init();
const ScriptCanvasId& graphUniqueId = graph->GetScriptCanvasId();
AZ::EntityId startID;
CreateTestNode<ScriptCanvas::Nodes::Core::Start>(graphUniqueId, startID);
AZ::EntityId maxByValueID;
CreateTestNode<MaxReturnByPointerNode>(graphUniqueId, maxByValueID);
AZ::EntityId valueID1, valueID2, valueID3, valueID4, valueID5;
Core::BehaviorContextObjectNode* valueNode1 = CreateTestNode<Core::BehaviorContextObjectNode>(graphUniqueId, valueID1);
valueNode1->InitializeObject(azrtti_typeid<TestBehaviorContextObject>());
valueNode1->ModInput_UNIT_TEST<TestBehaviorContextObject>("Set")->SetValue(1);
EXPECT_EQ(1, valueNode1->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set")->GetValue());
Core::BehaviorContextObjectNode* valueNode2 = CreateTestNode<Core::BehaviorContextObjectNode>(graphUniqueId, valueID2);
valueNode2->InitializeObject(azrtti_typeid<TestBehaviorContextObject>());
valueNode2->ModInput_UNIT_TEST<TestBehaviorContextObject>("Set")->SetValue(2);
EXPECT_EQ(2, valueNode2->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set")->GetValue());
Core::BehaviorContextObjectNode* valueNode3 = CreateTestNode<Core::BehaviorContextObjectNode>(graphUniqueId, valueID3);
valueNode3->InitializeObject(azrtti_typeid<TestBehaviorContextObject>());
valueNode3->ModInput_UNIT_TEST<TestBehaviorContextObject>("Set")->SetValue(3);
EXPECT_EQ(3, valueNode3->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set")->GetValue());
Core::BehaviorContextObjectNode* valueNode4 = CreateTestNode<Core::BehaviorContextObjectNode>(graphUniqueId, valueID4);
valueNode4->InitializeObject(azrtti_typeid<TestBehaviorContextObject>());
valueNode4->ModInput_UNIT_TEST<TestBehaviorContextObject>("Set")->SetValue(4);
EXPECT_EQ(4, valueNode4->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set")->GetValue());
Core::BehaviorContextObjectNode* valueNode5 = CreateTestNode<Core::BehaviorContextObjectNode>(graphUniqueId, valueID5);
valueNode5->InitializeObject(azrtti_typeid<TestBehaviorContextObject>());
valueNode5->ModInput_UNIT_TEST<TestBehaviorContextObject>("Set")->SetValue(5);
EXPECT_EQ(5, valueNode5->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set")->GetValue());
auto value1 = valueNode1->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set");
auto value2 = valueNode2->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set");
auto value3 = valueNode3->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set");
auto value4 = valueNode4->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set");
auto value5 = valueNode5->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set");
EXPECT_NE(value1, value2);
EXPECT_NE(value1, value3);
EXPECT_NE(value1, value4);
EXPECT_NE(value1, value5);
EXPECT_NE(value2, value3);
EXPECT_NE(value2, value4);
EXPECT_NE(value2, value5);
EXPECT_NE(value3, value4);
EXPECT_NE(value3, value5);
EXPECT_NE(value4, value5);
// data
EXPECT_TRUE(Connect(*graph, valueID1, "Get", maxByValueID, "TestBehaviorContextObject: 0"));
EXPECT_TRUE(Connect(*graph, valueID2, "Get", maxByValueID, "TestBehaviorContextObject: 1"));
EXPECT_TRUE(Connect(*graph, maxByValueID, "Result: TestBehaviorContextObject", valueID3, "Set"));
EXPECT_TRUE(Connect(*graph, valueID3, "Get", valueID4, "Set"));
EXPECT_TRUE(Connect(*graph, maxByValueID, "Result: TestBehaviorContextObject", valueID5, "Set"));
// execution
EXPECT_TRUE(Connect(*graph, startID, "Out", maxByValueID, "In"));
delete graph->GetEntity();
m_serializeContext->EnableRemoveReflection();
m_behaviorContext->EnableRemoveReflection();
TestBehaviorContextObject::Reflect(m_serializeContext);
TestBehaviorContextObject::Reflect(m_behaviorContext);
m_serializeContext->DisableRemoveReflection();
m_behaviorContext->DisableRemoveReflection();
}
TEST_F(ScriptCanvasTestFixture, NodeGenericsByReference)
{
using namespace ScriptCanvas;
using namespace ScriptCanvas::Nodes;
RegisterComponentDescriptor<MaxReturnByReferenceNode>();
TestBehaviorContextObject::Reflect(m_serializeContext);
TestBehaviorContextObject::Reflect(m_behaviorContext);
TestBehaviorContextObject::ResetCounts();
UnitTestEventsHandler unitTestHandler;
unitTestHandler.BusConnect();
Graph* graph = nullptr;
SystemRequestBus::BroadcastResult(graph, &SystemRequests::MakeGraph);
EXPECT_TRUE(graph != nullptr);
graph->GetEntity()->Init();
const ScriptCanvasId& graphUniqueId = graph->GetScriptCanvasId();
AZ::EntityId startID;
CreateTestNode<ScriptCanvas::Nodes::Core::Start>(graphUniqueId, startID);
AZ::EntityId maxByValueID;
CreateTestNode<MaxReturnByReferenceNode>(graphUniqueId, maxByValueID);
AZ::EntityId valueID1, valueID2, valueID3, valueID4, valueID5;
Core::BehaviorContextObjectNode* valueNode1 = CreateTestNode<Core::BehaviorContextObjectNode>(graphUniqueId, valueID1);
valueNode1->InitializeObject(azrtti_typeid<TestBehaviorContextObject>());
valueNode1->ModInput_UNIT_TEST<TestBehaviorContextObject>("Set")->SetValue(1);
EXPECT_EQ(1, valueNode1->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set")->GetValue());
Core::BehaviorContextObjectNode* valueNode2 = CreateTestNode<Core::BehaviorContextObjectNode>(graphUniqueId, valueID2);
valueNode2->InitializeObject(azrtti_typeid<TestBehaviorContextObject>());
valueNode2->ModInput_UNIT_TEST<TestBehaviorContextObject>("Set")->SetValue(2);
EXPECT_EQ(2, valueNode2->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set")->GetValue());
Core::BehaviorContextObjectNode* valueNode3 = CreateTestNode<Core::BehaviorContextObjectNode>(graphUniqueId, valueID3);
valueNode3->InitializeObject(azrtti_typeid<TestBehaviorContextObject>());
valueNode3->ModInput_UNIT_TEST<TestBehaviorContextObject>("Set")->SetValue(3);
EXPECT_EQ(3, valueNode3->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set")->GetValue());
Core::BehaviorContextObjectNode* valueNode4 = CreateTestNode<Core::BehaviorContextObjectNode>(graphUniqueId, valueID4);
valueNode4->InitializeObject(azrtti_typeid<TestBehaviorContextObject>());
valueNode4->ModInput_UNIT_TEST<TestBehaviorContextObject>("Set")->SetValue(4);
EXPECT_EQ(4, valueNode4->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set")->GetValue());
Core::BehaviorContextObjectNode* valueNode5 = CreateTestNode<Core::BehaviorContextObjectNode>(graphUniqueId, valueID5);
valueNode5->InitializeObject(azrtti_typeid<TestBehaviorContextObject>());
valueNode5->ModInput_UNIT_TEST<TestBehaviorContextObject>("Set")->SetValue(5);
EXPECT_EQ(5, valueNode5->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set")->GetValue());
auto value1 = valueNode1->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set");
auto value2 = valueNode2->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set");
auto value3 = valueNode3->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set");
auto value4 = valueNode4->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set");
auto value5 = valueNode5->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set");
EXPECT_NE(value1, value2);
EXPECT_NE(value1, value3);
EXPECT_NE(value1, value4);
EXPECT_NE(value1, value5);
EXPECT_NE(value2, value3);
EXPECT_NE(value2, value4);
EXPECT_NE(value2, value5);
EXPECT_NE(value3, value4);
EXPECT_NE(value3, value5);
EXPECT_NE(value4, value5);
// data
EXPECT_TRUE(Connect(*graph, valueID1, "Get", maxByValueID, "TestBehaviorContextObject: 0"));
EXPECT_TRUE(Connect(*graph, valueID2, "Get", maxByValueID, "TestBehaviorContextObject: 1"));
EXPECT_TRUE(Connect(*graph, maxByValueID, "Result: TestBehaviorContextObject", valueID3, "Set"));
EXPECT_TRUE(Connect(*graph, valueID3, "Get", valueID4, "Set"));
EXPECT_TRUE(Connect(*graph, maxByValueID, "Result: TestBehaviorContextObject", valueID5, "Set"));
delete graph->GetEntity();
m_serializeContext->EnableRemoveReflection();
m_behaviorContext->EnableRemoveReflection();
TestBehaviorContextObject::Reflect(m_serializeContext);
TestBehaviorContextObject::Reflect(m_behaviorContext);
m_serializeContext->DisableRemoveReflection();
m_behaviorContext->DisableRemoveReflection();
}
TEST_F(ScriptCanvasTestFixture, NodeGenericsByValueInteger)
{
using namespace ScriptCanvas;
using namespace ScriptCanvas::Nodes;
RegisterComponentDescriptor<MaxReturnByValueIntegerNode>();
TestBehaviorContextObject::Reflect(m_serializeContext);
TestBehaviorContextObject::Reflect(m_behaviorContext);
TestBehaviorContextObject::ResetCounts();
UnitTestEventsHandler unitTestHandler;
unitTestHandler.BusConnect();
Graph* graph = nullptr;
SystemRequestBus::BroadcastResult(graph, &SystemRequests::MakeGraph);
EXPECT_TRUE(graph != nullptr);
graph->GetEntity()->Init();
const AZ::EntityId graphEntityId = graph->GetEntityId();
const ScriptCanvasId& graphUniqueId = graph->GetScriptCanvasId();
AZ::EntityId startID;
CreateTestNode<ScriptCanvas::Nodes::Core::Start>(graphUniqueId, startID);
AZ::EntityId maxByValueID;
CreateTestNode<MaxReturnByValueIntegerNode>(graphUniqueId, maxByValueID);
AZ::EntityId valueID1, valueID2, valueID3, valueID4, valueID5;
Node* valueNode1 = CreateDataNode<Data::NumberType>(graphUniqueId, 1, valueID1);
EXPECT_EQ(1, *valueNode1->GetInput_UNIT_TEST<Data::NumberType>("Set"));
Node* valueNode2 = CreateDataNode<Data::NumberType>(graphUniqueId, 2, valueID2);
EXPECT_EQ(2, *valueNode2->GetInput_UNIT_TEST<Data::NumberType>("Set"));
Node* valueNode3 = CreateDataNode<Data::NumberType>(graphUniqueId, 3, valueID3);
EXPECT_EQ(3, *valueNode3->GetInput_UNIT_TEST<Data::NumberType>("Set"));
Node* valueNode4 = CreateDataNode<Data::NumberType>(graphUniqueId, 4, valueID4);
EXPECT_EQ(4, *valueNode4->GetInput_UNIT_TEST<Data::NumberType>("Set"));
Node* valueNode5 = CreateDataNode<Data::NumberType>(graphUniqueId, 5, valueID5);
EXPECT_EQ(5, *valueNode5->GetInput_UNIT_TEST<Data::NumberType>("Set"));
auto value1 = valueNode1->GetInput_UNIT_TEST<Data::NumberType>("Set");
auto value2 = valueNode2->GetInput_UNIT_TEST<Data::NumberType>("Set");
auto value3 = valueNode3->GetInput_UNIT_TEST<Data::NumberType>("Set");
auto value4 = valueNode4->GetInput_UNIT_TEST<Data::NumberType>("Set");
auto value5 = valueNode5->GetInput_UNIT_TEST<Data::NumberType>("Set");
EXPECT_NE(value1, value2);
EXPECT_NE(value1, value3);
EXPECT_NE(value1, value4);
EXPECT_NE(value1, value5);
EXPECT_NE(value2, value3);
EXPECT_NE(value2, value4);
EXPECT_NE(value2, value5);
EXPECT_NE(value3, value4);
EXPECT_NE(value3, value5);
EXPECT_NE(value4, value5);
// data
EXPECT_TRUE(Connect(*graph, valueID1, "Get", maxByValueID, "Number: 0"));
EXPECT_TRUE(Connect(*graph, valueID2, "Get", maxByValueID, "Number: 1"));
EXPECT_TRUE(Connect(*graph, maxByValueID, "Result: Number", valueID3, "Set"));
EXPECT_TRUE(Connect(*graph, valueID3, "Get", valueID4, "Set"));
EXPECT_TRUE(Connect(*graph, maxByValueID, "Result: Number", valueID5, "Set"));
delete graph->GetEntity();
m_serializeContext->EnableRemoveReflection();
m_behaviorContext->EnableRemoveReflection();
TestBehaviorContextObject::Reflect(m_serializeContext);
TestBehaviorContextObject::Reflect(m_behaviorContext);
m_serializeContext->DisableRemoveReflection();
m_behaviorContext->DisableRemoveReflection();
}
TEST_F(ScriptCanvasTestFixture, NodeGenericsByPointerInteger)
{
using namespace ScriptCanvas;
using namespace ScriptCanvas::Nodes;
RegisterComponentDescriptor<MaxReturnByPointerIntegerNode>();
TestBehaviorContextObject::Reflect(m_serializeContext);
TestBehaviorContextObject::Reflect(m_behaviorContext);
TestBehaviorContextObject::ResetCounts();
UnitTestEventsHandler unitTestHandler;
unitTestHandler.BusConnect();
Graph* graph = nullptr;
SystemRequestBus::BroadcastResult(graph, &SystemRequests::MakeGraph);
EXPECT_TRUE(graph != nullptr);
graph->GetEntity()->Init();
const ScriptCanvasId& graphUniqueId = graph->GetScriptCanvasId();
AZ::EntityId startID;
CreateTestNode<ScriptCanvas::Nodes::Core::Start>(graphUniqueId, startID);
AZ::EntityId maxByValueID;
CreateTestNode<MaxReturnByPointerIntegerNode>(graphUniqueId, maxByValueID);
AZ::EntityId valueID1, valueID2, valueID3, valueID4, valueID5;
Node* valueNode1 = CreateDataNode<Data::NumberType>(graphUniqueId, 1, valueID1);
EXPECT_EQ(1, *valueNode1->GetInput_UNIT_TEST<Data::NumberType>("Set"));
Node* valueNode2 = CreateDataNode<Data::NumberType>(graphUniqueId, 2, valueID2);
EXPECT_EQ(2, *valueNode2->GetInput_UNIT_TEST<Data::NumberType>("Set"));
Node* valueNode3 = CreateDataNode<Data::NumberType>(graphUniqueId, 3, valueID3);
EXPECT_EQ(3, *valueNode3->GetInput_UNIT_TEST<Data::NumberType>("Set"));
Node* valueNode4 = CreateDataNode<Data::NumberType>(graphUniqueId, 4, valueID4);
EXPECT_EQ(4, *valueNode4->GetInput_UNIT_TEST<Data::NumberType>("Set"));
Node* valueNode5 = CreateDataNode<Data::NumberType>(graphUniqueId, 5, valueID5);
EXPECT_EQ(5, *valueNode5->GetInput_UNIT_TEST<Data::NumberType>("Set"));
auto value1 = valueNode1->GetInput_UNIT_TEST<Data::NumberType>("Set");
auto value2 = valueNode2->GetInput_UNIT_TEST<Data::NumberType>("Set");
auto value3 = valueNode3->GetInput_UNIT_TEST<Data::NumberType>("Set");
auto value4 = valueNode4->GetInput_UNIT_TEST<Data::NumberType>("Set");
auto value5 = valueNode5->GetInput_UNIT_TEST<Data::NumberType>("Set");
EXPECT_NE(value1, value2);
EXPECT_NE(value1, value3);
EXPECT_NE(value1, value4);
EXPECT_NE(value1, value5);
EXPECT_NE(value2, value3);
EXPECT_NE(value2, value4);
EXPECT_NE(value2, value5);
EXPECT_NE(value3, value4);
EXPECT_NE(value3, value5);
EXPECT_NE(value4, value5);
// data
EXPECT_TRUE(Connect(*graph, valueID1, "Get", maxByValueID, "Number: 0"));
EXPECT_TRUE(Connect(*graph, valueID2, "Get", maxByValueID, "Number: 1"));
EXPECT_TRUE(Connect(*graph, maxByValueID, "Result: Number", valueID3, "Set"));
EXPECT_TRUE(Connect(*graph, valueID3, "Get", valueID4, "Set"));
EXPECT_TRUE(Connect(*graph, maxByValueID, "Result: Number", valueID5, "Set"));
EXPECT_TRUE(Connect(*graph, startID, "Out", maxByValueID, "In"));
delete graph->GetEntity();
m_serializeContext->EnableRemoveReflection();
m_behaviorContext->EnableRemoveReflection();
TestBehaviorContextObject::Reflect(m_serializeContext);
TestBehaviorContextObject::Reflect(m_behaviorContext);
m_serializeContext->DisableRemoveReflection();
m_behaviorContext->DisableRemoveReflection();
}
TEST_F(ScriptCanvasTestFixture, NodeGenericsByReferenceInteger)
{
using namespace ScriptCanvas;
using namespace ScriptCanvas::Nodes;
RegisterComponentDescriptor<MaxReturnByReferenceIntegerNode>();
TestBehaviorContextObject::Reflect(m_serializeContext);
TestBehaviorContextObject::Reflect(m_behaviorContext);
TestBehaviorContextObject::ResetCounts();
UnitTestEventsHandler unitTestHandler;
unitTestHandler.BusConnect();
Graph* graph = nullptr;
SystemRequestBus::BroadcastResult(graph, &SystemRequests::MakeGraph);
EXPECT_TRUE(graph != nullptr);
graph->GetEntity()->Init();
const ScriptCanvasId& graphUniqueId = graph->GetScriptCanvasId();
AZ::EntityId startID;
CreateTestNode<ScriptCanvas::Nodes::Core::Start>(graphUniqueId, startID);
AZ::EntityId maxByValueID;
CreateTestNode<MaxReturnByReferenceIntegerNode>(graphUniqueId, maxByValueID);
AZ::EntityId valueID1, valueID2, valueID3, valueID4, valueID5;
Node* valueNode1 = CreateDataNode<Data::NumberType>(graphUniqueId, 1, valueID1);
EXPECT_EQ(1, *valueNode1->GetInput_UNIT_TEST<Data::NumberType>("Set"));
Node* valueNode2 = CreateDataNode<Data::NumberType>(graphUniqueId, 2, valueID2);
EXPECT_EQ(2, *valueNode2->GetInput_UNIT_TEST<Data::NumberType>("Set"));
Node* valueNode3 = CreateDataNode<Data::NumberType>(graphUniqueId, 3, valueID3);
EXPECT_EQ(3, *valueNode3->GetInput_UNIT_TEST<Data::NumberType>("Set"));
Node* valueNode4 = CreateDataNode<Data::NumberType>(graphUniqueId, 4, valueID4);
EXPECT_EQ(4, *valueNode4->GetInput_UNIT_TEST<Data::NumberType>("Set"));
Node* valueNode5 = CreateDataNode<Data::NumberType>(graphUniqueId, 5, valueID5);
EXPECT_EQ(5, *valueNode5->GetInput_UNIT_TEST<Data::NumberType>("Set"));
auto value1 = valueNode1->GetInput_UNIT_TEST<Data::NumberType>("Set");
auto value2 = valueNode2->GetInput_UNIT_TEST<Data::NumberType>("Set");
auto value3 = valueNode3->GetInput_UNIT_TEST<Data::NumberType>("Set");
auto value4 = valueNode4->GetInput_UNIT_TEST<Data::NumberType>("Set");
auto value5 = valueNode5->GetInput_UNIT_TEST<Data::NumberType>("Set");
EXPECT_NE(value1, value2);
EXPECT_NE(value1, value3);
EXPECT_NE(value1, value4);
EXPECT_NE(value1, value5);
EXPECT_NE(value2, value3);
EXPECT_NE(value2, value4);
EXPECT_NE(value2, value5);
EXPECT_NE(value3, value4);
EXPECT_NE(value3, value5);
EXPECT_NE(value4, value5);
// data
EXPECT_TRUE(Connect(*graph, valueID1, "Get", maxByValueID, "Number: 0"));
EXPECT_TRUE(Connect(*graph, valueID2, "Get", maxByValueID, "Number: 1"));
EXPECT_TRUE(Connect(*graph, maxByValueID, "Result: Number", valueID3, "Set"));
EXPECT_TRUE(Connect(*graph, valueID3, "Get", valueID4, "Set"));
EXPECT_TRUE(Connect(*graph, maxByValueID, "Result: Number", valueID5, "Set"));
EXPECT_TRUE(Connect(*graph, startID, "Out", maxByValueID, "In"));
delete graph->GetEntity();
m_serializeContext->EnableRemoveReflection();
m_behaviorContext->EnableRemoveReflection();
TestBehaviorContextObject::Reflect(m_serializeContext);
TestBehaviorContextObject::Reflect(m_behaviorContext);
m_serializeContext->DisableRemoveReflection();
m_behaviorContext->DisableRemoveReflection();
}
TEST_F(ScriptCanvasTestFixture, NodeGenericsByValueMulti)
{
using namespace ScriptCanvas;
using namespace ScriptCanvas::Nodes;
RegisterComponentDescriptor<MaxReturnByValueMultiNode>();
TestBehaviorContextObject::Reflect(m_serializeContext);
TestBehaviorContextObject::Reflect(m_behaviorContext);
TestBehaviorContextObject::ResetCounts();
UnitTestEventsHandler unitTestHandler;
unitTestHandler.BusConnect();
Graph* graph = nullptr;
SystemRequestBus::BroadcastResult(graph, &SystemRequests::MakeGraph);
EXPECT_TRUE(graph != nullptr);
graph->GetEntity()->Init();
const ScriptCanvasId& graphUniqueId = graph->GetScriptCanvasId();
AZ::EntityId startID;
CreateTestNode<ScriptCanvas::Nodes::Core::Start>(graphUniqueId, startID);
AZ::EntityId maxByValueID;
CreateTestNode<MaxReturnByValueMultiNode>(graphUniqueId, maxByValueID);
AZ::EntityId valueID1, valueID2, valueID3, valueID4, valueID5;
Core::BehaviorContextObjectNode* valueNode1 = CreateTestNode<Core::BehaviorContextObjectNode>(graphUniqueId, valueID1);
valueNode1->InitializeObject(azrtti_typeid<TestBehaviorContextObject>());
valueNode1->ModInput_UNIT_TEST<TestBehaviorContextObject>("Set")->SetValue(1);
EXPECT_EQ(1, valueNode1->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set")->GetValue());
Core::BehaviorContextObjectNode* valueNode2 = CreateTestNode<Core::BehaviorContextObjectNode>(graphUniqueId, valueID2);
valueNode2->InitializeObject(azrtti_typeid<TestBehaviorContextObject>());
valueNode2->ModInput_UNIT_TEST<TestBehaviorContextObject>("Set")->SetValue(2);
EXPECT_EQ(2, valueNode2->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set")->GetValue());
Core::BehaviorContextObjectNode* valueNode3 = CreateTestNode<Core::BehaviorContextObjectNode>(graphUniqueId, valueID3);
valueNode3->InitializeObject(azrtti_typeid<TestBehaviorContextObject>());
valueNode3->ModInput_UNIT_TEST<TestBehaviorContextObject>("Set")->SetValue(3);
EXPECT_EQ(3, valueNode3->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set")->GetValue());
Core::BehaviorContextObjectNode* valueNode4 = CreateTestNode<Core::BehaviorContextObjectNode>(graphUniqueId, valueID4);
valueNode4->InitializeObject(azrtti_typeid<TestBehaviorContextObject>());
valueNode4->ModInput_UNIT_TEST<TestBehaviorContextObject>("Set")->SetValue(4);
EXPECT_EQ(4, valueNode4->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set")->GetValue());
Core::BehaviorContextObjectNode* valueNode5 = CreateTestNode<Core::BehaviorContextObjectNode>(graphUniqueId, valueID5);
valueNode5->InitializeObject(azrtti_typeid<TestBehaviorContextObject>());
valueNode5->ModInput_UNIT_TEST<TestBehaviorContextObject>("Set")->SetValue(5);
EXPECT_EQ(5, valueNode5->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set")->GetValue());
auto value1 = valueNode1->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set");
auto value2 = valueNode2->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set");
auto value3 = valueNode3->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set");
auto value4 = valueNode4->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set");
auto value5 = valueNode5->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set");
EXPECT_NE(value1, value2);
EXPECT_NE(value1, value3);
EXPECT_NE(value1, value4);
EXPECT_NE(value1, value5);
EXPECT_NE(value2, value3);
EXPECT_NE(value2, value4);
EXPECT_NE(value2, value5);
EXPECT_NE(value3, value4);
EXPECT_NE(value3, value5);
EXPECT_NE(value4, value5);
AZ::EntityId valueIntegerID1, valueIntegerID2, valueIntegerID3, valueIntegerID4, valueIntegerID5;
Node* valueIntegerNode1 = CreateDataNode<Data::NumberType>(graphUniqueId, 1, valueIntegerID1);
EXPECT_EQ(1, *valueIntegerNode1->GetInput_UNIT_TEST<Data::NumberType>("Set"));
Node* valueIntegerNode2 = CreateDataNode<Data::NumberType>(graphUniqueId, 2, valueIntegerID2);
EXPECT_EQ(2, *valueIntegerNode2->GetInput_UNIT_TEST<Data::NumberType>("Set"));
Node* valueIntegerNode3 = CreateDataNode<Data::NumberType>(graphUniqueId, 3, valueIntegerID3);
EXPECT_EQ(3, *valueIntegerNode3->GetInput_UNIT_TEST<Data::NumberType>("Set"));
Node* valueIntegerNode4 = CreateDataNode<Data::NumberType>(graphUniqueId, 4, valueIntegerID4);
EXPECT_EQ(4, *valueIntegerNode4->GetInput_UNIT_TEST<Data::NumberType>("Set"));
Node* valueIntegerNode5 = CreateDataNode<Data::NumberType>(graphUniqueId, 5, valueIntegerID5);
EXPECT_EQ(5, *valueIntegerNode5->GetInput_UNIT_TEST<Data::NumberType>("Set"));
auto valueInteger1 = valueIntegerNode1->GetInput_UNIT_TEST<Data::NumberType>("Set");
auto valueInteger2 = valueIntegerNode2->GetInput_UNIT_TEST<Data::NumberType>("Set");
auto valueInteger3 = valueIntegerNode3->GetInput_UNIT_TEST<Data::NumberType>("Set");
auto valueInteger4 = valueIntegerNode4->GetInput_UNIT_TEST<Data::NumberType>("Set");
auto valueInteger5 = valueIntegerNode5->GetInput_UNIT_TEST<Data::NumberType>("Set");
EXPECT_NE(valueInteger1, valueInteger2);
EXPECT_NE(valueInteger1, valueInteger3);
EXPECT_NE(valueInteger1, valueInteger4);
EXPECT_NE(valueInteger1, valueInteger5);
EXPECT_NE(valueInteger2, valueInteger3);
EXPECT_NE(valueInteger2, valueInteger4);
EXPECT_NE(valueInteger2, valueInteger5);
EXPECT_NE(valueInteger3, valueInteger4);
EXPECT_NE(valueInteger3, valueInteger5);
EXPECT_NE(valueInteger4, valueInteger5);
// data
EXPECT_TRUE(Connect(*graph, valueID1, "Get", maxByValueID, "TestBehaviorContextObject: 0"));
EXPECT_TRUE(Connect(*graph, valueID2, "Get", maxByValueID, "TestBehaviorContextObject: 1"));
EXPECT_TRUE(Connect(*graph, maxByValueID, "Result: TestBehaviorContextObject", valueID3, "Set"));
EXPECT_TRUE(Connect(*graph, valueID3, "Get", valueID4, "Set"));
EXPECT_TRUE(Connect(*graph, maxByValueID, "Result: TestBehaviorContextObject", valueID5, "Set"));
EXPECT_TRUE(Connect(*graph, valueIntegerID1, "Get", maxByValueID, "Number: 0"));
EXPECT_TRUE(Connect(*graph, valueIntegerID2, "Get", maxByValueID, "Number: 1"));
EXPECT_TRUE(Connect(*graph, maxByValueID, "Result: Number", valueIntegerID3, "Set"));
EXPECT_TRUE(Connect(*graph, valueIntegerID3, "Get", valueIntegerID4, "Set"));
EXPECT_TRUE(Connect(*graph, maxByValueID, "Result: Number", valueIntegerID5, "Set"));
EXPECT_TRUE(Connect(*graph, startID, "Out", maxByValueID, "In"));
delete graph->GetEntity();
m_serializeContext->EnableRemoveReflection();
m_behaviorContext->EnableRemoveReflection();
TestBehaviorContextObject::Reflect(m_serializeContext);
TestBehaviorContextObject::Reflect(m_behaviorContext);
m_serializeContext->DisableRemoveReflection();
m_behaviorContext->DisableRemoveReflection();
}
TEST_F(ScriptCanvasTestFixture, NodeGenericsByReferenceMulti)
{
using namespace ScriptCanvas;
using namespace ScriptCanvas::Nodes;
RegisterComponentDescriptor<MaxReturnByReferenceMultiNode>();
TestBehaviorContextObject::Reflect(m_serializeContext);
TestBehaviorContextObject::Reflect(m_behaviorContext);
TestBehaviorContextObject::ResetCounts();
UnitTestEventsHandler unitTestHandler;
unitTestHandler.BusConnect();
Graph* graph = nullptr;
SystemRequestBus::BroadcastResult(graph, &SystemRequests::MakeGraph);
EXPECT_TRUE(graph != nullptr);
graph->GetEntity()->Init();
const ScriptCanvasId& graphUniqueId = graph->GetScriptCanvasId();
AZ::EntityId startID;
CreateTestNode<ScriptCanvas::Nodes::Core::Start>(graphUniqueId, startID);
AZ::EntityId maxByReferenceID;
CreateTestNode<MaxReturnByReferenceMultiNode>(graphUniqueId, maxByReferenceID);
AZ::EntityId valueID1, valueID2, valueID3, valueID4, valueID5;
Core::BehaviorContextObjectNode* valueNode1 = CreateTestNode<Core::BehaviorContextObjectNode>(graphUniqueId, valueID1);
valueNode1->InitializeObject(azrtti_typeid<TestBehaviorContextObject>());
valueNode1->ModInput_UNIT_TEST<TestBehaviorContextObject>("Set")->SetValue(1);
EXPECT_EQ(1, valueNode1->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set")->GetValue());
Core::BehaviorContextObjectNode* valueNode2 = CreateTestNode<Core::BehaviorContextObjectNode>(graphUniqueId, valueID2);
valueNode2->InitializeObject(azrtti_typeid<TestBehaviorContextObject>());
valueNode2->ModInput_UNIT_TEST<TestBehaviorContextObject>("Set")->SetValue(2);
EXPECT_EQ(2, valueNode2->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set")->GetValue());
Core::BehaviorContextObjectNode* valueNode3 = CreateTestNode<Core::BehaviorContextObjectNode>(graphUniqueId, valueID3);
valueNode3->InitializeObject(azrtti_typeid<TestBehaviorContextObject>());
valueNode3->ModInput_UNIT_TEST<TestBehaviorContextObject>("Set")->SetValue(3);
EXPECT_EQ(3, valueNode3->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set")->GetValue());
Core::BehaviorContextObjectNode* valueNode4 = CreateTestNode<Core::BehaviorContextObjectNode>(graphUniqueId, valueID4);
valueNode4->InitializeObject(azrtti_typeid<TestBehaviorContextObject>());
valueNode4->ModInput_UNIT_TEST<TestBehaviorContextObject>("Set")->SetValue(4);
EXPECT_EQ(4, valueNode4->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set")->GetValue());
Core::BehaviorContextObjectNode* valueNode5 = CreateTestNode<Core::BehaviorContextObjectNode>(graphUniqueId, valueID5);
valueNode5->InitializeObject(azrtti_typeid<TestBehaviorContextObject>());
valueNode5->ModInput_UNIT_TEST<TestBehaviorContextObject>("Set")->SetValue(5);
EXPECT_EQ(5, valueNode5->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set")->GetValue());
auto value1 = valueNode1->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set");
auto value2 = valueNode2->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set");
auto value3 = valueNode3->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set");
auto value4 = valueNode4->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set");
auto value5 = valueNode5->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set");
EXPECT_NE(value1, value2);
EXPECT_NE(value1, value3);
EXPECT_NE(value1, value4);
EXPECT_NE(value1, value5);
EXPECT_NE(value2, value3);
EXPECT_NE(value2, value4);
EXPECT_NE(value2, value5);
EXPECT_NE(value3, value4);
EXPECT_NE(value3, value5);
EXPECT_NE(value4, value5);
AZ::EntityId valueIntegerID1, valueIntegerID2, valueIntegerID3, valueIntegerID4, valueIntegerID5;
Node* valueIntegerNode1 = CreateDataNode<Data::NumberType>(graphUniqueId, 1, valueIntegerID1);
EXPECT_EQ(1, *valueIntegerNode1->GetInput_UNIT_TEST<Data::NumberType>("Set"));
Node* valueIntegerNode2 = CreateDataNode<Data::NumberType>(graphUniqueId, 2, valueIntegerID2);
EXPECT_EQ(2, *valueIntegerNode2->GetInput_UNIT_TEST<Data::NumberType>("Set"));
Node* valueIntegerNode3 = CreateDataNode<Data::NumberType>(graphUniqueId, 3, valueIntegerID3);
EXPECT_EQ(3, *valueIntegerNode3->GetInput_UNIT_TEST<Data::NumberType>("Set"));
Node* valueIntegerNode4 = CreateDataNode<Data::NumberType>(graphUniqueId, 4, valueIntegerID4);
EXPECT_EQ(4, *valueIntegerNode4->GetInput_UNIT_TEST<Data::NumberType>("Set"));
Node* valueIntegerNode5 = CreateDataNode<Data::NumberType>(graphUniqueId, 5, valueIntegerID5);
EXPECT_EQ(5, *valueIntegerNode5->GetInput_UNIT_TEST<Data::NumberType>("Set"));
auto valueInteger1 = valueIntegerNode1->GetInput_UNIT_TEST<Data::NumberType>("Set");
auto valueInteger2 = valueIntegerNode2->GetInput_UNIT_TEST<Data::NumberType>("Set");
auto valueInteger3 = valueIntegerNode3->GetInput_UNIT_TEST<Data::NumberType>("Set");
auto valueInteger4 = valueIntegerNode4->GetInput_UNIT_TEST<Data::NumberType>("Set");
auto valueInteger5 = valueIntegerNode5->GetInput_UNIT_TEST<Data::NumberType>("Set");
EXPECT_NE(valueInteger1, valueInteger2);
EXPECT_NE(valueInteger1, valueInteger3);
EXPECT_NE(valueInteger1, valueInteger4);
EXPECT_NE(valueInteger1, valueInteger5);
EXPECT_NE(valueInteger2, valueInteger3);
EXPECT_NE(valueInteger2, valueInteger4);
EXPECT_NE(valueInteger2, valueInteger5);
EXPECT_NE(valueInteger3, valueInteger4);
EXPECT_NE(valueInteger3, valueInteger5);
EXPECT_NE(valueInteger4, valueInteger5);
// data
EXPECT_TRUE(Connect(*graph, valueID1, "Get", maxByReferenceID, "TestBehaviorContextObject: 0"));
EXPECT_TRUE(Connect(*graph, valueID2, "Get", maxByReferenceID, "TestBehaviorContextObject: 1"));
EXPECT_TRUE(Connect(*graph, maxByReferenceID, "Result: TestBehaviorContextObject", valueID3, "Set"));
EXPECT_TRUE(Connect(*graph, valueID3, "Get", valueID4, "Set"));
EXPECT_TRUE(Connect(*graph, maxByReferenceID, "Result: TestBehaviorContextObject", valueID5, "Set"));
EXPECT_TRUE(Connect(*graph, valueIntegerID1, "Get", maxByReferenceID, "Number: 0"));
EXPECT_TRUE(Connect(*graph, valueIntegerID2, "Get", maxByReferenceID, "Number: 1"));
EXPECT_TRUE(Connect(*graph, maxByReferenceID, "Result: Number", valueIntegerID3, "Set"));
EXPECT_TRUE(Connect(*graph, valueIntegerID3, "Get", valueIntegerID4, "Set"));
EXPECT_TRUE(Connect(*graph, maxByReferenceID, "Result: Number", valueIntegerID5, "Set"));
EXPECT_TRUE(Connect(*graph, startID, "Out", maxByReferenceID, "In"));
delete graph->GetEntity();
m_serializeContext->EnableRemoveReflection();
m_behaviorContext->EnableRemoveReflection();
TestBehaviorContextObject::Reflect(m_serializeContext);
TestBehaviorContextObject::Reflect(m_behaviorContext);
m_serializeContext->DisableRemoveReflection();
m_behaviorContext->DisableRemoveReflection();
}
TEST_F(ScriptCanvasTestFixture, NodeGenericsByPointerMulti)
{
using namespace ScriptCanvas;
using namespace ScriptCanvas::Nodes;
RegisterComponentDescriptor<MaxReturnByPointerMultiNode>();
TestBehaviorContextObject::Reflect(m_serializeContext);
TestBehaviorContextObject::Reflect(m_behaviorContext);
TestBehaviorContextObject::ResetCounts();
UnitTestEventsHandler unitTestHandler;
unitTestHandler.BusConnect();
Graph* graph = nullptr;
SystemRequestBus::BroadcastResult(graph, &SystemRequests::MakeGraph);
EXPECT_TRUE(graph != nullptr);
graph->GetEntity()->Init();
const ScriptCanvasId& graphUniqueId = graph->GetScriptCanvasId();
AZ::EntityId startID;
CreateTestNode<ScriptCanvas::Nodes::Core::Start>(graphUniqueId, startID);
AZ::EntityId maxByPointerID;
CreateTestNode<MaxReturnByPointerMultiNode>(graphUniqueId, maxByPointerID);
AZ::EntityId valueID1, valueID2, valueID3, valueID4, valueID5;
Core::BehaviorContextObjectNode* valueNode1 = CreateTestNode<Core::BehaviorContextObjectNode>(graphUniqueId, valueID1);
valueNode1->InitializeObject(azrtti_typeid<TestBehaviorContextObject>());
valueNode1->ModInput_UNIT_TEST<TestBehaviorContextObject>("Set")->SetValue(1);
EXPECT_EQ(1, valueNode1->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set")->GetValue());
Core::BehaviorContextObjectNode* valueNode2 = CreateTestNode<Core::BehaviorContextObjectNode>(graphUniqueId, valueID2);
valueNode2->InitializeObject(azrtti_typeid<TestBehaviorContextObject>());
valueNode2->ModInput_UNIT_TEST<TestBehaviorContextObject>("Set")->SetValue(2);
EXPECT_EQ(2, valueNode2->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set")->GetValue());
Core::BehaviorContextObjectNode* valueNode3 = CreateTestNode<Core::BehaviorContextObjectNode>(graphUniqueId, valueID3);
valueNode3->InitializeObject(azrtti_typeid<TestBehaviorContextObject>());
valueNode3->ModInput_UNIT_TEST<TestBehaviorContextObject>("Set")->SetValue(3);
EXPECT_EQ(3, valueNode3->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set")->GetValue());
Core::BehaviorContextObjectNode* valueNode4 = CreateTestNode<Core::BehaviorContextObjectNode>(graphUniqueId, valueID4);
valueNode4->InitializeObject(azrtti_typeid<TestBehaviorContextObject>());
valueNode4->ModInput_UNIT_TEST<TestBehaviorContextObject>("Set")->SetValue(4);
EXPECT_EQ(4, valueNode4->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set")->GetValue());
Core::BehaviorContextObjectNode* valueNode5 = CreateTestNode<Core::BehaviorContextObjectNode>(graphUniqueId, valueID5);
valueNode5->InitializeObject(azrtti_typeid<TestBehaviorContextObject>());
valueNode5->ModInput_UNIT_TEST<TestBehaviorContextObject>("Set")->SetValue(5);
EXPECT_EQ(5, valueNode5->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set")->GetValue());
auto value1 = valueNode1->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set");
auto value2 = valueNode2->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set");
auto value3 = valueNode3->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set");
auto value4 = valueNode4->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set");
auto value5 = valueNode5->GetInput_UNIT_TEST<TestBehaviorContextObject>("Set");
EXPECT_NE(value1, value2);
EXPECT_NE(value1, value3);
EXPECT_NE(value1, value4);
EXPECT_NE(value1, value5);
EXPECT_NE(value2, value3);
EXPECT_NE(value2, value4);
EXPECT_NE(value2, value5);
EXPECT_NE(value3, value4);
EXPECT_NE(value3, value5);
EXPECT_NE(value4, value5);
AZ::EntityId valueIntegerID1, valueIntegerID2, valueIntegerID3, valueIntegerID4, valueIntegerID5;
Node* valueIntegerNode1 = CreateDataNode<Data::NumberType>(graphUniqueId, 1, valueIntegerID1);
EXPECT_EQ(1, *valueIntegerNode1->GetInput_UNIT_TEST<Data::NumberType>("Set"));
Node* valueIntegerNode2 = CreateDataNode<Data::NumberType>(graphUniqueId, 2, valueIntegerID2);
EXPECT_EQ(2, *valueIntegerNode2->GetInput_UNIT_TEST<Data::NumberType>("Set"));
Node* valueIntegerNode3 = CreateDataNode<Data::NumberType>(graphUniqueId, 3, valueIntegerID3);
EXPECT_EQ(3, *valueIntegerNode3->GetInput_UNIT_TEST<Data::NumberType>("Set"));
Node* valueIntegerNode4 = CreateDataNode<Data::NumberType>(graphUniqueId, 4, valueIntegerID4);
EXPECT_EQ(4, *valueIntegerNode4->GetInput_UNIT_TEST<Data::NumberType>("Set"));
Node* valueIntegerNode5 = CreateDataNode<Data::NumberType>(graphUniqueId, 5, valueIntegerID5);
EXPECT_EQ(5, *valueIntegerNode5->GetInput_UNIT_TEST<Data::NumberType>("Set"));
auto valueInteger1 = valueIntegerNode1->GetInput_UNIT_TEST<Data::NumberType>("Set");
auto valueInteger2 = valueIntegerNode2->GetInput_UNIT_TEST<Data::NumberType>("Set");
auto valueInteger3 = valueIntegerNode3->GetInput_UNIT_TEST<Data::NumberType>("Set");
auto valueInteger4 = valueIntegerNode4->GetInput_UNIT_TEST<Data::NumberType>("Set");
auto valueInteger5 = valueIntegerNode5->GetInput_UNIT_TEST<Data::NumberType>("Set");
EXPECT_NE(valueInteger1, valueInteger2);
EXPECT_NE(valueInteger1, valueInteger3);
EXPECT_NE(valueInteger1, valueInteger4);
EXPECT_NE(valueInteger1, valueInteger5);
EXPECT_NE(valueInteger2, valueInteger3);
EXPECT_NE(valueInteger2, valueInteger4);
EXPECT_NE(valueInteger2, valueInteger5);
EXPECT_NE(valueInteger3, valueInteger4);
EXPECT_NE(valueInteger3, valueInteger5);
EXPECT_NE(valueInteger4, valueInteger5);
// data
EXPECT_TRUE(Connect(*graph, valueID1, "Get", maxByPointerID, "TestBehaviorContextObject: 0"));
EXPECT_TRUE(Connect(*graph, valueID2, "Get", maxByPointerID, "TestBehaviorContextObject: 1"));
EXPECT_TRUE(Connect(*graph, maxByPointerID, "Result: TestBehaviorContextObject", valueID3, "Set"));
EXPECT_TRUE(Connect(*graph, valueID3, "Get", valueID4, "Set"));
EXPECT_TRUE(Connect(*graph, maxByPointerID, "Result: TestBehaviorContextObject", valueID5, "Set"));
EXPECT_TRUE(Connect(*graph, valueIntegerID1, "Get", maxByPointerID, "Number: 0"));
EXPECT_TRUE(Connect(*graph, valueIntegerID2, "Get", maxByPointerID, "Number: 1"));
EXPECT_TRUE(Connect(*graph, maxByPointerID, "Result: Number", valueIntegerID3, "Set"));
EXPECT_TRUE(Connect(*graph, valueIntegerID3, "Get", valueIntegerID4, "Set"));
EXPECT_TRUE(Connect(*graph, maxByPointerID, "Result: Number", valueIntegerID5, "Set"));
EXPECT_TRUE(Connect(*graph, startID, "Out", maxByPointerID, "In"));
delete graph->GetEntity();
m_serializeContext->EnableRemoveReflection();
m_behaviorContext->EnableRemoveReflection();
TestBehaviorContextObject::Reflect(m_serializeContext);
TestBehaviorContextObject::Reflect(m_behaviorContext);
m_serializeContext->DisableRemoveReflection();
m_behaviorContext->DisableRemoveReflection();
}
#pragma warning( pop )