TilemapPolygonObjectTests.cs 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. using System;
  2. using System.Linq;
  3. using Microsoft.Xna.Framework;
  4. using MonoGame.Extended.Tilemaps;
  5. namespace MonoGame.Extended.Tests;
  6. public sealed class TilemapPolygonObjectTests
  7. {
  8. [Fact]
  9. public void Constructor_SetsProperties()
  10. {
  11. var points = new Vector2[]
  12. {
  13. new(0, 0),
  14. new(10, 0),
  15. new(10, 10),
  16. new(0, 10)
  17. };
  18. var obj = new TilemapPolygonObject(1, new Vector2(5, 5), points);
  19. Assert.Equal(1, obj.Id);
  20. Assert.Equal(new Vector2(5, 5), obj.Position);
  21. Assert.Equal(points, obj.Points);
  22. }
  23. [Fact]
  24. public void WorldPoints_TransformsPointsToWorldCoordinates()
  25. {
  26. var points = new Vector2[]
  27. {
  28. new(0, 0),
  29. new(10, 0),
  30. new(10, 10)
  31. };
  32. var obj = new TilemapPolygonObject(1, new Vector2(5, 5), points);
  33. var worldPoints = obj.WorldPoints.ToList();
  34. Assert.Equal(3, worldPoints.Count);
  35. Assert.Equal(new Vector2(5, 5), worldPoints[0]);
  36. Assert.Equal(new Vector2(15, 5), worldPoints[1]);
  37. Assert.Equal(new Vector2(15, 15), worldPoints[2]);
  38. }
  39. [Fact]
  40. public void Bounds_CalculatesMinimumEnclosingRectangle()
  41. {
  42. var points = new Vector2[]
  43. {
  44. new(0, 0),
  45. new(20, 0),
  46. new(10, 15)
  47. };
  48. var obj = new TilemapPolygonObject(1, new Vector2(10, 10), points);
  49. var bounds = obj.Bounds;
  50. // World points: (10,10), (30,10), (20,25)
  51. // Min: (10,10), Max: (30,25)
  52. Assert.Equal(10, bounds.X);
  53. Assert.Equal(10, bounds.Y);
  54. Assert.Equal(20, bounds.Width);
  55. Assert.Equal(15, bounds.Height);
  56. }
  57. [Fact]
  58. public void Bounds_WithEmptyPoints_ReturnsZeroSizeAtPosition()
  59. {
  60. var obj = new TilemapPolygonObject(1, new Vector2(10, 20), Array.Empty<Vector2>());
  61. var bounds = obj.Bounds;
  62. Assert.Equal(10, bounds.X);
  63. Assert.Equal(20, bounds.Y);
  64. Assert.Equal(0, bounds.Width);
  65. Assert.Equal(0, bounds.Height);
  66. }
  67. [Fact]
  68. public void Points_CanBeModified()
  69. {
  70. var obj = new TilemapPolygonObject(1, new Vector2(0, 0), new Vector2[] { new(0, 0) });
  71. var newPoints = new Vector2[] { new(5, 5), new(10, 10) };
  72. obj.Points = newPoints;
  73. Assert.Equal(newPoints, obj.Points);
  74. // Act
  75. }
  76. }