diff --git a/tests/Resources/CMakeLists.txt b/tests/Resources/CMakeLists.txt index 4534f83a..4f840494 100644 --- a/tests/Resources/CMakeLists.txt +++ b/tests/Resources/CMakeLists.txt @@ -5,6 +5,7 @@ set(RESOURCES_TEST_SOURCES test_resource_types.cpp test_resource_guid.cpp + test_iresource.cpp ) add_executable(xcengine_resources_tests ${RESOURCES_TEST_SOURCES}) diff --git a/tests/Resources/test_iresource.cpp b/tests/Resources/test_iresource.cpp new file mode 100644 index 00000000..c47f864c --- /dev/null +++ b/tests/Resources/test_iresource.cpp @@ -0,0 +1,69 @@ +#include +#include +#include +#include + +using namespace XCEngine::Resources; +using namespace XCEngine::Containers; + +namespace { + +class TestResource : public IResource { +public: + ResourceType GetType() const override { return ResourceType::Texture; } + const String& GetName() const override { return m_name; } + const String& GetPath() const override { return m_path; } + ResourceGUID GetGUID() const override { return m_guid; } + bool IsValid() const override { return m_isValid; } + size_t GetMemorySize() const override { return m_memorySize; } + void Release() override { delete this; } +}; + +TEST(IResource, Initialize) { + TestResource* resource = new TestResource(); + + IResource::ConstructParams params; + params.name = "TestTexture"; + params.path = "textures/test.png"; + params.guid = ResourceGUID(12345); + params.memorySize = 1024; + + resource->Initialize(params); + + EXPECT_EQ(resource->GetName(), "TestTexture"); + EXPECT_EQ(resource->GetPath(), "textures/test.png"); + EXPECT_EQ(resource->GetGUID().value, 12345u); + EXPECT_EQ(resource->GetMemorySize(), 1024u); + EXPECT_TRUE(resource->IsValid()); + + resource->Release(); +} + +TEST(IResource, SetInvalid) { + TestResource* resource = new TestResource(); + + IResource::ConstructParams params; + params.name = "Test"; + params.path = "test.png"; + params.guid = ResourceGUID(1); + params.memorySize = 100; + + resource->Initialize(params); + EXPECT_TRUE(resource->IsValid()); + + resource->SetInvalid(); + EXPECT_FALSE(resource->IsValid()); + + resource->Release(); +} + +TEST(IResource, DefaultValues) { + TestResource* resource = new TestResource(); + + EXPECT_EQ(resource->GetMemorySize(), 0u); + EXPECT_FALSE(resource->IsValid()); + + resource->Release(); +} + +} // namespace