summaryrefslogtreecommitdiff
path: root/Plugins/MonoGame.Extended/tests/MonoGame.Extended.Tests/Shapes/PolygonFTests.cs
blob: d052908dd9c2e4c245c89d0b4cba8f0801dd2b9a (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
using Microsoft.Xna.Framework;
using MonoGame.Extended.Shapes;
using Xunit;

namespace MonoGame.Extended.Tests.Shapes
{
    public class PolygonFTests
    {
        [Fact]
        public void Polygon_Contains_Point_Test()
        {
            var vertices = new[]
            {
                new Vector2(0, 0),
                new Vector2(10, 0),
                new Vector2(10, 10),
                new Vector2(0, 10)
            };

            var polygon = new Polygon(vertices);

            Assert.True(polygon.Contains(new Vector2(5, 5)));
            Assert.True(polygon.Contains(new Vector2(0.01f, 0.01f)));
            Assert.True(polygon.Contains(new Vector2(9.99f, 9.99f)));
            Assert.False(polygon.Contains(new Vector2(-1f, -1f)));
            Assert.False(polygon.Contains(new Vector2(-11f, -11f)));
        }

        [Fact]
        public void Polygon_Transform_Translation_Test()
        {
            var vertices = new[]
            {
                new Vector2(0, 0),
                new Vector2(10, 0),
                new Vector2(10, 10),
                new Vector2(0, 10)
            };

            var polygon = new Polygon(vertices);
            polygon.Offset(new Vector2(2, 3));

            Assert.Equal(new Vector2(2, 3), polygon.Vertices[0]);
            Assert.Equal(new Vector2(12, 3), polygon.Vertices[1]);
            Assert.Equal(new Vector2(12, 13), polygon.Vertices[2]);
            Assert.Equal(new Vector2(2, 13), polygon.Vertices[3]);
        }

        [Fact]
        public void Polygon_Transform_Rotation_Test()
        {
            var vertices = new[]
            {
                new Vector2(-5, -5),
                new Vector2(5, 10),
                new Vector2(-5, 10)
            };

            var polygon = new Polygon(vertices);
            polygon.Rotate(MathHelper.ToRadians(90));

            const float tolerance = 0.01f;
            Assert.True(new Vector2(5, -5).EqualsWithTolerence(polygon.Vertices[0], tolerance));
            Assert.True(new Vector2(-10, 5).EqualsWithTolerence(polygon.Vertices[1], tolerance));
            Assert.True(new Vector2(-10, -5).EqualsWithTolerence(polygon.Vertices[2], tolerance));
        }

        [Fact]
        public void Polygon_Transform_Scale_Test()
        {
            var vertices = new[]
            {
                new Vector2(0, -1),
                new Vector2(1, 1),
                new Vector2(-1, 1)
            };

            var polygon = new Polygon(vertices);
            polygon.Scale(new Vector2(1, -0.5f));

            const float tolerance = 0.01f;
            Assert.True(new Vector2(0, -0.5f).EqualsWithTolerence(polygon.Vertices[0], tolerance), "0");
            Assert.True(new Vector2(2f, 0.5f).EqualsWithTolerence(polygon.Vertices[1], tolerance), "1");
            Assert.True(new Vector2(-2f, 0.5f).EqualsWithTolerence(polygon.Vertices[2], tolerance), "2");
        }
    }
}