TilemapTileDataTests.cs 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. using System.Collections.Generic;
  2. using Microsoft.Xna.Framework;
  3. using Microsoft.Xna.Framework.Graphics;
  4. using MonoGame.Extended.Tests.Fixtures;
  5. using MonoGame.Extended.Tilemaps;
  6. namespace MonoGame.Extended.Tests
  7. {
  8. [Collection("GraphicsTest")]
  9. public sealed class TilemapTileDataTests
  10. {
  11. private readonly GraphicsTestFixture _graphicsFixture;
  12. public TilemapTileDataTests(GraphicsTestFixture graphicsTestFixture)
  13. {
  14. _graphicsFixture = graphicsTestFixture;
  15. }
  16. [Fact]
  17. public void Constructor_SetsLocalId()
  18. {
  19. var tileData = new TilemapTileData(42);
  20. Assert.Equal(42, tileData.LocalId);
  21. }
  22. [Fact]
  23. public void Constructor_InitializesDefaultValues()
  24. {
  25. var tileData = new TilemapTileData(1);
  26. Assert.Equal(string.Empty, tileData.Class);
  27. Assert.Equal(1.0f, tileData.Probability);
  28. Assert.NotNull(tileData.Properties);
  29. Assert.Null(tileData.Animation);
  30. Assert.NotNull(tileData.CollisionObjects);
  31. Assert.Empty(tileData.CollisionObjects);
  32. Assert.Null(tileData.CustomImage);
  33. }
  34. [Fact]
  35. public void Class_CanBeSet()
  36. {
  37. var tileData = new TilemapTileData(1);
  38. tileData.Class = "Water";
  39. Assert.Equal("Water", tileData.Class);
  40. }
  41. [Theory]
  42. [InlineData(0.0f)]
  43. [InlineData(0.5f)]
  44. [InlineData(1.0f)]
  45. [InlineData(2.0f)]
  46. public void Probability_CanBeSet(float probability)
  47. {
  48. var tileData = new TilemapTileData(1);
  49. tileData.Probability = probability;
  50. Assert.Equal(probability, tileData.Probability);
  51. }
  52. [Fact]
  53. public void Properties_CanStoreCustomData()
  54. {
  55. var tileData = new TilemapTileData(1);
  56. tileData.Properties["damage"] = TilemapPropertyValue.CreateInt(10);
  57. tileData.Properties["slippery"] = TilemapPropertyValue.CreateBool(true);
  58. Assert.Equal(10, tileData.Properties.GetInt("damage"));
  59. Assert.True(tileData.Properties.GetBool("slippery"));
  60. }
  61. [Fact]
  62. public void Animation_CanBeSet()
  63. {
  64. var tileData = new TilemapTileData(1);
  65. var frames = new TilemapTileAnimationFrame[]
  66. {
  67. new(0, 0.1f),
  68. new(1, 0.1f)
  69. };
  70. var animation = new TilemapTileAnimation(frames);
  71. tileData.Animation = animation;
  72. Assert.NotNull(tileData.Animation);
  73. Assert.Equal(animation, tileData.Animation);
  74. }
  75. [Fact]
  76. public void CollisionObjects_CanAddObjects()
  77. {
  78. var tileData = new TilemapTileData(1);
  79. var obj1 = new TilemapRectangleObject(1, new Vector2(0, 0), new Vector2(16, 16));
  80. var obj2 = new TilemapRectangleObject(2, new Vector2(16, 0), new Vector2(16, 16));
  81. tileData.CollisionObjects.Add(obj1);
  82. tileData.CollisionObjects.Add(obj2);
  83. Assert.Equal(2, tileData.CollisionObjects.Count);
  84. Assert.Contains(obj1, tileData.CollisionObjects);
  85. Assert.Contains(obj2, tileData.CollisionObjects);
  86. }
  87. [Fact]
  88. public void CollisionObjects_CanContainDifferentObjectTypes()
  89. {
  90. var tileData = new TilemapTileData(1);
  91. var rect = new TilemapRectangleObject(1, Vector2.Zero, new Vector2(32, 32));
  92. var polygon = new TilemapPolygonObject(2, Vector2.Zero, new[]
  93. {
  94. new Vector2(0, 0),
  95. new Vector2(32, 0),
  96. new Vector2(16, 32)
  97. });
  98. tileData.CollisionObjects.Add(rect);
  99. tileData.CollisionObjects.Add(polygon);
  100. Assert.Equal(2, tileData.CollisionObjects.Count);
  101. Assert.IsType<TilemapRectangleObject>(tileData.CollisionObjects[0]);
  102. Assert.IsType<TilemapPolygonObject>(tileData.CollisionObjects[1]);
  103. }
  104. [Fact]
  105. public void CustomImage_CanBeSet()
  106. {
  107. var texture = _graphicsFixture.CreatePixelTexture();
  108. try
  109. {
  110. var tileData = new TilemapTileData(1);
  111. tileData.CustomImage = texture;
  112. Assert.Equal(texture, tileData.CustomImage);
  113. }
  114. finally
  115. {
  116. texture.Dispose();
  117. }
  118. }
  119. [Fact]
  120. public void CustomImage_DefaultsToNull()
  121. {
  122. var tileData = new TilemapTileData(1);
  123. Assert.Null(tileData.CustomImage);
  124. }
  125. }
  126. }