From acea7b2e728787a0d83bbf83c8c1f042d2c32e7e Mon Sep 17 00:00:00 2001 From: chai <215380520@qq.com> Date: Mon, 3 Jun 2024 10:15:45 +0800 Subject: + plugins project --- .../tests/MonoGame.Extended.Tests/AngleTest.cs | 92 ++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 Plugins/MonoGame.Extended/tests/MonoGame.Extended.Tests/AngleTest.cs (limited to 'Plugins/MonoGame.Extended/tests/MonoGame.Extended.Tests/AngleTest.cs') diff --git a/Plugins/MonoGame.Extended/tests/MonoGame.Extended.Tests/AngleTest.cs b/Plugins/MonoGame.Extended/tests/MonoGame.Extended.Tests/AngleTest.cs new file mode 100644 index 0000000..2f2762b --- /dev/null +++ b/Plugins/MonoGame.Extended/tests/MonoGame.Extended.Tests/AngleTest.cs @@ -0,0 +1,92 @@ +using Microsoft.Xna.Framework; +using Xunit; + +namespace MonoGame.Extended.Tests +{ + public class AngleTest + { + private const float _delta = 0.00001f; + private readonly WithinDeltaEqualityComparer _withinDeltaEqualityComparer = new(_delta); + + [Fact] + public void ConstructorTest() + { + const float value = 0.5f; + + // ReSharper disable once RedundantArgumentDefaultValue + var radians = new Angle(value, AngleType.Radian); + var degrees = new Angle(value, AngleType.Degree); + var gradians = new Angle(value, AngleType.Gradian); + var revolutions = new Angle(value, AngleType.Revolution); + + Assert.Equal(0.5f, radians.Radians, _withinDeltaEqualityComparer); + Assert.Equal(0.5f, degrees.Degrees, _withinDeltaEqualityComparer); + Assert.Equal(0.5f, gradians.Gradians, _withinDeltaEqualityComparer); + Assert.Equal(0.5f, revolutions.Revolutions, _withinDeltaEqualityComparer); + } + + [Fact] + public void ConversionTest() + { + //from radians + var radians = new Angle(MathHelper.Pi); + Assert.Equal(180f, radians.Degrees, _withinDeltaEqualityComparer); + Assert.Equal(200f, radians.Gradians, _withinDeltaEqualityComparer); + Assert.Equal(0.5f, radians.Revolutions, _withinDeltaEqualityComparer); + + //to radians + var degrees = new Angle(180f, AngleType.Degree); + var gradians = new Angle(200f, AngleType.Gradian); + var revolutions = new Angle(0.5f, AngleType.Revolution); + + Assert.Equal(MathHelper.Pi, degrees.Radians, _withinDeltaEqualityComparer); + Assert.Equal(MathHelper.Pi, gradians.Radians, _withinDeltaEqualityComparer); + Assert.Equal(MathHelper.Pi, revolutions.Radians, _withinDeltaEqualityComparer); + } + + [Fact] + public void WrapTest() + { + for (var f = -10f; f < 10f; f += 0.1f) + { + var wrappositive = new Angle(f); + wrappositive.WrapPositive(); + + var wrap = new Angle(f); + wrap.Wrap(); + + Assert.True(wrappositive.Radians >= 0); + Assert.True(wrappositive.Radians < 2d * MathHelper.Pi); + + Assert.True(wrap.Radians >= -MathHelper.Pi); + Assert.True(wrap.Radians < MathHelper.Pi); + } + } + + [Fact] + public void VectorTest() + { + var angle = Angle.FromVector(Vector2.One); + Assert.Equal(-MathHelper.Pi / 4f, angle.Radians, _withinDeltaEqualityComparer); + Assert.Equal(10f, angle.ToVector(10f).Length()); + + angle = Angle.FromVector(Vector2.UnitX); + Assert.Equal(0, angle.Radians, _withinDeltaEqualityComparer); + Assert.True(Vector2.UnitX.EqualsWithTolerence(angle.ToUnitVector())); + + angle = Angle.FromVector(-Vector2.UnitY); + Assert.Equal(MathHelper.Pi / 2f, angle.Radians, _withinDeltaEqualityComparer); + Assert.True((-Vector2.UnitY).EqualsWithTolerence(angle.ToUnitVector())); + } + + [Fact] + public void EqualsTest() + { + var angle1 = new Angle(0); + var angle2 = new Angle(MathHelper.Pi * 2f); + Assert.True(angle1 == angle2); + angle2.Radians = MathHelper.Pi * 4f; + Assert.True(angle1.Equals(angle2)); + } + } +} -- cgit v1.1-26-g67d0