refactor(tests): reorganize tests directory to match engine structure
- Created tests/Core/Asset/ with tests for IResource, ResourceTypes, ResourceHandle, ResourceCache, ResourceDependencyGraph, ResourceGUID - Created tests/Core/IO/ with tests for IResourceLoader, ResourcePath, ResourceFileSystem, FileArchive, ResourcePackage - Reorganized tests/Resources/ into subdirectories: Texture/, Mesh/, Material/, Shader/, AudioClip/ - Added CMakeLists.txt for each new test subdirectory - Fixed Material.h missing ResourceManager.h include (lost during engine refactor) - tests/Core/CMakeLists.txt updated to include Asset/ and IO/ subdirectories
This commit is contained in:
144
tests/Resources/Material/test_material.cpp
Normal file
144
tests/Resources/Material/test_material.cpp
Normal file
@@ -0,0 +1,144 @@
|
||||
#include <gtest/gtest.h>
|
||||
#include <XCEngine/Resources/Material/Material.h>
|
||||
#include <XCEngine/Resources/Shader/Shader.h>
|
||||
#include <XCEngine/Resources/Texture/Texture.h>
|
||||
#include <XCEngine/Core/Asset/ResourceTypes.h>
|
||||
#include <XCEngine/Core/Math/Vector2.h>
|
||||
#include <XCEngine/Core/Math/Vector3.h>
|
||||
#include <XCEngine/Core/Math/Vector4.h>
|
||||
|
||||
using namespace XCEngine::Resources;
|
||||
using namespace XCEngine::Math;
|
||||
|
||||
namespace {
|
||||
|
||||
TEST(Material, DefaultConstructor) {
|
||||
Material material;
|
||||
EXPECT_EQ(material.GetType(), ResourceType::Material);
|
||||
EXPECT_FALSE(material.IsValid());
|
||||
EXPECT_EQ(material.GetMemorySize(), 0u);
|
||||
}
|
||||
|
||||
TEST(Material, GetType) {
|
||||
Material material;
|
||||
EXPECT_EQ(material.GetType(), ResourceType::Material);
|
||||
}
|
||||
|
||||
TEST(Material, SetGetShader) {
|
||||
Material material;
|
||||
Shader* shader = new Shader();
|
||||
|
||||
ResourceHandle<Shader> handle(shader);
|
||||
material.SetShader(handle);
|
||||
|
||||
EXPECT_EQ(material.GetShader(), shader);
|
||||
}
|
||||
|
||||
TEST(Material, SetGetFloat) {
|
||||
Material material;
|
||||
|
||||
material.SetFloat("uTime", 1.5f);
|
||||
EXPECT_FLOAT_EQ(material.GetFloat("uTime"), 1.5f);
|
||||
}
|
||||
|
||||
TEST(Material, SetGetFloat2) {
|
||||
Material material;
|
||||
|
||||
Vector2 value(1.0f, 2.0f);
|
||||
material.SetFloat2("uUV", value);
|
||||
|
||||
Vector2 result = material.GetFloat2("uUV");
|
||||
EXPECT_FLOAT_EQ(result.x, 1.0f);
|
||||
EXPECT_FLOAT_EQ(result.y, 2.0f);
|
||||
}
|
||||
|
||||
TEST(Material, SetGetFloat3) {
|
||||
Material material;
|
||||
|
||||
Vector3 value(1.0f, 2.0f, 3.0f);
|
||||
material.SetFloat3("uPosition", value);
|
||||
|
||||
Vector3 result = material.GetFloat3("uPosition");
|
||||
EXPECT_FLOAT_EQ(result.x, 1.0f);
|
||||
EXPECT_FLOAT_EQ(result.y, 2.0f);
|
||||
EXPECT_FLOAT_EQ(result.z, 3.0f);
|
||||
}
|
||||
|
||||
TEST(Material, SetGetFloat4) {
|
||||
Material material;
|
||||
|
||||
Vector4 value(1.0f, 2.0f, 3.0f, 4.0f);
|
||||
material.SetFloat4("uColor", value);
|
||||
|
||||
Vector4 result = material.GetFloat4("uColor");
|
||||
EXPECT_FLOAT_EQ(result.x, 1.0f);
|
||||
EXPECT_FLOAT_EQ(result.y, 2.0f);
|
||||
EXPECT_FLOAT_EQ(result.z, 3.0f);
|
||||
EXPECT_FLOAT_EQ(result.w, 4.0f);
|
||||
}
|
||||
|
||||
TEST(Material, SetGetInt) {
|
||||
Material material;
|
||||
|
||||
material.SetInt("uIndex", 42);
|
||||
EXPECT_EQ(material.GetInt("uIndex"), 42);
|
||||
}
|
||||
|
||||
TEST(Material, SetGetBool) {
|
||||
Material material;
|
||||
|
||||
material.SetBool("uEnabled", true);
|
||||
EXPECT_TRUE(material.GetBool("uEnabled"));
|
||||
|
||||
material.SetBool("uEnabled", false);
|
||||
EXPECT_FALSE(material.GetBool("uEnabled"));
|
||||
}
|
||||
|
||||
TEST(Material, SetGetTexture) {
|
||||
Material material;
|
||||
Texture* texture = new Texture();
|
||||
|
||||
ResourceHandle<Texture> handle(texture);
|
||||
material.SetTexture("uDiffuse", handle);
|
||||
|
||||
EXPECT_EQ(material.GetTexture("uDiffuse").Get(), texture);
|
||||
}
|
||||
|
||||
TEST(Material, HasProperty) {
|
||||
Material material;
|
||||
|
||||
EXPECT_FALSE(material.HasProperty("uTime"));
|
||||
|
||||
material.SetFloat("uTime", 1.0f);
|
||||
EXPECT_TRUE(material.HasProperty("uTime"));
|
||||
}
|
||||
|
||||
TEST(Material, RemoveProperty) {
|
||||
Material material;
|
||||
|
||||
material.SetFloat("uTime", 1.0f);
|
||||
EXPECT_TRUE(material.HasProperty("uTime"));
|
||||
|
||||
material.RemoveProperty("uTime");
|
||||
EXPECT_FALSE(material.HasProperty("uTime"));
|
||||
}
|
||||
|
||||
TEST(Material, ClearAllProperties) {
|
||||
Material material;
|
||||
|
||||
material.SetFloat("uTime", 1.0f);
|
||||
material.SetFloat3("uPosition", Vector3(1.0f, 2.0f, 3.0f));
|
||||
material.SetInt("uIndex", 1);
|
||||
|
||||
EXPECT_TRUE(material.HasProperty("uTime"));
|
||||
EXPECT_TRUE(material.HasProperty("uPosition"));
|
||||
EXPECT_TRUE(material.HasProperty("uIndex"));
|
||||
|
||||
material.ClearAllProperties();
|
||||
|
||||
EXPECT_FALSE(material.HasProperty("uTime"));
|
||||
EXPECT_FALSE(material.HasProperty("uPosition"));
|
||||
EXPECT_FALSE(material.HasProperty("uIndex"));
|
||||
}
|
||||
|
||||
} // namespace
|
||||
Reference in New Issue
Block a user