82 lines
2.0 KiB
C#
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);
|
|
}
|
|
}
|