using System.Collections.Generic; using CounterDrone.Core.Models; using CounterDrone.Core.Services; using CounterDrone.Core.Simulation; using Xunit; namespace CounterDrone.Core.Tests { public class ReportGeneratorTests { [Fact] public void DetermineInterceptResult_AllDestroyed_Success() { var gen = new ReportGenerator(); Assert.Equal(InterceptResult.Success, gen.DetermineInterceptResult(3, 0, 3)); } [Fact] public void DetermineInterceptResult_Partial() { var gen = new ReportGenerator(); Assert.Equal(InterceptResult.Partial, gen.DetermineInterceptResult(2, 1, 3)); } [Fact] public void DetermineInterceptResult_AllFailed() { var gen = new ReportGenerator(); Assert.Equal(InterceptResult.Failed, gen.DetermineInterceptResult(0, 3, 3)); } [Fact] public void Generate_ProducesReportContent() { var gen = new ReportGenerator(); var config = new TaskFullConfig { Task = new SimTask { Name = "测试任务", TaskNumber = "SIM-001" }, Targets = new List { new TargetConfig { Quantity = 1 } }, Equipment = new List { new EquipmentDeployment { EquipmentRole = (int)EquipmentRole.LaunchPlatform, Quantity = 3 }, new EquipmentDeployment { EquipmentRole = (int)EquipmentRole.Detection, Quantity = 1 }, }, Cloud = new CloudDispersal { AerosolType = (int)AerosolType.InertGas }, }; var events = new List { new SimEvent { Type = SimEventType.MunitionLaunched, OccurredAt = 5f, Description = "发射" }, new SimEvent { Type = SimEventType.CloudGenerated, OccurredAt = 10f, Description = "云团" }, new SimEvent { Type = SimEventType.DroneDestroyed, OccurredAt = 15f, Description = "摧毁" }, }; var content = gen.Generate(config, events, DroneStatus.Destroyed, 30f); Assert.Contains("仿真评估报告", content); Assert.Contains("测试任务", content); Assert.Contains("✅ 成功拦截", content); Assert.Contains("发射", content); } } }