1f9b284de2
Signed-off-by: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com> # Conflicts: # Code/Editor/Plugins/ComponentEntityEditorPlugin/ComponentEntityEditorPlugin_precompiled.h # Code/Editor/Plugins/EditorCommon/EditorCommon_precompiled.h # Code/Editor/Plugins/EditorCommon/stdafx.cpp # Code/Editor/Plugins/FFMPEGPlugin/FFMPEGPlugin_precompiled.h # Code/Editor/Plugins/PerforcePlugin/PerforcePlugin_precompiled.h # Code/Editor/Plugins/ProjectSettingsTool/ProjectSettingsTool_precompiled.h # Code/Framework/AzToolsFramework/AzToolsFramework/AzToolsFramework_precompiled.h # Code/Tools/AssetProcessor/native/precompiled.h # Code/Tools/Standalone/StandaloneTools_precompiled.h # Gems/AssetMemoryAnalyzer/Code/Source/AssetMemoryAnalyzer_precompiled.h # Gems/Atom/Asset/ImageProcessingAtom/Code/Source/ImageProcessing_precompiled.h # Gems/Atom/RHI/DX12/Code/Source/RHI/Atom_RHI_DX12_precompiled.h # Gems/Atom/RHI/Metal/Code/Include/Platform/Mac/Atom_RHI_Metal_precompiled_Platform.h # Gems/Atom/RHI/Metal/Code/Include/Platform/iOS/Atom_RHI_Metal_precompiled_Platform.h # Gems/Atom/RHI/Metal/Code/Source/Atom_RHI_Metal_precompiled.h # Gems/Atom/RHI/Metal/Code/atom_rhi_metal_common_files.cmake # Gems/Atom/RHI/Null/Code/Source/Atom_RHI_Null_precompiled.h # Gems/Atom/RHI/Null/Code/atom_rhi_null_common_files.cmake # Gems/Atom/RHI/Vulkan/Code/Include/Platform/Android/Atom_RHI_Vulkan_precompiled_Platform.h # Gems/Atom/RHI/Vulkan/Code/Include/Platform/Linux/Atom_RHI_Vulkan_precompiled_Platform.h # Gems/Atom/RHI/Vulkan/Code/Include/Platform/Mac/Atom_RHI_Vulkan_precompiled_Platform.h # Gems/Atom/RHI/Vulkan/Code/Include/Platform/Windows/Atom_RHI_Vulkan_precompiled_Platform.h # Gems/Atom/RHI/Vulkan/Code/Source/Atom_RHI_Vulkan_precompiled.h # Gems/Atom/RHI/Vulkan/Code/Source/RHI/SwapChain.cpp # Gems/Atom/RHI/Vulkan/Code/atom_rhi_vulkan_common_files.cmake # Gems/AtomLyIntegration/AtomFont/Code/Include/AtomLyIntegration/AtomFont/AtomFont_precompiled.h # Gems/Blast/Code/Source/StdAfx.cpp # Gems/Camera/Code/Source/Camera_precompiled.h # Gems/EMotionFX/Code/Source/EMotionFX_precompiled.h # Gems/FastNoise/Code/Source/FastNoise_precompiled.h # Gems/Gestures/Code/Source/Gestures_precompiled.h # Gems/GradientSignal/Code/Source/GradientSignal_precompiled.h # Gems/GraphCanvas/Code/precompiled.h # Gems/ImGui/Code/Source/ImGui_precompiled.h # Gems/InAppPurchases/Code/Source/InAppPurchases_precompiled.h # Gems/LmbrCentral/Code/Source/LmbrCentral_precompiled.h # Gems/LmbrCentral/Code/Tests/ShapeGeometryUtilTest.cpp # Gems/LyShine/Code/Editor/UiCanvasEditor_precompiled.h # Gems/LyShine/Code/Source/Animation/LyShine_precompiled.h # Gems/LyShine/Code/Source/LyShine_precompiled.h # Gems/LyShineExamples/Code/Source/LyShineExamples_precompiled.h # Gems/Maestro/Code/Source/Cinematics/Maestro_precompiled.h # Gems/Maestro/Code/Source/Maestro_precompiled.h # Gems/MessagePopup/Code/Source/MessagePopup_precompiled.h # Gems/Metastream/Code/Source/Metastream_precompiled.h # Gems/Microphone/Code/Source/Microphone_precompiled.h # Gems/Multiplayer/Code/Source/Multiplayer_precompiled.h # Gems/PhysX/Code/NumericalMethods/Source/NumericalMethods_precompiled.h # Gems/PhysX/Code/Source/PhysXUnsupported_precompiled.h # Gems/PhysX/Code/Source/PhysX_precompiled.h # Gems/PhysX/Code/physx_unsupported_files.cmake # Gems/PhysXDebug/Code/Source/PhysXDebugUnsupported_precompiled.h # Gems/PhysXDebug/Code/Source/PhysXDebug_precompiled.h # Gems/ScriptCanvas/Code/Editor/precompiled.h # Gems/ScriptCanvas/Code/Source/precompiled.h # Gems/ScriptCanvasDeveloper/Code/Source/precompiled.h # Gems/ScriptCanvasPhysics/Code/Source/ScriptCanvasPhysics_precompiled.h # Gems/ScriptEvents/Code/Source/precompiled.h # Gems/ScriptEvents/Code/Tests/Editor/EditorTests.cpp # Gems/ScriptedEntityTweener/Code/Source/ScriptedEntityTweener_precompiled.h # Gems/SliceFavorites/Code/Source/SliceFavorites_precompiled.h # Gems/StartingPointCamera/Code/Source/StartingPointCamera_precompiled.h # Gems/StartingPointInput/Code/Source/StartingPointInput_precompiled.h # Gems/StartingPointMovement/Code/Source/StartingPointMovement_precompiled.h # Gems/SurfaceData/Code/Source/SurfaceData_precompiled.h # Gems/TextureAtlas/Code/Source/TextureAtlas_precompiled.h # Gems/TickBusOrderViewer/Code/Source/TickBusOrderViewer_precompiled.h # Gems/Twitch/Code/Source/Twitch_precompiled.h # Gems/VirtualGamepad/Code/Source/VirtualGamepad_precompiled.h # Gems/WhiteBox/Code/Source/WhiteBoxUnsupported_precompiled.h # Gems/WhiteBox/Code/Source/WhiteBox_precompiled.h
850 lines
40 KiB
C++
850 lines
40 KiB
C++
/*
|
|
* 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 <Tests/Framework/ScriptCanvasUnitTestFixture.h>
|
|
#include <ScriptCanvas/Core/GraphData.h>
|
|
#include <ScriptCanvas/Libraries/Core/Method.h>
|
|
#include <ScriptCanvas/Utils/BehaviorContextUtils.h>
|
|
|
|
namespace ScriptCanvasUnitTest
|
|
{
|
|
using namespace ScriptCanvas;
|
|
|
|
namespace BehaviorContextUtilsUnitTestStructures
|
|
{
|
|
class TestHandler
|
|
: public AZ::ComponentApplicationBus::Handler
|
|
{
|
|
public:
|
|
AZ::BehaviorContext* m_behaviorContext;
|
|
|
|
// ComponentApplicationBus
|
|
AZ::ComponentApplication* GetApplication() override { return nullptr; }
|
|
void RegisterComponentDescriptor(const AZ::ComponentDescriptor*) override {}
|
|
void UnregisterComponentDescriptor(const AZ::ComponentDescriptor*) override {}
|
|
bool AddEntity(AZ::Entity*) override { return true; }
|
|
bool RemoveEntity(AZ::Entity*) override { return true; }
|
|
bool DeleteEntity(const AZ::EntityId&) override { return true; }
|
|
AZ::Entity* FindEntity(const AZ::EntityId&) override { return nullptr; }
|
|
AZ::SerializeContext* GetSerializeContext() override { return nullptr; }
|
|
AZ::BehaviorContext* GetBehaviorContext() override { return m_behaviorContext; }
|
|
AZ::JsonRegistrationContext* GetJsonRegistrationContext() override { return nullptr; }
|
|
const char* GetExecutableFolder() const override { return nullptr; }
|
|
const char* GetBinFolder() const { return nullptr; }
|
|
const char* GetAppRoot() override { return nullptr; }
|
|
AZ::Debug::DrillerManager* GetDrillerManager() override { return nullptr; }
|
|
void EnumerateEntities(const EntityCallback& /*callback*/) override {}
|
|
|
|
void Init(AZ::BehaviorContext* behaviorContext)
|
|
{
|
|
m_behaviorContext = behaviorContext;
|
|
}
|
|
|
|
void Activate()
|
|
{
|
|
AZ::ComponentApplicationBus::Handler::BusConnect();
|
|
}
|
|
|
|
void Deactivate()
|
|
{
|
|
AZ::ComponentApplicationBus::Handler::BusDisconnect();
|
|
}
|
|
};
|
|
|
|
class TestClass
|
|
{
|
|
public:
|
|
AZ_TYPE_INFO(TestClass, "{A69035EF-F79F-4B1F-A192-5AB173C3B1F8}");
|
|
};
|
|
|
|
class TestRequest : public AZ::EBusTraits
|
|
{
|
|
public:
|
|
void TestMethod1() {}
|
|
void TestMethod2() {}
|
|
};
|
|
using TestEBus = AZ::EBus<TestRequest>;
|
|
};
|
|
|
|
class ScriptCanvasBehaviorContextUtilsUnitTestFixture
|
|
: public ScriptCanvasUnitTestFixture
|
|
{
|
|
protected:
|
|
AZ::BehaviorContext* m_behaviorContext;
|
|
BehaviorContextUtilsUnitTestStructures::TestHandler* m_testHandler;
|
|
|
|
void SetUp() override
|
|
{
|
|
ScriptCanvasUnitTestFixture::SetUp();
|
|
|
|
m_behaviorContext = aznew AZ::BehaviorContext();
|
|
m_testHandler = new BehaviorContextUtilsUnitTestStructures::TestHandler();
|
|
m_testHandler->Init(m_behaviorContext);
|
|
m_testHandler->Activate();
|
|
};
|
|
|
|
void TearDown() override
|
|
{
|
|
m_testHandler->Deactivate();
|
|
delete m_testHandler;
|
|
|
|
delete m_behaviorContext;
|
|
|
|
ScriptCanvasUnitTestFixture::TearDown();
|
|
};
|
|
};
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, FindFree_ReturnFalse_BehaviorContextNotFound)
|
|
{
|
|
m_testHandler->m_behaviorContext = nullptr;
|
|
const AZ::BehaviorMethod* dummyPtr{};
|
|
auto actualResult = BehaviorContextUtils::FindFree(dummyPtr, "DummyMethodName");
|
|
EXPECT_FALSE(actualResult);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, FindFree_ReturnFalse_NoMatchingMethodFound)
|
|
{
|
|
const AZ::BehaviorMethod* dummyPtr{};
|
|
auto actualResult = BehaviorContextUtils::FindFree(dummyPtr, "DummyMethodName");
|
|
EXPECT_FALSE(actualResult);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, FindFree_ReturnTrue_MatchingMethodFound)
|
|
{
|
|
m_behaviorContext->Method("TestMethod", []() {});
|
|
const AZ::BehaviorMethod* methodPtr{};
|
|
auto actualResult = BehaviorContextUtils::FindFree(methodPtr, "TestMethod");
|
|
EXPECT_TRUE(actualResult);
|
|
EXPECT_EQ(methodPtr, m_behaviorContext->m_methods["TestMethod"]);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, FindEBus_ReturnFalse_BehaviorContextNotFound)
|
|
{
|
|
m_testHandler->m_behaviorContext = nullptr;
|
|
const AZ::BehaviorEBus* dummyPtr{};
|
|
auto actualResult = BehaviorContextUtils::FindEBus(dummyPtr, "DummyEBusName");
|
|
EXPECT_FALSE(actualResult);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, FindEBus_ReturnFalse_NoMatchingEBusFound)
|
|
{
|
|
const AZ::BehaviorEBus* dummyPtr{};
|
|
auto actualResult = BehaviorContextUtils::FindEBus(dummyPtr, "DummyEBusName");
|
|
EXPECT_FALSE(actualResult);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, FindEBus_ReturnFalse_MatchingEBusFound)
|
|
{
|
|
m_behaviorContext
|
|
->EBus<BehaviorContextUtilsUnitTestStructures::TestEBus>("TestEBus");
|
|
const AZ::BehaviorEBus* ebusPtr{};
|
|
auto actualResult = BehaviorContextUtils::FindEBus(ebusPtr, "TestEBus");
|
|
EXPECT_TRUE(actualResult);
|
|
EXPECT_EQ(ebusPtr, m_behaviorContext->m_ebuses["TestEBus"]);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, FindEvent_ReturnFalse_BehaviorContextNotFound)
|
|
{
|
|
m_testHandler->m_behaviorContext = nullptr;
|
|
const AZ::BehaviorMethod* dummyPtr{};
|
|
auto actualResult = BehaviorContextUtils::FindEvent(dummyPtr, "DummyEBusName", "DummyEventName");
|
|
EXPECT_FALSE(actualResult);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, FindEvent_ReturnFalse_NoMatchingEBusFound)
|
|
{
|
|
const AZ::BehaviorMethod* dummyPtr{};
|
|
auto actualResult = BehaviorContextUtils::FindEvent(dummyPtr, "DummyEBusName", "DummyEventName");
|
|
EXPECT_FALSE(actualResult);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, FindEvent_ReturnFalse_NoMatchingEventFound)
|
|
{
|
|
m_behaviorContext
|
|
->EBus<BehaviorContextUtilsUnitTestStructures::TestEBus>("TestEBus")
|
|
->Event("TestMethod1", &BehaviorContextUtilsUnitTestStructures::TestEBus::Events::TestMethod1);
|
|
const AZ::BehaviorMethod* dummyPtr{};
|
|
auto actualResult = BehaviorContextUtils::FindEvent(dummyPtr, "TestEBus", "DummyEventName");
|
|
EXPECT_FALSE(actualResult);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, FindEvent_ReturnTrue_MatchingEventFound)
|
|
{
|
|
m_behaviorContext
|
|
->EBus<BehaviorContextUtilsUnitTestStructures::TestEBus>("TestEBus")
|
|
->Event("TestMethod1", &BehaviorContextUtilsUnitTestStructures::TestEBus::Events::TestMethod1);
|
|
const AZ::BehaviorMethod* methodPtr{};
|
|
auto actualResult = BehaviorContextUtils::FindEvent(methodPtr, "TestEBus", "TestMethod1");
|
|
EXPECT_TRUE(actualResult);
|
|
EXPECT_EQ(methodPtr, m_behaviorContext->m_ebuses["TestEBus"]->m_events["TestMethod1"].m_broadcast);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, FindEvent_GetBroadcastEventType_MatchingEventFound)
|
|
{
|
|
m_behaviorContext
|
|
->EBus<BehaviorContextUtilsUnitTestStructures::TestEBus>("TestEBus")
|
|
->Event("TestMethod1", &BehaviorContextUtilsUnitTestStructures::TestEBus::Events::TestMethod1);
|
|
const AZ::BehaviorMethod* methodPtr{};
|
|
EventType eventType;
|
|
auto actualResult = BehaviorContextUtils::FindEvent(methodPtr, "TestEBus", "TestMethod1", &eventType);
|
|
EXPECT_EQ(eventType, EventType::Broadcast);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, FindClass_ReturnFalse_BehaviorContextNotFound)
|
|
{
|
|
m_testHandler->m_behaviorContext = nullptr;
|
|
const AZ::BehaviorClass* dummyClassPtr{};
|
|
const AZ::BehaviorMethod* dummyMethodPtr{};
|
|
auto actualResult = BehaviorContextUtils::FindClass(dummyMethodPtr, dummyClassPtr, "DummyClassName", "DummyMethodName");
|
|
EXPECT_FALSE(actualResult);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, FindClass_ReturnFalse_NoMatchingClassFound)
|
|
{
|
|
const AZ::BehaviorClass* dummyClassPtr{};
|
|
const AZ::BehaviorMethod* dummyMethodPtr{};
|
|
auto actualResult = BehaviorContextUtils::FindClass(dummyMethodPtr, dummyClassPtr, "DummyClassName", "DummyMethodName");
|
|
EXPECT_FALSE(actualResult);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, FindClass_ReturnFalse_NoMatchingClassMethodFound)
|
|
{
|
|
m_behaviorContext
|
|
->Class<BehaviorContextUtilsUnitTestStructures::TestClass>("TestClass")
|
|
->Method("TestClassMethod", []() {});
|
|
const AZ::BehaviorClass* dummyClassPtr{};
|
|
const AZ::BehaviorMethod* dummyMethodPtr{};
|
|
auto actualResult = BehaviorContextUtils::FindClass(dummyMethodPtr, dummyClassPtr, "TestClass", "DummyMethodName");
|
|
EXPECT_FALSE(actualResult);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, FindClass_ReturnTrue_MatchingClassMethodFound)
|
|
{
|
|
m_behaviorContext
|
|
->Class<BehaviorContextUtilsUnitTestStructures::TestClass>("TestClass")
|
|
->Method("TestClassMethod", []() {});
|
|
const AZ::BehaviorClass* classPtr{};
|
|
const AZ::BehaviorMethod* methodPtr{};
|
|
auto actualResult = BehaviorContextUtils::FindClass(methodPtr, classPtr, "TestClass", "TestClassMethod");
|
|
EXPECT_TRUE(actualResult);
|
|
EXPECT_EQ(classPtr, m_behaviorContext->m_classes["TestClass"]);
|
|
EXPECT_EQ(methodPtr, m_behaviorContext->m_classes["TestClass"]->m_methods["TestClassMethod"]);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, FindClass_GetPrettyClassName_MatchingClassMethodFound)
|
|
{
|
|
m_behaviorContext
|
|
->Class<BehaviorContextUtilsUnitTestStructures::TestClass>("TestClass")
|
|
->Method("TestClassMethod", []() {});
|
|
const AZ::BehaviorClass* classPtr{};
|
|
const AZ::BehaviorMethod* methodPtr{};
|
|
AZStd::string prettyClassName;
|
|
auto actualResult = BehaviorContextUtils::FindClass(methodPtr, classPtr, "TestClass", "TestClassMethod", &prettyClassName);
|
|
EXPECT_EQ(prettyClassName, "TestClass");
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, GetEBusAddressPolicy_GetSingleAddressPolicy_EBusTypeIdIsNull)
|
|
{
|
|
AZ::BehaviorEBus testEbus;
|
|
testEbus.m_idParam.m_typeId = AZ::Uuid::CreateNull();
|
|
auto actualAddressPolicy = BehaviorContextUtils::GetEBusAddressPolicy(testEbus);
|
|
EXPECT_EQ(actualAddressPolicy, AZ::EBusAddressPolicy::Single);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, GetEBusAddressPolicy_GetSingleAddressPolicy_EBusTypeIdIsVoid)
|
|
{
|
|
AZ::BehaviorEBus testEbus;
|
|
testEbus.m_idParam.m_typeId = AZ::AzTypeInfo<void>::Uuid();
|
|
auto actualAddressPolicy = BehaviorContextUtils::GetEBusAddressPolicy(testEbus);
|
|
EXPECT_EQ(actualAddressPolicy, AZ::EBusAddressPolicy::Single);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, GetEBusAddressPolicy_GetByIdAddressPolicy_EBusTypeIdIsStringType)
|
|
{
|
|
AZ::BehaviorEBus testEbus;
|
|
testEbus.m_idParam.m_typeId = AZ::AzTypeInfo<AZStd::string>::Uuid();
|
|
auto actualAddressPolicy = BehaviorContextUtils::GetEBusAddressPolicy(testEbus);
|
|
EXPECT_EQ(actualAddressPolicy, AZ::EBusAddressPolicy::ById);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, GetEventMethod_GetQueueEventMethod_EBusHasQueueFunctionAndAddressTypeIsById)
|
|
{
|
|
m_behaviorContext->Method("TestMethod", []() {});
|
|
AZ::BehaviorEBus testEbus;
|
|
testEbus.m_idParam.m_typeId = AZ::AzTypeInfo<AZStd::string>::Uuid();
|
|
testEbus.m_queueFunction = m_behaviorContext->m_methods["TestMethod"];
|
|
AZ::BehaviorEBusEventSender testEventSender;
|
|
testEventSender.m_queueEvent = m_behaviorContext->m_methods["TestMethod"];
|
|
auto actualMethod = BehaviorContextUtils::GetEventMethod(testEbus, testEventSender);
|
|
EXPECT_EQ(actualMethod, m_behaviorContext->m_methods["TestMethod"]);
|
|
|
|
testEbus.m_queueFunction = nullptr;
|
|
testEventSender.m_queueEvent = nullptr;
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, GetEventMethod_GetQueueBroadcastMethod_EBusHasQueueFunctionAndAddressTypeIsSingle)
|
|
{
|
|
m_behaviorContext->Method("TestMethod", []() {});
|
|
AZ::BehaviorEBus testEbus;
|
|
testEbus.m_idParam.m_typeId = AZ::AzTypeInfo<void>::Uuid();
|
|
testEbus.m_queueFunction = m_behaviorContext->m_methods["TestMethod"];
|
|
AZ::BehaviorEBusEventSender testEventSender;
|
|
testEventSender.m_queueBroadcast = m_behaviorContext->m_methods["TestMethod"];
|
|
auto actualMethod = BehaviorContextUtils::GetEventMethod(testEbus, testEventSender);
|
|
EXPECT_EQ(actualMethod, m_behaviorContext->m_methods["TestMethod"]);
|
|
|
|
testEbus.m_queueFunction = nullptr;
|
|
testEventSender.m_queueBroadcast = nullptr;
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, GetEventMethod_GetEventMethod_EBusHasNoQueueFunctionAndAddressTypeIsById)
|
|
{
|
|
m_behaviorContext->Method("TestMethod", []() {});
|
|
AZ::BehaviorEBus testEbus;
|
|
testEbus.m_idParam.m_typeId = AZ::AzTypeInfo<AZStd::string>::Uuid();
|
|
AZ::BehaviorEBusEventSender testEventSender;
|
|
testEventSender.m_event = m_behaviorContext->m_methods["TestMethod"];
|
|
auto actualMethod = BehaviorContextUtils::GetEventMethod(testEbus, testEventSender);
|
|
EXPECT_EQ(actualMethod, m_behaviorContext->m_methods["TestMethod"]);
|
|
|
|
testEventSender.m_event = nullptr;
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, GetEventMethod_GetBroadcastMethod_EBusHasNoQueueFunctionAndAddressTypeIsSingle)
|
|
{
|
|
m_behaviorContext->Method("TestMethod", []() {});
|
|
AZ::BehaviorEBus testEbus;
|
|
testEbus.m_idParam.m_typeId = AZ::AzTypeInfo<void>::Uuid();
|
|
AZ::BehaviorEBusEventSender testEventSender;
|
|
testEventSender.m_broadcast = m_behaviorContext->m_methods["TestMethod"];
|
|
auto actualMethod = BehaviorContextUtils::GetEventMethod(testEbus, testEventSender);
|
|
EXPECT_EQ(actualMethod, m_behaviorContext->m_methods["TestMethod"]);
|
|
|
|
testEventSender.m_broadcast = nullptr;
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, GetEventType_GetEventQueueType_EBusHasQueueFunctionAndAddressTypeIsById)
|
|
{
|
|
m_behaviorContext->Method("TestMethod", []() {});
|
|
AZ::BehaviorEBus testEbus;
|
|
testEbus.m_idParam.m_typeId = AZ::AzTypeInfo<AZStd::string>::Uuid();
|
|
testEbus.m_queueFunction = m_behaviorContext->m_methods["TestMethod"];
|
|
auto actualEventType = BehaviorContextUtils::GetEventType(testEbus);
|
|
EXPECT_EQ(actualEventType, EventType::EventQueue);
|
|
|
|
testEbus.m_queueFunction = nullptr;
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, GetEventType_GetBroadcastQueueType_EBusHasQueueFunctionAndAddressTypeIsSingle)
|
|
{
|
|
m_behaviorContext->Method("TestMethod", []() {});
|
|
AZ::BehaviorEBus testEbus;
|
|
testEbus.m_idParam.m_typeId = AZ::AzTypeInfo<void>::Uuid();
|
|
testEbus.m_queueFunction = m_behaviorContext->m_methods["TestMethod"];
|
|
auto actualEventType = BehaviorContextUtils::GetEventType(testEbus);
|
|
EXPECT_EQ(actualEventType, EventType::BroadcastQueue);
|
|
|
|
testEbus.m_queueFunction = nullptr;
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, GetEventType_GetEventType_EBusHasNoQueueFunctionAndAddressTypeIsById)
|
|
{
|
|
AZ::BehaviorEBus testEbus;
|
|
testEbus.m_idParam.m_typeId = AZ::AzTypeInfo<AZStd::string>::Uuid();
|
|
auto actualEventType = BehaviorContextUtils::GetEventType(testEbus);
|
|
EXPECT_EQ(actualEventType, EventType::Event);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, GetEventType_GetBroadcastType_EBusHasNoQueueFunctionAndAddressTypeIsSingle)
|
|
{
|
|
AZ::BehaviorEBus testEbus;
|
|
testEbus.m_idParam.m_typeId = AZ::AzTypeInfo<void>::Uuid();
|
|
auto actualEventType = BehaviorContextUtils::GetEventType(testEbus);
|
|
EXPECT_EQ(actualEventType, EventType::Broadcast);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, GenerateFingerprintForBehaviorContext_ReturnZero_BehaviorContextIsInvalid)
|
|
{
|
|
m_testHandler->m_behaviorContext = nullptr;
|
|
size_t actualHash = BehaviorContextUtils::GenerateFingerprintForBehaviorContext();
|
|
EXPECT_EQ(actualHash, 0);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, GenerateFingerprintForBehaviorContext_ReturnSameHash_SameBehaviorContext)
|
|
{
|
|
m_behaviorContext->Method("TestMethod", []() {});
|
|
size_t actualHash1 = BehaviorContextUtils::GenerateFingerprintForBehaviorContext();
|
|
size_t actualHash2 = BehaviorContextUtils::GenerateFingerprintForBehaviorContext();
|
|
EXPECT_TRUE(actualHash1 == actualHash2);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, GenerateFingerprintForBehaviorContext_ReturnSameHash_BehaviorContextsAreEmpty)
|
|
{
|
|
size_t actualHash1 = BehaviorContextUtils::GenerateFingerprintForBehaviorContext();
|
|
size_t actualHash2 = BehaviorContextUtils::GenerateFingerprintForBehaviorContext();
|
|
EXPECT_TRUE(actualHash1 == actualHash2);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, GenerateFingerprintForBehaviorContext_ReturnDifferentHash_DifferentBehaviorContexts)
|
|
{
|
|
m_behaviorContext->Method("TestMethod", []() {});
|
|
size_t actualHash1 = BehaviorContextUtils::GenerateFingerprintForBehaviorContext();
|
|
delete m_behaviorContext->m_methods["TestMethod"];
|
|
m_behaviorContext->m_methods.clear();
|
|
m_behaviorContext->Method("TestMethod", [](bool) {});
|
|
size_t actualHash2 = BehaviorContextUtils::GenerateFingerprintForBehaviorContext();
|
|
EXPECT_FALSE(actualHash1 == actualHash2);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, GenerateFingerprintForBehaviorContext_ReturnDifferentHash_OneBehaviorContextIsEmpty)
|
|
{
|
|
size_t actualHash1 = BehaviorContextUtils::GenerateFingerprintForBehaviorContext();
|
|
m_behaviorContext->Method("TestMethod", []() {});
|
|
size_t actualHash2 = BehaviorContextUtils::GenerateFingerprintForBehaviorContext();
|
|
EXPECT_FALSE(actualHash1 == actualHash2);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, GenerateFingerprintForMethod_ReturnSameHash_SameMethod)
|
|
{
|
|
m_behaviorContext->Method("TestMethod", []() {});
|
|
size_t actualHash1 = BehaviorContextUtils::GenerateFingerprintForMethod(MethodType::Free, "", "TestMethod");
|
|
size_t actualHash2 = BehaviorContextUtils::GenerateFingerprintForMethod(MethodType::Free, "", "TestMethod");
|
|
EXPECT_TRUE(actualHash1 == actualHash2);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, GenerateFingerprintForMethod_ReturnDifferentHash_DifferentMethod)
|
|
{
|
|
m_behaviorContext->Method("TestMethod1", []() {});
|
|
m_behaviorContext->Method("TestMethod2", [](bool) {});
|
|
size_t actualHash1 = BehaviorContextUtils::GenerateFingerprintForMethod(MethodType::Free, "", "TestMethod1");
|
|
size_t actualHash2 = BehaviorContextUtils::GenerateFingerprintForMethod(MethodType::Free, "", "TestMethod2");
|
|
EXPECT_FALSE(actualHash1 == actualHash2);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, HashCombineEBuses_ReturnZero_EbuseMapIsInvalid)
|
|
{
|
|
size_t actualHash = 0;
|
|
BehaviorContextUtils::HashCombineEBuses(actualHash, nullptr);
|
|
EXPECT_EQ(actualHash, 0);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, HashCombineEBuses_ReturnSameHash_SameEBusMaps)
|
|
{
|
|
m_behaviorContext
|
|
->EBus<BehaviorContextUtilsUnitTestStructures::TestEBus>("TestEBus")
|
|
->Event("TestMethod", &BehaviorContextUtilsUnitTestStructures::TestEBus::Events::TestMethod1);
|
|
size_t actualHash1 = 0;
|
|
BehaviorContextUtils::HashCombineEBuses(actualHash1, &(m_behaviorContext->m_ebuses));
|
|
size_t actualHash2 = 0;
|
|
BehaviorContextUtils::HashCombineEBuses(actualHash2, &(m_behaviorContext->m_ebuses));
|
|
EXPECT_TRUE(actualHash1 == actualHash2);
|
|
}
|
|
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, HashCombineEBuses_ReturnSameHash_EBusMapsAreEmpty)
|
|
{
|
|
size_t actualHash1 = 0;
|
|
BehaviorContextUtils::HashCombineEBuses(actualHash1, &(m_behaviorContext->m_ebuses));
|
|
size_t actualHash2 = 0;
|
|
BehaviorContextUtils::HashCombineEBuses(actualHash2, &(m_behaviorContext->m_ebuses));
|
|
EXPECT_TRUE(actualHash1 == actualHash2);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, HashCombineEBuses_ReturnDifferentHash_EBusMapsHaveDifferentEBusName)
|
|
{
|
|
m_behaviorContext
|
|
->EBus<BehaviorContextUtilsUnitTestStructures::TestEBus>("TestEBus1");
|
|
size_t actualHash1 = 0;
|
|
BehaviorContextUtils::HashCombineEBuses(actualHash1, &(m_behaviorContext->m_ebuses));
|
|
delete m_behaviorContext->m_ebuses["TestEBus1"];
|
|
m_behaviorContext->m_ebuses.clear();
|
|
m_behaviorContext
|
|
->EBus<BehaviorContextUtilsUnitTestStructures::TestEBus>("TestEBus2");
|
|
size_t actualHash2 = 0;
|
|
BehaviorContextUtils::HashCombineEBuses(actualHash2, &(m_behaviorContext->m_ebuses));
|
|
EXPECT_FALSE(actualHash1 == actualHash2);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, HashCombineEBuses_ReturnDifferentHash_EBusMapsHaveDifferentEBusDefinition)
|
|
{
|
|
m_behaviorContext
|
|
->EBus<BehaviorContextUtilsUnitTestStructures::TestEBus>("TestEBus")
|
|
->Event("TestMethod1", &BehaviorContextUtilsUnitTestStructures::TestEBus::Events::TestMethod1);
|
|
size_t actualHash1 = 0;
|
|
BehaviorContextUtils::HashCombineEBuses(actualHash1, &(m_behaviorContext->m_ebuses));
|
|
delete m_behaviorContext->m_ebuses["TestEBus"];
|
|
m_behaviorContext->m_ebuses.clear();
|
|
m_behaviorContext
|
|
->EBus<BehaviorContextUtilsUnitTestStructures::TestEBus>("TestEBus")
|
|
->Event("TestMethod2", &BehaviorContextUtilsUnitTestStructures::TestEBus::Events::TestMethod2);
|
|
size_t actualHash2 = 0;
|
|
BehaviorContextUtils::HashCombineEBuses(actualHash2, &(m_behaviorContext->m_ebuses));
|
|
EXPECT_FALSE(actualHash1 == actualHash2);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, HashCombineEBuses_ReturnDifferentHash_OneEBusMapIsEmpty)
|
|
{
|
|
size_t actualHash1 = 0;
|
|
BehaviorContextUtils::HashCombineEBuses(actualHash1, &(m_behaviorContext->m_ebuses));
|
|
m_behaviorContext
|
|
->EBus<BehaviorContextUtilsUnitTestStructures::TestEBus>("TestEBus");
|
|
size_t actualHash2 = 0;
|
|
BehaviorContextUtils::HashCombineEBuses(actualHash2, &(m_behaviorContext->m_ebuses));
|
|
EXPECT_FALSE(actualHash1 == actualHash2);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, HashCombineEvents_ReturnZero_EbusIsNull)
|
|
{
|
|
size_t actualHash = 0;
|
|
BehaviorContextUtils::HashCombineEvents(actualHash, nullptr);
|
|
EXPECT_EQ(actualHash, 0);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, HashCombineEvents_ReturnSameHash_SameEBus)
|
|
{
|
|
m_behaviorContext
|
|
->EBus<BehaviorContextUtilsUnitTestStructures::TestEBus>("TestEBus")
|
|
->Event("TestMethod", &BehaviorContextUtilsUnitTestStructures::TestEBus::Events::TestMethod1);
|
|
size_t actualHash1 = 0;
|
|
BehaviorContextUtils::HashCombineEvents(actualHash1, m_behaviorContext->m_ebuses["TestEBus"]);
|
|
size_t actualHash2 = 0;
|
|
BehaviorContextUtils::HashCombineEvents(actualHash2, m_behaviorContext->m_ebuses["TestEBus"]);
|
|
EXPECT_TRUE(actualHash1 == actualHash2);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, HashCombineEvents_ReturnDifferentHash_EBusHasDifferentEventDefinition)
|
|
{
|
|
m_behaviorContext
|
|
->EBus<BehaviorContextUtilsUnitTestStructures::TestEBus>("TestEBus")
|
|
->Event("TestMethod1", &BehaviorContextUtilsUnitTestStructures::TestEBus::Events::TestMethod1);
|
|
size_t actualHash1 = 0;
|
|
BehaviorContextUtils::HashCombineEvents(actualHash1, m_behaviorContext->m_ebuses["TestEBus"]);
|
|
delete m_behaviorContext->m_ebuses["TestEBus"];
|
|
m_behaviorContext->m_ebuses.clear();
|
|
m_behaviorContext
|
|
->EBus<BehaviorContextUtilsUnitTestStructures::TestEBus>("TestEBus")
|
|
->Event("TestMethod2", &BehaviorContextUtilsUnitTestStructures::TestEBus::Events::TestMethod2);
|
|
size_t actualHash2 = 0;
|
|
BehaviorContextUtils::HashCombineEvents(actualHash2, m_behaviorContext->m_ebuses["TestEBus"]);
|
|
EXPECT_FALSE(actualHash1 == actualHash2);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, HashCombineClasses_ReturnZero_ClassMapIsInvalid)
|
|
{
|
|
size_t actualHash = 0;
|
|
BehaviorContextUtils::HashCombineClasses(actualHash, nullptr);
|
|
EXPECT_EQ(actualHash, 0);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, HashCombineClasses_ReturnSameHash_SameClassMaps)
|
|
{
|
|
m_behaviorContext
|
|
->Class<BehaviorContextUtilsUnitTestStructures::TestClass>("TestClass")
|
|
->Property("TestClassProperty", []() { return true; }, [](bool) {})
|
|
->Method("TestClassMethod", []() {});
|
|
size_t actualHash1 = 0;
|
|
BehaviorContextUtils::HashCombineClasses(actualHash1, &(m_behaviorContext->m_classes));
|
|
size_t actualHash2 = 0;
|
|
BehaviorContextUtils::HashCombineClasses(actualHash2, &(m_behaviorContext->m_classes));
|
|
EXPECT_TRUE(actualHash1 == actualHash2);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, HashCombineClasses_ReturnSameHash_ClassMapsAreEmpty)
|
|
{
|
|
size_t actualHash1 = 0;
|
|
BehaviorContextUtils::HashCombineClasses(actualHash1, &(m_behaviorContext->m_classes));
|
|
size_t actualHash2 = 0;
|
|
BehaviorContextUtils::HashCombineClasses(actualHash2, &(m_behaviorContext->m_classes));
|
|
EXPECT_TRUE(actualHash1 == actualHash2);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, HashCombineClasses_ReturnDifferentHash_ClassMapsHaveDifferentClassName)
|
|
{
|
|
m_behaviorContext
|
|
->Class<BehaviorContextUtilsUnitTestStructures::TestClass>("TestClass1")
|
|
->Property("TestClassProperty", []() { return true; }, [](bool) {})
|
|
->Method("TestClassMethod", []() {});
|
|
size_t actualHash1 = 0;
|
|
BehaviorContextUtils::HashCombineClasses(actualHash1, &(m_behaviorContext->m_classes));
|
|
delete m_behaviorContext->m_classes["TestClass1"];
|
|
m_behaviorContext->m_classes.clear();
|
|
m_behaviorContext->m_typeToClassMap.clear();
|
|
m_behaviorContext
|
|
->Class<BehaviorContextUtilsUnitTestStructures::TestClass>("TestClass2")
|
|
->Property("TestClassProperty", []() { return true; }, [](bool) {})
|
|
->Method("TestClassMethod", []() {});
|
|
size_t actualHash2 = 0;
|
|
BehaviorContextUtils::HashCombineClasses(actualHash2, &(m_behaviorContext->m_classes));
|
|
EXPECT_FALSE(actualHash1 == actualHash2);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, HashCombineClasses_ReturnDifferentHash_ClassMapsHaveDifferentClassDefinition)
|
|
{
|
|
m_behaviorContext
|
|
->Class<BehaviorContextUtilsUnitTestStructures::TestClass>("TestClass")
|
|
->Property("TestClassProperty", []() { return true; }, [](bool) {})
|
|
->Method("TestClassMethod", []() {});
|
|
size_t actualHash1 = 0;
|
|
BehaviorContextUtils::HashCombineClasses(actualHash1, &(m_behaviorContext->m_classes));
|
|
delete m_behaviorContext->m_classes["TestClass"];
|
|
m_behaviorContext->m_classes.clear();
|
|
m_behaviorContext->m_typeToClassMap.clear();
|
|
m_behaviorContext
|
|
->Class<BehaviorContextUtilsUnitTestStructures::TestClass>("TestClass")
|
|
->Method("TestClassMethod", []() {});
|
|
size_t actualHash2 = 0;
|
|
BehaviorContextUtils::HashCombineClasses(actualHash2, &(m_behaviorContext->m_classes));
|
|
EXPECT_FALSE(actualHash1 == actualHash2);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, HashCombineClasses_ReturnDifferentHash_OneClassMapIsEmpty)
|
|
{
|
|
size_t actualHash1 = 0;
|
|
BehaviorContextUtils::HashCombineClasses(actualHash1, &(m_behaviorContext->m_classes));
|
|
m_behaviorContext
|
|
->Class<BehaviorContextUtilsUnitTestStructures::TestClass>("TestClass")
|
|
->Property("TestClassProperty", []() { return true; }, [](bool) {})
|
|
->Method("TestClassMethod", []() {});
|
|
size_t actualHash2 = 0;
|
|
BehaviorContextUtils::HashCombineClasses(actualHash2, &(m_behaviorContext->m_classes));
|
|
EXPECT_FALSE(actualHash1 == actualHash2);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, HashCombineProperties_ReturnZero_PropertyMapIsInvalid)
|
|
{
|
|
size_t actualHash = 0;
|
|
BehaviorContextUtils::HashCombineProperties(actualHash, nullptr);
|
|
EXPECT_EQ(actualHash, 0);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, HashCombineProperties_ReturnSameHash_SamePropertyMaps)
|
|
{
|
|
m_behaviorContext->Property("TestProperty", []() { return true; }, [](bool) {});
|
|
|
|
size_t actualHash1 = 0;
|
|
BehaviorContextUtils::HashCombineProperties(actualHash1, &(m_behaviorContext->m_properties));
|
|
size_t actualHash2 = 0;
|
|
BehaviorContextUtils::HashCombineProperties(actualHash2, &(m_behaviorContext->m_properties));
|
|
EXPECT_TRUE(actualHash1 == actualHash2);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, HashCombineProperties_ReturnSameHash_PropertyMapsAreEmpty)
|
|
{
|
|
size_t actualHash1 = 0;
|
|
BehaviorContextUtils::HashCombineProperties(actualHash1, &(m_behaviorContext->m_properties));
|
|
size_t actualHash2 = 0;
|
|
BehaviorContextUtils::HashCombineProperties(actualHash2, &(m_behaviorContext->m_properties));
|
|
EXPECT_TRUE(actualHash1 == actualHash2);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, HashCombineProperties_ReturnDifferentHash_PropertyMapsHaveDifferentPropertyName)
|
|
{
|
|
m_behaviorContext->Property("TestProperty1", []() { return true; }, [](bool) {});
|
|
size_t actualHash1 = 0;
|
|
BehaviorContextUtils::HashCombineProperties(actualHash1, &(m_behaviorContext->m_properties));
|
|
|
|
delete m_behaviorContext->m_properties["TestProperty1"];
|
|
m_behaviorContext->m_properties.clear();
|
|
|
|
m_behaviorContext->Property("TestProperty2", []() { return true; }, [](bool) {});
|
|
size_t actualHash2 = 0;
|
|
BehaviorContextUtils::HashCombineProperties(actualHash2, &(m_behaviorContext->m_properties));
|
|
EXPECT_FALSE(actualHash1 == actualHash2);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, HashCombineProperties_ReturnDifferentHash_PropertyMapsHaveDifferentGetterSetter)
|
|
{
|
|
m_behaviorContext->Property("TestProperty", []() { return true; }, [](bool) {});
|
|
size_t actualHash1 = 0;
|
|
BehaviorContextUtils::HashCombineProperties(actualHash1, &(m_behaviorContext->m_properties));
|
|
|
|
delete m_behaviorContext->m_properties["TestProperty"];
|
|
m_behaviorContext->m_properties.clear();
|
|
|
|
m_behaviorContext->Property("TestProperty", []() { return 1; }, [](int) {});
|
|
size_t actualHash2 = 0;
|
|
BehaviorContextUtils::HashCombineProperties(actualHash2, &(m_behaviorContext->m_properties));
|
|
EXPECT_FALSE(actualHash1 == actualHash2);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, HashCombineProperties_ReturnDifferentHash_OnePropertyMapIsEmpty)
|
|
{
|
|
size_t actualHash1 = 0;
|
|
BehaviorContextUtils::HashCombineProperties(actualHash1, &(m_behaviorContext->m_properties));
|
|
m_behaviorContext->Property("TestProperty", []() { return true; }, [](bool) {});
|
|
size_t actualHash2 = 0;
|
|
BehaviorContextUtils::HashCombineProperties(actualHash2, &(m_behaviorContext->m_properties));
|
|
EXPECT_FALSE(actualHash1 == actualHash2);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, HashCombineMethods_ReturnZero_MethodMapIsInvalid)
|
|
{
|
|
size_t actualHash = 0;
|
|
BehaviorContextUtils::HashCombineMethods(actualHash, nullptr);
|
|
EXPECT_EQ(actualHash, 0);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, HashCombineMethods_ReturnSameHash_SameMethodMaps)
|
|
{
|
|
m_behaviorContext->Method("TestMethod", []() {});
|
|
|
|
size_t actualHash1 = 0;
|
|
BehaviorContextUtils::HashCombineMethods(actualHash1, &(m_behaviorContext->m_methods));
|
|
size_t actualHash2 = 0;
|
|
BehaviorContextUtils::HashCombineMethods(actualHash2, &(m_behaviorContext->m_methods));
|
|
EXPECT_TRUE(actualHash1 == actualHash2);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, HashCombineMethods_ReturnSameHash_MethodMapsAreEmpty)
|
|
{
|
|
size_t actualHash1 = 0;
|
|
BehaviorContextUtils::HashCombineMethods(actualHash1, &(m_behaviorContext->m_methods));
|
|
size_t actualHash2 = 0;
|
|
BehaviorContextUtils::HashCombineMethods(actualHash2, &(m_behaviorContext->m_methods));
|
|
EXPECT_TRUE(actualHash1 == actualHash2);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, HashCombineMethods_ReturnDifferentHash_MethodMapsHaveDifferentMethodName)
|
|
{
|
|
m_behaviorContext->Method("TestMethod1", [](bool) {});
|
|
size_t actualHash1 = 0;
|
|
BehaviorContextUtils::HashCombineMethods(actualHash1, &(m_behaviorContext->m_methods));
|
|
|
|
delete m_behaviorContext->m_methods["TestMethod1"];
|
|
m_behaviorContext->m_methods.clear();
|
|
|
|
m_behaviorContext->Method("TestMethod2", [](bool) {});
|
|
size_t actualHash2 = 0;
|
|
BehaviorContextUtils::HashCombineMethods(actualHash1, &(m_behaviorContext->m_methods));
|
|
EXPECT_FALSE(actualHash1 == actualHash2);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, HashCombineMethods_ReturnDifferentHash_MethodMapsHaveDifferentMethodSignature)
|
|
{
|
|
m_behaviorContext->Method("TestMethod", [](bool) {});
|
|
size_t actualHash1 = 0;
|
|
BehaviorContextUtils::HashCombineMethods(actualHash1, &(m_behaviorContext->m_methods));
|
|
|
|
delete m_behaviorContext->m_methods["TestMethod"];
|
|
m_behaviorContext->m_methods.clear();
|
|
|
|
m_behaviorContext->Method("TestMethod", [](bool, bool) {});
|
|
size_t actualHash2 = 0;
|
|
BehaviorContextUtils::HashCombineMethods(actualHash1, &(m_behaviorContext->m_methods));
|
|
EXPECT_FALSE(actualHash1 == actualHash2);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, HashCombineMethods_ReturnDifferentHash_OneMethodMapIsEmpty)
|
|
{
|
|
size_t actualHash1 = 0;
|
|
BehaviorContextUtils::HashCombineMethods(actualHash1, &(m_behaviorContext->m_methods));
|
|
m_behaviorContext->Method("TestMethod", [](bool) {});
|
|
size_t actualHash2 = 0;
|
|
BehaviorContextUtils::HashCombineMethods(actualHash1, &(m_behaviorContext->m_methods));
|
|
EXPECT_FALSE(actualHash1 == actualHash2);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, HashCombineMethodSignature_ReturnZero_MethodIsInvalid)
|
|
{
|
|
size_t actualHash = 0;
|
|
BehaviorContextUtils::HashCombineMethodSignature(actualHash, nullptr);
|
|
EXPECT_EQ(actualHash, 0);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, HashCombineMethodSignature_ReturnSameHash_SameMethod)
|
|
{
|
|
m_behaviorContext->Method("TestMethod", [](bool) {});
|
|
|
|
size_t actualHash1 = 0;
|
|
BehaviorContextUtils::HashCombineMethodSignature(actualHash1, m_behaviorContext->m_methods["TestMethod"]);
|
|
size_t actualHash2 = 0;
|
|
BehaviorContextUtils::HashCombineMethodSignature(actualHash2, m_behaviorContext->m_methods["TestMethod"]);
|
|
EXPECT_TRUE(actualHash1 == actualHash2);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, HashCombineMethodSignature_ReturnDifferentHash_MethodsHaveDifferentName)
|
|
{
|
|
m_behaviorContext->Method("TestMethod1", [](bool) {});
|
|
m_behaviorContext->Method("TestMethod2", [](bool) {});
|
|
|
|
size_t actualHash1 = 0;
|
|
BehaviorContextUtils::HashCombineMethodSignature(actualHash1, m_behaviorContext->m_methods["TestMethod1"]);
|
|
size_t actualHash2 = 0;
|
|
BehaviorContextUtils::HashCombineMethodSignature(actualHash2, m_behaviorContext->m_methods["TestMethod2"]);
|
|
EXPECT_FALSE(actualHash1 == actualHash2);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, HashCombineMethodSignature_ReturnDifferentHash_MethodsHaveDifferentArguments)
|
|
{
|
|
m_behaviorContext->Method("TestMethod1", [](bool) {});
|
|
m_behaviorContext->Method("TestMethod2", [](int) {});
|
|
|
|
size_t actualHash1 = 0;
|
|
BehaviorContextUtils::HashCombineMethodSignature(actualHash1, m_behaviorContext->m_methods["TestMethod1"]);
|
|
size_t actualHash2 = 0;
|
|
BehaviorContextUtils::HashCombineMethodSignature(actualHash2, m_behaviorContext->m_methods["TestMethod2"]);
|
|
EXPECT_FALSE(actualHash1 == actualHash2);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, HashCombineMethodSignature_ReturnDifferentHash_MethodsHaveDifferentArgumentNumber)
|
|
{
|
|
m_behaviorContext->Method("TestMethod1", [](bool) {});
|
|
m_behaviorContext->Method("TestMethod2", [](bool, bool) {});
|
|
|
|
size_t actualHash1 = 0;
|
|
BehaviorContextUtils::HashCombineMethodSignature(actualHash1, m_behaviorContext->m_methods["TestMethod1"]);
|
|
size_t actualHash2 = 0;
|
|
BehaviorContextUtils::HashCombineMethodSignature(actualHash2, m_behaviorContext->m_methods["TestMethod2"]);
|
|
EXPECT_FALSE(actualHash1 == actualHash2);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, HashCombineMethodSignature_ReturnDifferentHash_MethodsHaveDifferentResult)
|
|
{
|
|
m_behaviorContext->Method("TestMethod1", []() { return true; });
|
|
m_behaviorContext->Method("TestMethod2", []() {});
|
|
|
|
size_t actualHash1 = 0;
|
|
BehaviorContextUtils::HashCombineMethodSignature(actualHash1, m_behaviorContext->m_methods["TestMethod1"]);
|
|
size_t actualHash2 = 0;
|
|
BehaviorContextUtils::HashCombineMethodSignature(actualHash2, m_behaviorContext->m_methods["TestMethod2"]);
|
|
EXPECT_FALSE(actualHash1 == actualHash2);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, HashCombineMethodSignature_ReturnDifferentHash_MethodsHaveDifferentResultType)
|
|
{
|
|
m_behaviorContext->Method("TestMethod1", []() { return true; });
|
|
m_behaviorContext->Method("TestMethod2", []() { return 1; });
|
|
|
|
size_t actualHash1 = 0;
|
|
BehaviorContextUtils::HashCombineMethodSignature(actualHash1, m_behaviorContext->m_methods["TestMethod1"]);
|
|
size_t actualHash2 = 0;
|
|
BehaviorContextUtils::HashCombineMethodSignature(actualHash2, m_behaviorContext->m_methods["TestMethod2"]);
|
|
EXPECT_FALSE(actualHash1 == actualHash2);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, IsSameDataType_ReturnFalse_ParameterIsNull)
|
|
{
|
|
bool result = BehaviorContextUtils::IsSameDataType(nullptr, Data::Type::Boolean());
|
|
EXPECT_FALSE(result);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, IsSameDataType_ReturnFalse_ParameterHasDifferentDataType)
|
|
{
|
|
m_behaviorContext->Method("TestMethod", []() { return 1; });
|
|
bool result = BehaviorContextUtils::IsSameDataType(m_behaviorContext->m_methods["TestMethod"]->GetResult(), Data::Type::Boolean());
|
|
EXPECT_FALSE(result);
|
|
}
|
|
|
|
TEST_F(ScriptCanvasBehaviorContextUtilsUnitTestFixture, IsSameDataType_ReturnTrue_ParameterHasSameDataType)
|
|
{
|
|
m_behaviorContext->Method("TestMethod", []() { return 1; });
|
|
bool result = BehaviorContextUtils::IsSameDataType(m_behaviorContext->m_methods["TestMethod"]->GetResult(), Data::Type::Number());
|
|
EXPECT_TRUE(result);
|
|
}
|
|
}
|