| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- 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));
- }
- }
- }
|