using CounterDrone.Core.Algorithms; using Xunit; namespace CounterDrone.Core.Tests { public class AlgorithmFactoryTests { [Fact] public void Create_ReturnsDefaultImplementations() { var dispersion = AlgorithmFactory.Create(); Assert.IsType(dispersion); var damage = AlgorithmFactory.Create(); Assert.IsType(damage); var advisor = AlgorithmFactory.Create(); Assert.IsType(advisor); } [Fact] public void Register_ReplacesImplementation() { // 替换为自定义实现 AlgorithmFactory.Register(); var instance = AlgorithmFactory.Create(); Assert.IsType(instance); // 还原 AlgorithmFactory.Register(); } } public class MockDispersion : ICloudDispersionModel { public Vector3 Center => new(); public float Radius => 100f; public float CoreDensity => 1f; public float EffectiveRadius => 100f; public ParticleParams Particles => new(); public bool IsDissipated => false; public void Initialize(CounterDrone.Core.Models.AmmunitionSpec ammo, CounterDrone.Core.Models.CombatScene env, Vector3 releasePos, float releaseTime) { } public void Tick(float deltaTime, float windSpeed, CounterDrone.Core.Models.WindDirection windDir) { } } }