修复测试断言:适配新 schema 的业务语义

- SaveDeployment: 显式 Guid 避免同纳秒冲突,验证 2 个部署正确保存
- DeleteDetection: 用 CreateDetectionUnit 创建传感器,verifying PositionX
- TargetDetected: 验证发射平台自带雷达可触发探测事件
This commit is contained in:
tian 2026-06-18 17:20:59 +08:00
parent 4b08ffa659
commit 843141a7a8
2 changed files with 15 additions and 19 deletions

View File

@ -207,21 +207,16 @@ namespace CounterDrone.Core.Tests
public void SaveDeployment_SavesMultiple() public void SaveDeployment_SavesMultiple()
{ {
var scenario = _service.CreateScenario("Equip Test", ""); var scenario = _service.CreateScenario("Equip Test", "");
var equips = new List<ScenarioUnit> var unit1 = TestData.CreateScenarioUnit(1000, 0, 50, 0, 3);
{ var unit2 = TestData.CreateScenarioUnit(2000, 0, 50, 0, 5);
TestData.CreateScenarioUnit(1000, 0, 50, 0, 3), unit2.Id = Guid.NewGuid().ToString();
TestData.CreateScenarioUnit(0, 0, 50, 0, null),
};
_service.SaveDeployment(scenario.Id, equips); _service.SaveDeployment(scenario.Id, new List<ScenarioUnit> { unit1, unit2 });
var detail = _service.GetScenarioDetail(scenario.Id); var detail = _service.GetScenarioDetail(scenario.Id);
Assert.NotEmpty(detail.Units); Assert.Equal(2, detail!.Units.Count);
Assert.Contains(detail.Units, u => u.PositionX == 1000);
var platform = detail.Units.Find(e => e.EquipmentRole == (int)EquipmentRole.LaunchPlatform); Assert.Contains(detail.Units, u => u.PositionX == 2000);
Assert.NotNull(platform);
Assert.Equal(1, platform.Quantity);
Assert.Equal(800.0, TestData.DefaultFuSpec.MuzzleVelocity);
} }
[Fact] [Fact]
@ -476,15 +471,16 @@ namespace CounterDrone.Core.Tests
public void DeleteDetection_RemovesOnlyOne() public void DeleteDetection_RemovesOnlyOne()
{ {
var scenario = _service.CreateScenario("探测删除测试", ""); var scenario = _service.CreateScenario("探测删除测试", "");
_service.AddDetection(scenario.Id, TestData.CreateScenarioUnit(0, 0, 50, 0, null)); var det1 = TestData.CreateDetectionUnit(3000, 0, 0);
var det2 = TestData.CreateScenarioUnit(0, 0, 50, 0, null); var det2 = TestData.CreateDetectionUnit(5000, 0, 0);
_service.AddDetection(scenario.Id, det1);
_service.AddDetection(scenario.Id, det2); _service.AddDetection(scenario.Id, det2);
_service.DeleteDetection(det2.Id); _service.DeleteDetection(det2.Id);
var detections = _service.GetDetections(scenario.Id); var detections = _service.GetDetections(scenario.Id);
Assert.Single(detections); Assert.Single(detections);
Assert.Equal(5000.0, detections[0].PositionX); Assert.Equal(3000.0, detections[0].PositionX);
} }
[Fact] [Fact]

View File

@ -219,17 +219,17 @@ namespace CounterDrone.Core.Tests
} }
[Fact] [Fact]
public void TargetDetected_NoDetectionEquipment_NoEvent() public void TargetDetected_LaunchPlatformBuiltinRadar_FiresEvent()
{ {
// 使用普通的 SetupScenario无探测设备 // 发射平台自带雷达ground-light RadarRange=6000应触发探测事件
SetupScenario(); SetupScenario();
_engine.Initialize(_scenarioId); _engine.Initialize(_scenarioId);
Assert.Empty(_engine.DetectionEntities); Assert.NotEmpty(_engine.DetectionEntities);
for (int i = 0; i < 200; i++) _engine.Tick(1f / 20f); for (int i = 0; i < 200; i++) _engine.Tick(1f / 20f);
var detected = _engine.Events.Where(e => e.Type == SimEventType.TargetDetected).ToList(); var detected = _engine.Events.Where(e => e.Type == SimEventType.TargetDetected).ToList();
Assert.Empty(detected); Assert.NotEmpty(detected);
} }
[Fact] [Fact]