using System.Linq; using Arch.Core; using GFramework.Core.Abstractions.properties; using GFramework.Core.architecture; using GFramework.Core.ioc; using GFramework.Ecs.Arch.Abstractions; namespace GFramework.Ecs.Arch.Tests.integration; /// /// 自动注册集成测试 /// [TestFixture] public class AutoRegistrationTests { [SetUp] public void Setup() { _container = new MicrosoftDiContainer(); _context = new ArchitectureContext(_container); } [TearDown] public void TearDown() { _container?.Clear(); _context = null; } private MicrosoftDiContainer? _container; private ArchitectureContext? _context; /// /// 测试 Arch ECS 模块是否自动注册 /// [Test] public void ArchEcsModule_Should_Be_Auto_Registered() { // Arrange - 手动触发模块初始化器(模拟自动注册) ArchModuleInitializer.Initialize(); var services = new ArchitectureServices(); var properties = new ArchitectureProperties(); // Act services.ModuleManager.RegisterBuiltInModules(services.Container, properties); var modules = services.ModuleManager.GetModules(); // Assert var archModule = modules.FirstOrDefault(m => m.ModuleName == nameof(ArchEcsModule)); Assert.That(archModule, Is.Not.Null, "ArchEcsModule should be auto-registered"); Assert.That(archModule, Is.InstanceOf()); } /// /// 测试 World 是否正确注册到容器 /// [Test] public void World_Should_Be_Registered_In_Container() { // Arrange - 手动触发模块初始化器 ArchModuleInitializer.Initialize(); var services = new ArchitectureServices(); var properties = new ArchitectureProperties(); // Act services.ModuleManager.RegisterBuiltInModules(services.Container, properties); services.ModuleManager.InitializeAllAsync(false).Wait(); // Assert var world = services.Container.Get(); Assert.That(world, Is.Not.Null, "World should be registered in container"); } }