TilemapPolylineObjectTests.cs 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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 TilemapPolylineObjectTests
  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. };
  17. var obj = new TilemapPolylineObject(1, new Vector2(5, 5), points);
  18. Assert.Equal(1, obj.Id);
  19. Assert.Equal(new Vector2(5, 5), obj.Position);
  20. Assert.Equal(points, obj.Points);
  21. }
  22. [Fact]
  23. public void WorldPoints_TransformsPointsToWorldCoordinates()
  24. {
  25. var points = new Vector2[]
  26. {
  27. new(0, 0),
  28. new(10, 0),
  29. new(10, 10)
  30. };
  31. var obj = new TilemapPolylineObject(1, new Vector2(5, 5), points);
  32. var worldPoints = obj.WorldPoints.ToList();
  33. Assert.Equal(3, worldPoints.Count);
  34. Assert.Equal(new Vector2(5, 5), worldPoints[0]);
  35. Assert.Equal(new Vector2(15, 5), worldPoints[1]);
  36. Assert.Equal(new Vector2(15, 15), worldPoints[2]);
  37. }
  38. [Fact]
  39. public void Bounds_CalculatesMinimumEnclosingRectangle()
  40. {
  41. var points = new Vector2[]
  42. {
  43. new(0, 0),
  44. new(20, 5),
  45. new(10, 15)
  46. };
  47. var obj = new TilemapPolylineObject(1, new Vector2(10, 10), points);
  48. var bounds = obj.Bounds;
  49. // World points: (10,10), (30,15), (20,25)
  50. // Min: (10,10), Max: (30,25)
  51. Assert.Equal(10, bounds.X);
  52. Assert.Equal(10, bounds.Y);
  53. Assert.Equal(20, bounds.Width);
  54. Assert.Equal(15, bounds.Height);
  55. }
  56. [Fact]
  57. public void Bounds_WithEmptyPoints_ReturnsZeroSizeAtPosition()
  58. {
  59. var obj = new TilemapPolylineObject(1, new Vector2(10, 20), Array.Empty<Vector2>());
  60. var bounds = obj.Bounds;
  61. Assert.Equal(10, bounds.X);
  62. Assert.Equal(20, bounds.Y);
  63. Assert.Equal(0, bounds.Width);
  64. Assert.Equal(0, bounds.Height);
  65. }
  66. }