| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522 |
- /*
- * Copyright (c) Contributors to the Open 3D Engine Project.
- * For complete copyright and license terms please see the LICENSE at the root of this distribution.
- *
- * SPDX-License-Identifier: Apache-2.0 OR MIT
- *
- */
- #include <Source/Framework/ScriptCanvasTestFixture.h>
- #include <Source/Framework/ScriptCanvasTestUtilities.h>
- #include <AzCore/Serialization/Utils.h>
- #include <AzCore/std/string/string.h>
- #include <AzCore/std/containers/vector.h>
- #include <AzCore/RTTI/ReflectContext.h>
- #include <ScriptCanvas/Variable/GraphVariableManagerComponent.h>
- namespace ScriptCanvasTests
- {
- using namespace ScriptCanvasEditor;
- class StringArray
- {
- public:
- AZ_TYPE_INFO(StringArray, "{0240E221-3800-4BD3-91F3-0304F097F9A7}");
- StringArray() = default;
- static AZStd::string StringArrayToString(AZStd::vector<AZStd::string> inputArray, AZStd::string_view separator = " ")
- {
- if (inputArray.empty())
- {
- return "";
- }
- AZStd::string value;
- auto currentIt = inputArray.begin();
- auto lastIt = inputArray.end();
- for (value = *currentIt; currentIt != lastIt; ++currentIt)
- {
- value += separator;
- value += *currentIt;
- }
- return value;
- }
- static void Reflect(AZ::ReflectContext* context)
- {
- if (auto serializeContext = azrtti_cast<AZ::SerializeContext*>(context))
- {
- serializeContext->Class<StringArray>()
- ->Version(0)
- ;
- }
- if (auto behaviorContext = azrtti_cast<AZ::BehaviorContext*>(context))
- {
- behaviorContext->Class<StringArray>("StringArray")
- ->Method("StringArrayToString", &StringArray::StringArrayToString)
- ->Method("Equal", [](const StringArray&, const StringArray&) -> bool {return true; }, { {} })
- ->Attribute(AZ::Script::Attributes::Operator, AZ::Script::Attributes::OperatorType::Equal)
- ;
- }
- }
- };
- }
- using namespace ScriptCanvasTests;
- TEST_F(ScriptCanvasTestFixture, CreateVariableTest)
- {
-
- StringArray::Reflect(m_serializeContext);
- StringArray::Reflect(m_behaviorContext);
- TestBehaviorContextObject::Reflect(m_serializeContext);
- TestBehaviorContextObject::Reflect(m_behaviorContext);
- {
- using namespace ScriptCanvas;
- ScriptCanvas::ScriptCanvasId scriptCanvasId = AZ::Entity::MakeId();
- AZStd::unique_ptr<AZ::Entity> propertyEntity = AZStd::make_unique<AZ::Entity>("PropertyGraph");
- propertyEntity->CreateComponent<GraphVariableManagerComponent>(scriptCanvasId);
- propertyEntity->Init();
- propertyEntity->Activate();
- auto vector3Datum1 = Datum(Data::Vector3Type(1.1f, 2.0f, 3.6f));
- auto vector3Datum2 = Datum(Data::Vector3Type(0.0f, -86.654f, 134.23f));
- auto vector4Datum = Datum(Data::Vector4Type(6.0f, 17.5f, -41.75f, 400.875f));
- TestBehaviorContextObject testObject;
- auto behaviorMatrix4x4Datum = Datum(testObject);
- auto stringArrayDatum = Datum(StringArray());
- AZ::Outcome<VariableId, AZStd::string> addPropertyOutcome(AZ::Failure(AZStd::string("Uninitialized")));
- GraphVariableManagerRequestBus::EventResult(addPropertyOutcome, scriptCanvasId, &GraphVariableManagerRequests::AddVariable, "FirstVector3", vector3Datum1, false);
- EXPECT_TRUE(addPropertyOutcome);
- EXPECT_TRUE(addPropertyOutcome.GetValue().IsValid());
- addPropertyOutcome = AZ::Failure(AZStd::string("Uninitialized"));
- GraphVariableManagerRequestBus::EventResult(addPropertyOutcome, scriptCanvasId, &GraphVariableManagerRequests::AddVariable, "SecondVector3", vector3Datum2, false);
- EXPECT_TRUE(addPropertyOutcome);
- EXPECT_TRUE(addPropertyOutcome.GetValue().IsValid());
- addPropertyOutcome = AZ::Failure(AZStd::string("Uninitialized"));
- GraphVariableManagerRequestBus::EventResult(addPropertyOutcome, scriptCanvasId, &GraphVariableManagerRequests::AddVariable, "FirstVector4", vector4Datum, false);
- EXPECT_TRUE(addPropertyOutcome);
- EXPECT_TRUE(addPropertyOutcome.GetValue().IsValid());
- addPropertyOutcome = AZ::Failure(AZStd::string("Uninitialized"));
- GraphVariableManagerRequestBus::EventResult(addPropertyOutcome, scriptCanvasId, &GraphVariableManagerRequests::AddVariable, "ProjectionMatrix", behaviorMatrix4x4Datum, false);
- EXPECT_TRUE(addPropertyOutcome);
- EXPECT_TRUE(addPropertyOutcome.GetValue().IsValid());
- addPropertyOutcome = AZ::Failure(AZStd::string("Uninitialized"));
- GraphVariableManagerRequestBus::EventResult(addPropertyOutcome, scriptCanvasId, &GraphVariableManagerRequests::AddVariable, "My String Array", stringArrayDatum, false);
- EXPECT_TRUE(addPropertyOutcome);
- EXPECT_TRUE(addPropertyOutcome.GetValue().IsValid());
- AZStd::vector<AZ::Outcome<VariableId, AZStd::string>> addVariablesOutcome;
- AZStd::vector<AZStd::pair<AZStd::string_view, Datum>> datumsToAdd;
- datumsToAdd.emplace_back("FirstBoolean", Datum(true));
- datumsToAdd.emplace_back("FirstString", Datum(AZStd::string("Test")));
- GraphVariableManagerRequestBus::EventResult(addVariablesOutcome, scriptCanvasId, &GraphVariableManagerRequests::AddVariables<decltype(datumsToAdd)::iterator>, datumsToAdd.begin(), datumsToAdd.end());
- EXPECT_EQ(2, addVariablesOutcome.size());
- EXPECT_TRUE(addVariablesOutcome[0]);
- EXPECT_TRUE(addVariablesOutcome[0].GetValue().IsValid());
- EXPECT_TRUE(addVariablesOutcome[1]);
- EXPECT_TRUE(addVariablesOutcome[1].GetValue().IsValid());
- propertyEntity.reset();
- }
- m_serializeContext->EnableRemoveReflection();
- m_behaviorContext->EnableRemoveReflection();
- StringArray::Reflect(m_serializeContext);
- StringArray::Reflect(m_behaviorContext);
- TestBehaviorContextObject::Reflect(m_serializeContext);
- TestBehaviorContextObject::Reflect(m_behaviorContext);
- m_serializeContext->DisableRemoveReflection();
- m_behaviorContext->DisableRemoveReflection();
- }
- TEST_F(ScriptCanvasTestFixture, AddVariableFailTest)
- {
- using namespace ScriptCanvas;
- ScriptCanvasId scriptCanvasId = AZ::Entity::MakeId();
- AZStd::unique_ptr<AZ::Entity> propertyEntity = AZStd::make_unique<AZ::Entity>("PropertyGraph");
- propertyEntity->CreateComponent<GraphVariableManagerComponent>(scriptCanvasId);
- propertyEntity->Init();
- propertyEntity->Activate();
- auto vector3Datum1 = Datum(Data::Vector3Type(1.1f, 2.0f, 3.6f));
- auto vector3Datum2 = Datum(Data::Vector3Type(0.0f, -86.654f, 134.23f));
- const AZStd::string_view propertyName = "SameName";
- AZ::Outcome<VariableId, AZStd::string> addPropertyOutcome(AZ::Failure(AZStd::string("Uninitialized")));
- GraphVariableManagerRequestBus::EventResult(addPropertyOutcome, scriptCanvasId, &GraphVariableManagerRequests::AddVariable, propertyName, vector3Datum1, false);
- EXPECT_TRUE(addPropertyOutcome);
- EXPECT_TRUE(addPropertyOutcome.GetValue().IsValid());
- addPropertyOutcome = AZ::Failure(AZStd::string("Uninitialized"));
- GraphVariableManagerRequestBus::EventResult(addPropertyOutcome, scriptCanvasId, &GraphVariableManagerRequests::AddVariable, propertyName, vector3Datum2, false);
- EXPECT_FALSE(addPropertyOutcome);
- propertyEntity.reset();
- }
- TEST_F(ScriptCanvasTestFixture, RemoveVariableTest)
- {
- StringArray::Reflect(m_serializeContext);
- StringArray::Reflect(m_behaviorContext);
- TestBehaviorContextObject::Reflect(m_serializeContext);
- TestBehaviorContextObject::Reflect(m_behaviorContext);
- {
- using namespace ScriptCanvas;
- ScriptCanvasId scriptCanvasId = AZ::Entity::MakeId();
- AZStd::unique_ptr<AZ::Entity> propertyEntity = AZStd::make_unique<AZ::Entity>("PropertyGraph");
- propertyEntity->CreateComponent<GraphVariableManagerComponent>(scriptCanvasId);
- propertyEntity->Init();
- propertyEntity->Activate();
- auto vector3Datum1 = Datum(Data::Vector3Type(1.1f, 2.0f, 3.6f));
- auto vector3Datum2 = Datum(Data::Vector3Type(0.0f, -86.654f, 134.23f));
- auto vector4Datum = Datum(Data::Vector4Type(6.0f, 17.5f, -41.75f, 400.875f));
- TestBehaviorContextObject testObject;
- auto behaviorMatrix4x4Datum = Datum(testObject);
- auto stringArrayDatum = Datum(StringArray());
- size_t numVariablesAdded = 0U;
- AZ::Outcome<VariableId, AZStd::string> addPropertyOutcome(AZ::Failure(AZStd::string("Uninitialized")));
- GraphVariableManagerRequestBus::EventResult(addPropertyOutcome, scriptCanvasId, &GraphVariableManagerRequests::AddVariable, "FirstVector3", vector3Datum1, false);
- EXPECT_TRUE(addPropertyOutcome);
- EXPECT_TRUE(addPropertyOutcome.GetValue().IsValid());
- ++numVariablesAdded;
- addPropertyOutcome = AZ::Failure(AZStd::string("Uninitialized"));
- GraphVariableManagerRequestBus::EventResult(addPropertyOutcome, scriptCanvasId, &GraphVariableManagerRequests::AddVariable, "SecondVector3", vector3Datum2, false);
- EXPECT_TRUE(addPropertyOutcome);
- EXPECT_TRUE(addPropertyOutcome.GetValue().IsValid());
- ++numVariablesAdded;
- addPropertyOutcome = AZ::Failure(AZStd::string("Uninitialized"));
- GraphVariableManagerRequestBus::EventResult(addPropertyOutcome, scriptCanvasId, &GraphVariableManagerRequests::AddVariable, "FirstVector4", vector4Datum, false);
- EXPECT_TRUE(addPropertyOutcome);
- EXPECT_TRUE(addPropertyOutcome.GetValue().IsValid());
- ++numVariablesAdded;
- addPropertyOutcome = AZ::Failure(AZStd::string("Uninitialized"));
- GraphVariableManagerRequestBus::EventResult(addPropertyOutcome, scriptCanvasId, &GraphVariableManagerRequests::AddVariable, "ProjectionMatrix", behaviorMatrix4x4Datum, false);
- EXPECT_TRUE(addPropertyOutcome);
- EXPECT_TRUE(addPropertyOutcome.GetValue().IsValid());
- ++numVariablesAdded;
- addPropertyOutcome = AZ::Failure(AZStd::string("Uninitialized"));
- GraphVariableManagerRequestBus::EventResult(addPropertyOutcome, scriptCanvasId, &GraphVariableManagerRequests::AddVariable, "My String Array", stringArrayDatum, false);
- EXPECT_TRUE(addPropertyOutcome);
- EXPECT_TRUE(addPropertyOutcome.GetValue().IsValid());
- const VariableId stringArrayId = addPropertyOutcome.GetValue();
- ++numVariablesAdded;
- AZStd::vector<AZ::Outcome<VariableId, AZStd::string>> addVariablesOutcome;
- AZStd::vector<AZStd::pair<AZStd::string_view, Datum>> datumsToAdd;
- datumsToAdd.emplace_back("FirstBoolean", Datum(true));
- datumsToAdd.emplace_back("FirstString", Datum(AZStd::string("Test")));
- GraphVariableManagerRequestBus::EventResult(addVariablesOutcome, scriptCanvasId, &GraphVariableManagerRequests::AddVariables<decltype(datumsToAdd)::iterator>, datumsToAdd.begin(), datumsToAdd.end());
- EXPECT_EQ(2, addVariablesOutcome.size());
- EXPECT_TRUE(addVariablesOutcome[0]);
- EXPECT_TRUE(addVariablesOutcome[0].GetValue().IsValid());
- EXPECT_TRUE(addVariablesOutcome[1]);
- EXPECT_TRUE(addVariablesOutcome[1].GetValue().IsValid());
- numVariablesAdded += addVariablesOutcome.size();
- const AZStd::unordered_map<VariableId, GraphVariable>* properties = nullptr;
- GraphVariableManagerRequestBus::EventResult(properties, scriptCanvasId, &GraphVariableManagerRequests::GetVariables);
- ASSERT_NE(nullptr, properties);
- EXPECT_EQ(numVariablesAdded, (*properties).size());
- {
- // Remove Property By Id
- bool removePropertyResult = false;
- GraphVariableManagerRequestBus::EventResult(removePropertyResult, scriptCanvasId, &GraphVariableManagerRequests::RemoveVariable, stringArrayId);
- EXPECT_TRUE(removePropertyResult);
- properties = {};
- GraphVariableManagerRequestBus::EventResult(properties, scriptCanvasId, &GraphVariableManagerRequests::GetVariables);
- ASSERT_NE(nullptr, properties);
- EXPECT_EQ(numVariablesAdded, (*properties).size() + 1);
- // Attempt to remove already removed property
- GraphVariableManagerRequestBus::EventResult(removePropertyResult, scriptCanvasId, &GraphVariableManagerRequests::RemoveVariable, stringArrayId);
- EXPECT_FALSE(removePropertyResult);
- }
- {
- // Remove Property by name
- size_t numVariablesRemoved = 0U;
- GraphVariableManagerRequestBus::EventResult(numVariablesRemoved, scriptCanvasId, &GraphVariableManagerRequests::RemoveVariableByName, "ProjectionMatrix");
- EXPECT_EQ(1U, numVariablesRemoved);
- properties = {};
- GraphVariableManagerRequestBus::EventResult(properties, scriptCanvasId, &GraphVariableManagerRequests::GetVariables);
- ASSERT_NE(nullptr, properties);
- EXPECT_EQ(numVariablesAdded, (*properties).size() + 2);
- // Attempt to remove property again.
- GraphVariableManagerRequestBus::EventResult(numVariablesRemoved, scriptCanvasId, &GraphVariableManagerRequests::RemoveVariableByName, "ProjectionMatrix");
- EXPECT_EQ(0U, numVariablesRemoved);
- }
- {
- // Re-add removed Property
- addPropertyOutcome = AZ::Failure(AZStd::string("Uninitialized"));
- GraphVariableManagerRequestBus::EventResult(addPropertyOutcome, scriptCanvasId, &GraphVariableManagerRequests::AddVariable, "ProjectionMatrix", behaviorMatrix4x4Datum, false);
- EXPECT_TRUE(addPropertyOutcome);
- EXPECT_TRUE(addPropertyOutcome.GetValue().IsValid());
- properties = {};
- GraphVariableManagerRequestBus::EventResult(properties, scriptCanvasId, &GraphVariableManagerRequests::GetVariables);
- EXPECT_EQ(numVariablesAdded, (*properties).size() + 1);
- }
- propertyEntity.reset();
- }
- m_serializeContext->EnableRemoveReflection();
- m_behaviorContext->EnableRemoveReflection();
- StringArray::Reflect(m_serializeContext);
- StringArray::Reflect(m_behaviorContext);
- TestBehaviorContextObject::Reflect(m_serializeContext);
- TestBehaviorContextObject::Reflect(m_behaviorContext);
- m_serializeContext->DisableRemoveReflection();
- m_behaviorContext->DisableRemoveReflection();
- }
- TEST_F(ScriptCanvasTestFixture, FindVariableTest)
- {
- using namespace ScriptCanvas;
- ScriptCanvasId scriptCanvasId = AZ::Entity::MakeId();
- AZStd::unique_ptr<AZ::Entity> propertyEntity = AZStd::make_unique<AZ::Entity>("PropertyGraph");
- propertyEntity->CreateComponent<GraphVariableManagerComponent>(scriptCanvasId);
- propertyEntity->Init();
- propertyEntity->Activate();
- auto stringVariableDatum = Datum(Data::StringType("SABCDQPE"));
- const AZStd::string_view propertyName = "StringProperty";
- AZ::Outcome<VariableId, AZStd::string> addPropertyOutcome(AZ::Failure(AZStd::string("Uninitialized")));
- GraphVariableManagerRequestBus::EventResult(addPropertyOutcome, scriptCanvasId, &GraphVariableManagerRequests::AddVariable, propertyName, stringVariableDatum, false);
- EXPECT_TRUE(addPropertyOutcome);
- EXPECT_TRUE(addPropertyOutcome.GetValue().IsValid());
- const VariableId stringVariableId = addPropertyOutcome.GetValue();
- GraphVariable* variableByName = nullptr;
- {
- // Find Property by name
- GraphVariableManagerRequestBus::EventResult(variableByName, scriptCanvasId, &GraphVariableManagerRequests::FindVariable, propertyName);
- ASSERT_NE(nullptr, variableByName);
- EXPECT_EQ(variableByName->GetVariableId(), stringVariableId);
- EXPECT_EQ(stringVariableDatum, (*variableByName->GetDatum()));
- }
- GraphVariable* variableById = nullptr;
- {
- // Find Property by id
- GraphVariableManagerRequestBus::EventResult(variableById, scriptCanvasId, &GraphVariableManagerRequests::FindVariableById, stringVariableId);
- ASSERT_NE(nullptr, variableById);
- EXPECT_EQ(stringVariableDatum, (*variableById->GetDatum()));
- }
- {
- // Remove Property
- size_t numVariablesRemoved = false;
- GraphVariableManagerRequestBus::EventResult(numVariablesRemoved, scriptCanvasId, &GraphVariableManagerRequests::RemoveVariableByName, propertyName);
- EXPECT_EQ(1U, numVariablesRemoved);
- }
- {
- // Attempt to re-lookup property
- GraphVariable* propertyVariable = nullptr;
- GraphVariableManagerRequestBus::EventResult(propertyVariable, scriptCanvasId, &GraphVariableManagerRequests::FindVariable, propertyName);
- EXPECT_EQ(nullptr, propertyVariable);
- GraphVariable* stringVariable = nullptr;
- GraphVariableManagerRequestBus::EventResult(stringVariable, scriptCanvasId, &GraphVariableManagerRequests::FindVariableById, stringVariableId);
- EXPECT_EQ(nullptr, stringVariable);
- }
- propertyEntity.reset();
- }
- TEST_F(ScriptCanvasTestFixture, ModifyVariableTest)
- {
- using namespace ScriptCanvas;
- ScriptCanvasId scriptCanvasId = AZ::Entity::MakeId();
- AZStd::unique_ptr<AZ::Entity> propertyEntity = AZStd::make_unique<AZ::Entity>("PropertyGraph");
- propertyEntity->CreateComponent<GraphVariableManagerComponent>(scriptCanvasId);
- propertyEntity->Init();
- propertyEntity->Activate();
- auto stringVariableDatum = Datum(Data::StringType("Test1"));
- const AZStd::string_view propertyName = "StringProperty";
- AZ::Outcome<VariableId, AZStd::string> addPropertyOutcome(AZ::Failure(AZStd::string("Uninitialized")));
- GraphVariableManagerRequestBus::EventResult(addPropertyOutcome, scriptCanvasId, &GraphVariableManagerRequests::AddVariable, propertyName, stringVariableDatum, false);
- EXPECT_TRUE(addPropertyOutcome);
- EXPECT_TRUE(addPropertyOutcome.GetValue().IsValid());
- const VariableId stringVariableId = addPropertyOutcome.GetValue();
- GraphVariable* propertyDatum = nullptr;
- GraphVariableManagerRequestBus::EventResult(propertyDatum, scriptCanvasId, &GraphVariableManagerRequests::FindVariable, propertyName);
- ASSERT_NE(nullptr, propertyDatum);
- // Modify the added property
- AZStd::string_view modifiedString = "High Functioning S... *<silenced>";
- {
- ModifiableDatumView datumView;
- propertyDatum->ConfigureDatumView(datumView);
- ASSERT_TRUE(datumView.IsValid());
- ASSERT_TRUE(datumView.GetDataType() == Data::Type::String());
- datumView.SetAs(ScriptCanvas::Data::StringType(modifiedString));
- }
- {
- // Re-lookup Property and test against modifiedString
- GraphVariable* stringVariable = nullptr;
- GraphVariableManagerRequestBus::EventResult(stringVariable, scriptCanvasId, &GraphVariableManagerRequests::FindVariableById, stringVariableId);
- ASSERT_NE(nullptr, stringVariable);
- ModifiableDatumView datumView;
- stringVariable->ConfigureDatumView(datumView);
- ASSERT_TRUE(datumView.IsValid());
- ASSERT_TRUE(datumView.GetDataType() == Data::Type::String());
- auto resultString = datumView.GetAs<Data::StringType>();
- EXPECT_EQ(modifiedString, (*resultString));
- }
- }
- TEST_F(ScriptCanvasTestFixture, SerializationTest)
- {
- StringArray::Reflect(m_serializeContext);
- StringArray::Reflect(m_behaviorContext);
- using namespace ScriptCanvas;
- {
- ScriptCanvasId scriptCanvasId = AZ::Entity::MakeId();
- AZStd::unique_ptr<AZ::Entity> propertyEntity = AZStd::make_unique<AZ::Entity>("PropertyGraph");
- propertyEntity->CreateComponent<GraphVariableManagerComponent>(scriptCanvasId);
- propertyEntity->Init();
- propertyEntity->Activate();
- auto stringArrayDatum = Datum(StringArray());
- AZ::Outcome<VariableId, AZStd::string> addPropertyOutcome(AZ::Failure(AZStd::string("Uninitialized")));
- GraphVariableManagerRequestBus::EventResult(addPropertyOutcome, scriptCanvasId, &GraphVariableManagerRequests::AddVariable, "My String Array", stringArrayDatum, false);
- EXPECT_TRUE(addPropertyOutcome);
- EXPECT_TRUE(addPropertyOutcome.GetValue().IsValid());
- GraphVariable* stringArrayVariable = nullptr;
- GraphVariableManagerRequestBus::EventResult(stringArrayVariable, scriptCanvasId, &GraphVariableManagerRequests::FindVariable, "My String Array");
- ASSERT_NE(nullptr, stringArrayVariable);
- EXPECT_EQ(stringArrayDatum, (*stringArrayVariable->GetDatum()));
- const VariableId stringArrayVariableId = stringArrayVariable->GetVariableId();
- // Save Property Component Entity
- AZStd::vector<AZ::u8> binaryBuffer;
- AZ::IO::ByteContainerStream<decltype(binaryBuffer)> byteStream(&binaryBuffer);
- const bool objectSaved = AZ::Utils::SaveObjectToStream(byteStream, AZ::DataStream::ST_BINARY, propertyEntity.get(), m_serializeContext);
- EXPECT_TRUE(objectSaved);
- // Delete the Property Component
- propertyEntity.reset();
- // Load Variable Component Entity
- {
- byteStream.Seek(0U, AZ::IO::GenericStream::ST_SEEK_BEGIN);
- propertyEntity.reset(AZ::Utils::LoadObjectFromStream<AZ::Entity>(byteStream, m_serializeContext));
- ASSERT_TRUE(propertyEntity);
- propertyEntity->Init();
- propertyEntity->Activate();
- GraphVariableManagerComponent* component = propertyEntity->FindComponent<GraphVariableManagerComponent>();
- if (component)
- {
- component->ConfigureScriptCanvasId(scriptCanvasId);
- }
- }
- // Attempt to lookup the My String Array property after loading from object stream
- stringArrayVariable = nullptr;
- GraphVariableManagerRequestBus::EventResult(stringArrayVariable, scriptCanvasId, &GraphVariableManagerRequests::FindVariable, "My String Array");
- ASSERT_NE(nullptr, stringArrayVariable);
- EXPECT_EQ(stringArrayVariableId, stringArrayVariable->GetVariableId());
- auto identityMatrixDatum = Datum(Data::Matrix3x3Type::CreateIdentity());
- addPropertyOutcome = AZ::Failure(AZStd::string("Uninitialized"));
- GraphVariableManagerRequestBus::EventResult(addPropertyOutcome, scriptCanvasId, &GraphVariableManagerRequests::AddVariable, "Super Matrix Bros", identityMatrixDatum, false);
- EXPECT_TRUE(addPropertyOutcome);
- EXPECT_TRUE(addPropertyOutcome.GetValue().IsValid());
- GraphVariable* matrixVariable = nullptr;
- GraphVariableManagerRequestBus::EventResult(matrixVariable, scriptCanvasId, &GraphVariableManagerRequests::FindVariableById, addPropertyOutcome.GetValue());
- ASSERT_NE(nullptr, matrixVariable);
-
- const Datum* matrix3x3Datum = matrixVariable->GetDatum();
- EXPECT_EQ(identityMatrixDatum, (*matrix3x3Datum));
- propertyEntity.reset();
- }
- m_serializeContext->EnableRemoveReflection();
- m_behaviorContext->EnableRemoveReflection();
- StringArray::Reflect(m_serializeContext);
- StringArray::Reflect(m_behaviorContext);
- m_serializeContext->DisableRemoveReflection();
- m_behaviorContext->DisableRemoveReflection();
- }
- TEST_F(ScriptCanvasTestFixture, Vector2AllNodes)
- {
- RunUnitTestGraph("LY_SC_UnitTest_Vector2_AllNodes", ExecutionMode::Interpreted);
- }
- TEST_F(ScriptCanvasTestFixture, Vector3_GetNode)
- {
- RunUnitTestGraph("LY_SC_UnitTest_Vector3_Variable_GetNode", ExecutionMode::Interpreted);
- }
- TEST_F(ScriptCanvasTestFixture, Vector3_SetNode)
- {
- RunUnitTestGraph("LY_SC_UnitTest_Vector3_Variable_SetNode", ExecutionMode::Interpreted);
- }
|