PolygonTests.cs 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. using Microsoft.Xna.Framework;
  2. using MonoGame.Extended.Shapes;
  3. using Xunit;
  4. namespace MonoGame.Extended.Tests.Shapes
  5. {
  6. public class PolygonTests
  7. {
  8. [Fact]
  9. public void Polygon_Contains_Point_Test()
  10. {
  11. var vertices = new[]
  12. {
  13. new Vector2(0, 0),
  14. new Vector2(10, 0),
  15. new Vector2(10, 10),
  16. new Vector2(0, 10)
  17. };
  18. var polygon = new Polygon(vertices);
  19. Assert.True(polygon.Contains(new Vector2(5, 5)));
  20. Assert.True(polygon.Contains(new Vector2(0.01f, 0.01f)));
  21. Assert.True(polygon.Contains(new Vector2(9.99f, 9.99f)));
  22. Assert.False(polygon.Contains(new Vector2(-1f, -1f)));
  23. Assert.False(polygon.Contains(new Vector2(-11f, -11f)));
  24. // Reference: https://github.com/craftworkgames/MonoGame.Extended/issues/214
  25. // To maintain consistency with behavior in MonoGame, a point that exists at the edge of a polygon is
  26. // -not- contained within the polygon and should return false
  27. Assert.False(polygon.Contains(new Vector2(10.0f, 10.0f)));
  28. }
  29. [Fact]
  30. public void Polygon_Transform_Translation_Test()
  31. {
  32. var vertices = new[]
  33. {
  34. new Vector2(0, 0),
  35. new Vector2(10, 0),
  36. new Vector2(10, 10),
  37. new Vector2(0, 10)
  38. };
  39. var polygon = new Polygon(vertices);
  40. polygon.Offset(new Vector2(2, 3));
  41. Assert.Equal(new Vector2(2, 3), polygon.Vertices[0]);
  42. Assert.Equal(new Vector2(12, 3), polygon.Vertices[1]);
  43. Assert.Equal(new Vector2(12, 13), polygon.Vertices[2]);
  44. Assert.Equal(new Vector2(2, 13), polygon.Vertices[3]);
  45. }
  46. [Fact]
  47. public void Polygon_Transform_Rotation_Test()
  48. {
  49. var vertices = new[]
  50. {
  51. new Vector2(-5, -5),
  52. new Vector2(5, 10),
  53. new Vector2(-5, 10)
  54. };
  55. var polygon = new Polygon(vertices);
  56. polygon.Rotate(MathHelper.ToRadians(90));
  57. const float tolerance = 0.01f;
  58. Assert.True(new Vector2(5, -5).EqualsWithTolerence(polygon.Vertices[0], tolerance));
  59. Assert.True(new Vector2(-10, 5).EqualsWithTolerence(polygon.Vertices[1], tolerance));
  60. Assert.True(new Vector2(-10, -5).EqualsWithTolerence(polygon.Vertices[2], tolerance));
  61. }
  62. [Fact]
  63. public void Polygon_Transform_Scale_Test()
  64. {
  65. var vertices = new[]
  66. {
  67. new Vector2(0, -1),
  68. new Vector2(1, 1),
  69. new Vector2(-1, 1)
  70. };
  71. var polygon = new Polygon(vertices);
  72. polygon.Scale(new Vector2(1, -0.5f));
  73. const float tolerance = 0.01f;
  74. Assert.True(new Vector2(0, -0.5f).EqualsWithTolerence(polygon.Vertices[0], tolerance), "0");
  75. Assert.True(new Vector2(2f, 0.5f).EqualsWithTolerence(polygon.Vertices[1], tolerance), "1");
  76. Assert.True(new Vector2(-2f, 0.5f).EqualsWithTolerence(polygon.Vertices[2], tolerance), "2");
  77. }
  78. }
  79. }