#include #include #include #include #include using namespace XCEngine::Resources; using namespace XCEngine::Containers; namespace { std::string GetTextureFixturePath(const char* fileName) { return (std::filesystem::path(XCENGINE_TEST_FIXTURES_DIR) / "Resources" / "Texture" / fileName).string(); } TEST(TextureLoader, GetResourceType) { TextureLoader loader; EXPECT_EQ(loader.GetResourceType(), ResourceType::Texture); } TEST(TextureLoader, GetSupportedExtensions) { TextureLoader loader; auto extensions = loader.GetSupportedExtensions(); EXPECT_GE(extensions.Size(), 1u); } TEST(TextureLoader, CanLoad) { TextureLoader loader; EXPECT_TRUE(loader.CanLoad("test.png")); EXPECT_TRUE(loader.CanLoad("test.jpg")); EXPECT_TRUE(loader.CanLoad("test.tga")); EXPECT_FALSE(loader.CanLoad("test.txt")); EXPECT_FALSE(loader.CanLoad("test.obj")); } TEST(TextureLoader, LoadInvalidPath) { TextureLoader loader; LoadResult result = loader.Load("invalid/path/texture.png"); EXPECT_FALSE(result); } TEST(TextureLoader, LoadValidBmpTexture) { TextureLoader loader; const std::string path = GetTextureFixturePath("checker.bmp"); LoadResult result = loader.Load(path.c_str()); ASSERT_TRUE(result); ASSERT_NE(result.resource, nullptr); auto* texture = static_cast(result.resource); EXPECT_EQ(texture->GetWidth(), 2u); EXPECT_EQ(texture->GetHeight(), 2u); EXPECT_EQ(texture->GetTextureType(), TextureType::Texture2D); EXPECT_EQ(texture->GetFormat(), TextureFormat::RGBA8_UNORM); EXPECT_EQ(texture->GetPixelDataSize(), 16u); delete texture; } } // namespace