烟幕测试的bug修复

This commit is contained in:
Tian jianyong 2025-04-15 18:40:54 +08:00
parent 538097f815
commit 4640aa36f8

View File

@ -207,12 +207,14 @@ namespace ThreatSource.Tests.Jamming
}
[Theory]
[InlineData(0, 0, 10, true)] // 正对墙面中心
[InlineData(20, 0, 10, true)] // 斜向墙面但在宽度范围内
[InlineData(-50, 0, -10, false)] // 在墙外(观察者和目标都在墙外)
[InlineData(0, 15, 0, false)] // 高度超出范围
[InlineData(0, 0, 0, 0, 5.0, true)] // 直接穿过墙中心:观察者(0,0,-10) -> 目标(0,0,10)
[InlineData(20, 0, 0, 0, 7.07, true)] // 斜向穿过墙面:观察者(20,0,-10) -> 目标(0,0,10)
[InlineData(-50, 0, -50, 0, 0.0, false)] // 在墙外:观察者(-50,0,-10) -> 目标(-50,0,10)
[InlineData(0, 15, 0, 15, 0.0, false)] // 超出高度范围:观察者(0,15,-10) -> 目标(0,15,10)
public void GetSmokeThicknessOnLine_WallSmoke_ReturnsCorrectThickness(
double observerX, double observerY, double expectedThickness, bool shouldIntersect)
double observerX, double observerY,
double targetX, double targetY,
double expectedThickness, bool shouldIntersect)
{
// Arrange
var config = new SmokeGrenadeConfig
@ -233,8 +235,9 @@ namespace ThreatSource.Tests.Jamming
var smokeGrenade = new SmokeGrenade("test", config, motionParams, _simulationManager);
smokeGrenade.Activate();
// 根据参数设置观察者和目标位置
Vector3D observer = new(observerX, observerY, -10);
Vector3D target = new(observerX, observerY, 10);
Vector3D target = new(targetX, targetY, 10);
// Act
double thickness = smokeGrenade.GetSmokeThicknessOnLine(observer, target);
@ -243,7 +246,8 @@ namespace ThreatSource.Tests.Jamming
if (shouldIntersect)
{
Assert.True(thickness > 0);
Assert.True(thickness >= config.Thickness); // 斜向穿透时厚度会更大
// 验证具体厚度值允许0.1米的误差
Assert.Equal(expectedThickness, thickness, 0.1);
}
else
{