From 39d2ddbe49a7017845589797beec2b0bcc7b4f01 Mon Sep 17 00:00:00 2001 From: Romain BOULLARD Date: Mon, 17 Aug 2026 18:32:02 +0200 Subject: [PATCH] ContainerHandle test --- .../Include/Engine/Asset/AssetContainer.hpp | 4 +- .../Engine/Include/Engine/Asset/Reference.hpp | 4 +- Bigfoot/Tests/Engine/Asset/AssetContainer.cpp | 40 +++++++++++++++++-- 3 files changed, 40 insertions(+), 8 deletions(-) diff --git a/Bigfoot/Sources/Engine/Include/Engine/Asset/AssetContainer.hpp b/Bigfoot/Sources/Engine/Include/Engine/Asset/AssetContainer.hpp index 6eb65e6..a0dd49d 100644 --- a/Bigfoot/Sources/Engine/Include/Engine/Asset/AssetContainer.hpp +++ b/Bigfoot/Sources/Engine/Include/Engine/Asset/AssetContainer.hpp @@ -146,9 +146,9 @@ class AssetContainerBase * \return A ContainerHandle for the UUID */ [[nodiscard]] - ContainerHandle& AcquireContainerHandle(const UUID& p_uuid) + ContainerHandle* AcquireContainerHandle(const UUID& p_uuid) { - return *m_handles.Get(GetOrCreateEntry(p_uuid).m_handleSlotKey); + return m_handles.Get(GetOrCreateEntry(p_uuid).m_handleSlotKey); } /* diff --git a/Bigfoot/Sources/Engine/Include/Engine/Asset/Reference.hpp b/Bigfoot/Sources/Engine/Include/Engine/Asset/Reference.hpp index 79833f9..0eaacae 100644 --- a/Bigfoot/Sources/Engine/Include/Engine/Asset/Reference.hpp +++ b/Bigfoot/Sources/Engine/Include/Engine/Asset/Reference.hpp @@ -116,7 +116,7 @@ class HardReference { if (!m_handle) { - m_handle = &assetContainer->AcquireContainerHandle(m_uuid); + m_handle = assetContainer->AcquireContainerHandle(m_uuid); } m_handle->IncrementSoftRefCount(); } @@ -234,7 +234,7 @@ class SoftReference { if (!m_handle) { - m_handle = &assetContainer->AcquireContainerHandle(m_uuid); + m_handle = assetContainer->AcquireContainerHandle(m_uuid); } m_handle->IncrementSoftRefCount(); } diff --git a/Bigfoot/Tests/Engine/Asset/AssetContainer.cpp b/Bigfoot/Tests/Engine/Asset/AssetContainer.cpp index 79fe053..c29da3d 100644 --- a/Bigfoot/Tests/Engine/Asset/AssetContainer.cpp +++ b/Bigfoot/Tests/Engine/Asset/AssetContainer.cpp @@ -11,6 +11,38 @@ namespace Bigfoot { +class ContainerHandleFixture: public ::testing::Test +{ + protected: + void SetUp() override + { + std::ignore = m_containerA.Insert(m_asset); + m_handle = m_containerA.AcquireContainerHandle(m_asset.GetHeader().uuid); + } + + AssetA m_asset; + AssetContainer m_containerA; + + ContainerHandle* m_handle; +}; + +/****************************************************************************************/ + +TEST_F(ContainerHandleFixture, GetAsset_ShouldReturnTheAsset) +{ + EXPECT_NE(m_handle->GetAsset(), nullptr); +} + +/****************************************************************************************/ + +TEST_F(ContainerHandleFixture, GetAsset_ShouldReturnNullptrIfTheAssetHasBeenRemoved) +{ + m_containerA.Remove(m_asset.GetHeader().uuid); + EXPECT_EQ(m_handle->GetAsset(), nullptr); +} + +/****************************************************************************************/ + class AssetContainerFixture: public ::testing::Test { protected: @@ -41,8 +73,8 @@ TEST_F(AssetContainerFixture, AcquireHandle_ShouldReturnTheAssociatedContainerHa AssetA asset1; std::ignore = m_containerA.Insert(asset1); - const ContainerHandle& handle = m_containerA.AcquireContainerHandle(asset1.GetHeader().uuid); - EXPECT_EQ(static_cast(handle.GetAsset())->GetHeader().uuid, asset1.GetHeader().uuid); + const ContainerHandle* handle = m_containerA.AcquireContainerHandle(asset1.GetHeader().uuid); + EXPECT_EQ(static_cast(handle->GetAsset())->GetHeader().uuid, asset1.GetHeader().uuid); } /****************************************************************************************/ @@ -51,8 +83,8 @@ TEST_F(AssetContainerFixture, AcquireHandle_ShouldCreateTheAssociatedContainerHa { AssetA asset1; - const ContainerHandle& handle = m_containerA.AcquireContainerHandle(asset1.GetHeader().uuid); - EXPECT_EQ(handle.GetAsset(), nullptr); + const ContainerHandle* handle = m_containerA.AcquireContainerHandle(asset1.GetHeader().uuid); + EXPECT_EQ(handle->GetAsset(), nullptr); } /****************************************************************************************/