2026-03-26 02:24:11 +08:00
|
|
|
#include <gtest/gtest.h>
|
|
|
|
|
|
|
|
|
|
#include <XCEngine/Components/AudioListenerComponent.h>
|
|
|
|
|
#include <XCEngine/Components/AudioSourceComponent.h>
|
|
|
|
|
#include <XCEngine/Components/CameraComponent.h>
|
|
|
|
|
#include <XCEngine/Components/ComponentFactoryRegistry.h>
|
|
|
|
|
#include <XCEngine/Components/GameObject.h>
|
|
|
|
|
#include <XCEngine/Components/LightComponent.h>
|
2026-03-26 20:43:17 +08:00
|
|
|
#include <XCEngine/Components/MeshFilterComponent.h>
|
|
|
|
|
#include <XCEngine/Components/MeshRendererComponent.h>
|
2026-03-26 02:24:11 +08:00
|
|
|
|
|
|
|
|
using namespace XCEngine::Components;
|
|
|
|
|
|
|
|
|
|
namespace {
|
|
|
|
|
|
|
|
|
|
TEST(ComponentFactoryRegistry_Test, BuiltInTypesAreRegistered) {
|
|
|
|
|
auto& registry = ComponentFactoryRegistry::Get();
|
|
|
|
|
|
|
|
|
|
EXPECT_TRUE(registry.IsRegistered("Camera"));
|
|
|
|
|
EXPECT_TRUE(registry.IsRegistered("Light"));
|
|
|
|
|
EXPECT_TRUE(registry.IsRegistered("AudioSource"));
|
|
|
|
|
EXPECT_TRUE(registry.IsRegistered("AudioListener"));
|
2026-03-26 20:43:17 +08:00
|
|
|
EXPECT_TRUE(registry.IsRegistered("MeshFilter"));
|
|
|
|
|
EXPECT_TRUE(registry.IsRegistered("MeshRenderer"));
|
2026-03-26 02:24:11 +08:00
|
|
|
EXPECT_FALSE(registry.IsRegistered("Transform"));
|
|
|
|
|
EXPECT_FALSE(registry.IsRegistered("MissingComponent"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TEST(ComponentFactoryRegistry_Test, CreateBuiltInComponentsByTypeName) {
|
|
|
|
|
GameObject gameObject("FactoryTarget");
|
|
|
|
|
auto& registry = ComponentFactoryRegistry::Get();
|
|
|
|
|
|
|
|
|
|
EXPECT_NE(dynamic_cast<CameraComponent*>(registry.CreateComponent(&gameObject, "Camera")), nullptr);
|
|
|
|
|
EXPECT_NE(dynamic_cast<LightComponent*>(registry.CreateComponent(&gameObject, "Light")), nullptr);
|
|
|
|
|
EXPECT_NE(dynamic_cast<AudioSourceComponent*>(registry.CreateComponent(&gameObject, "AudioSource")), nullptr);
|
|
|
|
|
EXPECT_NE(dynamic_cast<AudioListenerComponent*>(registry.CreateComponent(&gameObject, "AudioListener")), nullptr);
|
2026-03-26 20:43:17 +08:00
|
|
|
EXPECT_NE(dynamic_cast<MeshFilterComponent*>(registry.CreateComponent(&gameObject, "MeshFilter")), nullptr);
|
|
|
|
|
EXPECT_NE(dynamic_cast<MeshRendererComponent*>(registry.CreateComponent(&gameObject, "MeshRenderer")), nullptr);
|
2026-03-26 02:24:11 +08:00
|
|
|
EXPECT_EQ(registry.CreateComponent(&gameObject, "MissingComponent"), nullptr);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} // namespace
|