#include #include #include #include using namespace XCEngine::Resources; using namespace XCEngine::Math; namespace { TEST(MeshImportSettings, DefaultConstructor) { MeshImportSettings settings; EXPECT_EQ(settings.GetImportFlags(), MeshImportFlags::None); EXPECT_FLOAT_EQ(settings.GetScale(), 1.0f); EXPECT_EQ(settings.GetOffset(), Vector3::Zero()); EXPECT_TRUE(settings.GetAxisConversion()); EXPECT_FALSE(settings.GetMergeMeshes()); EXPECT_FLOAT_EQ(settings.GetOptimizeThreshold(), 0.3f); EXPECT_FLOAT_EQ(settings.GetImportScale(), 1.0f); EXPECT_FLOAT_EQ(settings.GetThreshold(), 0.0f); } TEST(MeshImportSettings, SetImportFlags) { MeshImportSettings settings; settings.SetImportFlags(MeshImportFlags::FlipUVs | MeshImportFlags::GenerateNormals); EXPECT_TRUE(settings.HasImportFlag(MeshImportFlags::FlipUVs)); EXPECT_TRUE(settings.HasImportFlag(MeshImportFlags::GenerateNormals)); EXPECT_FALSE(settings.HasImportFlag(MeshImportFlags::GenerateTangents)); } TEST(MeshImportSettings, AddImportFlag) { MeshImportSettings settings; settings.AddImportFlag(MeshImportFlags::FlipUVs); EXPECT_TRUE(settings.HasImportFlag(MeshImportFlags::FlipUVs)); } TEST(MeshImportSettings, RemoveImportFlag) { MeshImportSettings settings; settings.SetImportFlags(MeshImportFlags::FlipUVs | MeshImportFlags::GenerateNormals); settings.RemoveImportFlag(MeshImportFlags::FlipUVs); EXPECT_FALSE(settings.HasImportFlag(MeshImportFlags::FlipUVs)); EXPECT_TRUE(settings.HasImportFlag(MeshImportFlags::GenerateNormals)); } TEST(MeshImportSettings, SetScale) { MeshImportSettings settings; settings.SetScale(2.0f); EXPECT_FLOAT_EQ(settings.GetScale(), 2.0f); } TEST(MeshImportSettings, SetOffset) { MeshImportSettings settings; Vector3 offset(1.0f, 2.0f, 3.0f); settings.SetOffset(offset); EXPECT_EQ(settings.GetOffset(), offset); } TEST(MeshImportSettings, SetAxisConversion) { MeshImportSettings settings; settings.SetAxisConversion(false); EXPECT_FALSE(settings.GetAxisConversion()); } TEST(MeshImportSettings, SetMergeMeshes) { MeshImportSettings settings; settings.SetMergeMeshes(true); EXPECT_TRUE(settings.GetMergeMeshes()); } TEST(MeshImportSettings, SetOptimizeThreshold) { MeshImportSettings settings; settings.SetOptimizeThreshold(0.5f); EXPECT_FLOAT_EQ(settings.GetOptimizeThreshold(), 0.5f); } TEST(MeshImportSettings, SetImportScale) { MeshImportSettings settings; settings.SetImportScale(0.5f); EXPECT_FLOAT_EQ(settings.GetImportScale(), 0.5f); } TEST(MeshImportSettings, SetThreshold) { MeshImportSettings settings; settings.SetThreshold(0.01f); EXPECT_FLOAT_EQ(settings.GetThreshold(), 0.01f); } TEST(MeshImportSettings, Clone) { MeshImportSettings settings; settings.SetImportFlags(MeshImportFlags::FlipUVs | MeshImportFlags::GenerateNormals); settings.SetScale(2.0f); settings.SetMergeMeshes(true); auto cloned = settings.Clone(); ASSERT_NE(cloned, nullptr); MeshImportSettings* clonedSettings = static_cast(cloned.get()); EXPECT_TRUE(clonedSettings->HasImportFlag(MeshImportFlags::FlipUVs)); EXPECT_TRUE(clonedSettings->HasImportFlag(MeshImportFlags::GenerateNormals)); EXPECT_FLOAT_EQ(clonedSettings->GetScale(), 2.0f); EXPECT_TRUE(clonedSettings->GetMergeMeshes()); } } // namespace