Files
One_click_run/tests/OneClickRun.Core.Tests/WheelMathTests.cs
T

82 lines
2.0 KiB
C#

using OneClickRun.Core.Logic;
using Xunit;
namespace OneClickRun.Core.Tests;
public class WheelMathTests
{
[Theory]
[InlineData(0, 0)]
[InlineData(44.9, 0)]
[InlineData(45, 1)]
[InlineData(90, 2)]
[InlineData(359.9, 7)]
[InlineData(-45, 7)]
[InlineData(360, 0)]
public void GetSectorIndex_MapsAngles(double angle, int expected)
{
Assert.Equal(expected, WheelMath.GetSectorIndex(8, angle));
}
[Fact]
public void GetSectorIndex_SingleSector_AlwaysZero()
{
Assert.Equal(0, WheelMath.GetSectorIndex(1, 123.4));
}
[Fact]
public void GetSectorIndex_NoSectors_ReturnsMinusOne()
{
Assert.Equal(-1, WheelMath.GetSectorIndex(0, 10));
}
[Theory]
[InlineData(0, -1, 0)]
[InlineData(1, 0, 90)]
[InlineData(0, 1, 180)]
[InlineData(-1, 0, 270)]
public void AngleFromVector_CardinalDirections(double dx, double dy, double expected)
{
Assert.Equal(expected, WheelMath.AngleFromVector(dx, dy), 3);
}
[Fact]
public void PolarPoint_Top()
{
var (x, y) = WheelMath.PolarPoint(100, 100, 50, 0);
Assert.Equal(100, x, 3);
Assert.Equal(50, y, 3);
}
[Fact]
public void PolarPoint_Right()
{
var (x, y) = WheelMath.PolarPoint(100, 100, 50, 90);
Assert.Equal(150, x, 3);
Assert.Equal(100, y, 3);
}
[Fact]
public void TryGetSwipeIndex_DeadZone_ReturnsFalse()
{
Assert.False(WheelMath.TryGetSwipeIndex(8, 5, 0, 10, out _));
}
[Fact]
public void TryGetSwipeIndex_NoCommands_ReturnsFalse()
{
Assert.False(WheelMath.TryGetSwipeIndex(0, 100, 0, 10, out _));
}
[Theory]
[InlineData(0, -100, 0)]
[InlineData(100, 0, 2)]
[InlineData(0, 100, 4)]
[InlineData(-100, 0, 6)]
public void TryGetSwipeIndex_Directions(double dx, double dy, int expected)
{
Assert.True(WheelMath.TryGetSwipeIndex(8, dx, dy, 10, out int index));
Assert.Equal(expected, index);
}
}