44 lines
1.6 KiB
C#
44 lines
1.6 KiB
C#
using CounterDrone.Core.Simulation;
|
|
using Xunit;
|
|
|
|
namespace CounterDrone.Core.Tests
|
|
{
|
|
public class ControlZoneEntityTests
|
|
{
|
|
private const string TestZoneJson =
|
|
"[{\"X\":1200,\"Y\":0,\"Z\":-200},{\"X\":1800,\"Y\":0,\"Z\":-200},{\"X\":1800,\"Y\":0,\"Z\":200},{\"X\":1200,\"Y\":0,\"Z\":200}]";
|
|
|
|
[Fact]
|
|
public void ContainsPoint_Center_ReturnsTrue()
|
|
{
|
|
var zone = new ControlZoneEntity("z1", "test", TestZoneJson, 0, 1000);
|
|
// 手动检查顶点数
|
|
Assert.Equal(4, zone.Vertices.Count);
|
|
Assert.Equal(1200f, zone.Vertices[0].X, 1);
|
|
Assert.Equal(-200f, zone.Vertices[0].Z, 1);
|
|
Assert.True(zone.ContainsPoint(1500, 300, 0), "点(1500,300,0)应在矩形内");
|
|
}
|
|
|
|
[Fact]
|
|
public void ContainsPoint_OutsideX_ReturnsFalse()
|
|
{
|
|
var zone = new ControlZoneEntity("z1", "test", TestZoneJson, 0, 1000);
|
|
Assert.False(zone.ContainsPoint(2000, 300, 0), "点(2000,300,0)应在矩形外");
|
|
}
|
|
|
|
[Fact]
|
|
public void ContainsPoint_OutsideZ_ReturnsFalse()
|
|
{
|
|
var zone = new ControlZoneEntity("z1", "test", TestZoneJson, 0, 1000);
|
|
Assert.False(zone.ContainsPoint(1500, 300, 500), "点(1500,300,500) Z超出");
|
|
}
|
|
|
|
[Fact]
|
|
public void ContainsPoint_OutsideAltitude_ReturnsFalse()
|
|
{
|
|
var zone = new ControlZoneEntity("z1", "test", TestZoneJson, 0, 1000);
|
|
Assert.False(zone.ContainsPoint(1500, 1200, 0), "海拔 1200 超出上限");
|
|
}
|
|
}
|
|
}
|