neon-sprawl/server/NeonSprawl.Server.Tests/Game/Interaction/HorizontalReachTests.cs

45 lines
1.3 KiB
C#

using NeonSprawl.Server.Game.World;
using Xunit;
namespace NeonSprawl.Server.Tests.Game.Interaction;
public class HorizontalReachTests
{
[Fact]
public void HorizontalDistance_IgnoresY()
{
// Y is not a parameter; identical X/Z → zero horizontal separation regardless of implied height difference.
var d = HorizontalReach.HorizontalDistance(1, 2, 1, 2);
Assert.Equal(0, d);
}
[Fact]
public void IsWithinHorizontalRadius_AtExactBoundary_ReturnsTrue()
{
Assert.True(HorizontalReach.IsWithinHorizontalRadius(0, 0, 3, 0, 3));
}
[Fact]
public void IsWithinHorizontalRadius_JustInside_ReturnsTrue()
{
const double radius = 3.0;
const double eps = 1e-10;
Assert.True(HorizontalReach.IsWithinHorizontalRadius(0, 0, radius - eps, 0, radius));
}
[Fact]
public void IsWithinHorizontalRadius_JustOutside_ReturnsFalse()
{
const double radius = 3.0;
const double eps = 1e-7;
Assert.False(HorizontalReach.IsWithinHorizontalRadius(0, 0, radius + eps, 0, radius));
}
[Fact]
public void IsWithinHorizontalRadius_NegativeRadius_ThrowsArgumentOutOfRange()
{
Assert.Throws<ArgumentOutOfRangeException>(() =>
HorizontalReach.IsWithinHorizontalRadius(0, 0, 0, 0, -1.0));
}
}