summaryrefslogtreecommitdiff
path: root/Plugins/MonoGame.Extended/tests/MonoGame.Extended.Tests/Vector2ExtensionsTests.cs
blob: aa1d889db4231a617486ba39fbcfd8c9e9498c7b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
using Microsoft.Xna.Framework;
using Xunit;

namespace MonoGame.Extended.Tests
{
    public class Vector2ExtensionsTests
    {
        [Fact]
        public void Vector2_EqualsWithTolerence_Test()
        {
            var a = new Vector2(1f, 1f);
            var b = new Vector2(1.0000001f, 1.0000001f);

            Assert.False(a.Equals(b));
            Assert.True(a.EqualsWithTolerence(b));
        }

        [Fact]
        public void Vector2_NormalizedCopy_Test()
        {
            var a = new Vector2(5, -10);
            var b = a.NormalizedCopy();

            Assert.True(new Vector2(0.4472136f, -0.8944272f).EqualsWithTolerence(b));
        }

        [Fact]
        public void Vector2_Perpendicular_Test()
        {
            // http://mathworld.wolfram.com/PerpendicularVector.html
            var a = new Vector2(5, -10);
            var b = a.PerpendicularClockwise();
            var c = a.PerpendicularCounterClockwise();

            Assert.Equal(new Vector2(-10, -5), b);
            Assert.Equal(new Vector2(10, 5), c);
        }

        [Fact]
        public void Vector2_Rotate_90_Degrees_Test()
        {
            var a = new Vector2(0, -10);
            var b = a.Rotate(MathHelper.ToRadians(90));

            Assert.True(new Vector2(10, 0).EqualsWithTolerence(b));
        }

        [Fact]
        public void Vector2_Rotate_360_Degrees_Test()
        {
            var a = new Vector2(0, 10);
            var b = a.Rotate(MathHelper.ToRadians(360));

            Assert.True(new Vector2(0, 10).EqualsWithTolerence(b));
        }

        [Fact]
        public void Vector2_Rotate_45_Degrees_Test()
        {
            var a = new Vector2(0, -10);
            var b = a.Rotate(MathHelper.ToRadians(45));

            Assert.True(new Vector2(7.071068f, -7.071068f).EqualsWithTolerence(b));
        }

        [Fact]
        public void Vector2_Truncate_Test()
        {
            var a = new Vector2(10, 10);
            var b = a.Truncate(5);

            Assert.Equal(5f, b.Length(), 3);
        }

        [Fact]
        public void Vector2_IsNaN_Test()
        {
            var a = new Vector2(float.NaN, 10);
            var b = new Vector2(10, float.NaN);
            var c = new Vector2(float.NaN, float.NaN);
            var d = new Vector2(10, 10);

            Assert.True(a.IsNaN());
            Assert.True(b.IsNaN());
            Assert.True(c.IsNaN());
            Assert.False(d.IsNaN());
        }

        [Fact]
        public void Vector2_ToAngle_Test()
        {
            var a = new Vector2(0, -10);
            var b = new Vector2(10, 0);
            var c = -Vector2.UnitY.Rotate(MathHelper.ToRadians(45));

            Assert.Equal(MathHelper.ToRadians(0), a.ToAngle());
            Assert.Equal(MathHelper.ToRadians(90), b.ToAngle());
            Assert.Equal(MathHelper.ToRadians(45), c.ToAngle());
        }
    }
}