#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