ComponentMapperTests.cs 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. using Xunit;
  2. namespace MonoGame.Extended.ECS.Tests
  3. {
  4. public class ComponentMapperTests
  5. {
  6. [Fact]
  7. public void CreateComponentMapper()
  8. {
  9. var mapper = new ComponentMapper<object>(0, _ => {});
  10. Assert.Equal(typeof(object), mapper.ComponentType);
  11. Assert.Empty(mapper.Components);
  12. }
  13. [Fact]
  14. public void OnPut()
  15. {
  16. const int entityId = 3;
  17. var mapper = new ComponentMapper<Transform2>(1, _ => { });
  18. var component = new Transform2();
  19. mapper.OnPut += (entId) =>
  20. {
  21. Assert.Equal(entityId, entId);
  22. Assert.Same(component, mapper.Get(entityId));
  23. };
  24. mapper.Put(entityId, component);
  25. }
  26. [Fact]
  27. public void PutAndGetComponent()
  28. {
  29. const int entityId = 3;
  30. var mapper = new ComponentMapper<Transform2>(1, _ => { });
  31. var component = new Transform2();
  32. mapper.Put(entityId, component);
  33. Assert.Equal(typeof(Transform2), mapper.ComponentType);
  34. Assert.True(mapper.Components.Count >= 1);
  35. Assert.Same(component, mapper.Get(entityId));
  36. }
  37. [Fact]
  38. public void PutAndTryGetComponent()
  39. {
  40. // Arrange
  41. const int entityId = 4;
  42. const int entityIdNotAdded = 100;
  43. var mapper = new ComponentMapper<Transform2>(1, _ => { });
  44. var component = new Transform2();
  45. mapper.Put(entityId, component);
  46. // Act
  47. bool foundAdded = mapper.TryGet(entityId, out Transform2 transformFromAdded);
  48. bool foundNotAdded = mapper.TryGet(entityIdNotAdded, out Transform2 transformFromNotAdded);
  49. // Assert
  50. Assert.Equal(typeof(Transform2), mapper.ComponentType);
  51. Assert.True(mapper.Components.Count >= 1);
  52. Assert.True(foundAdded);
  53. Assert.Same(component, transformFromAdded);
  54. Assert.False(foundNotAdded);
  55. Assert.Equal(default(Transform2), transformFromNotAdded);
  56. }
  57. [Fact]
  58. public void OnDelete()
  59. {
  60. const int entityId = 1;
  61. var mapper = new ComponentMapper<Transform2>(2, _ => { });
  62. var component = new Transform2();
  63. mapper.OnDelete += (entId) =>
  64. {
  65. Assert.Equal(entityId, entId);
  66. Assert.True(mapper.Has(entityId));
  67. Assert.NotNull(mapper.Get(entityId));
  68. };
  69. mapper.Put(entityId, component);
  70. mapper.Delete(entityId);
  71. // Component should be removed after Delete completes
  72. Assert.False(mapper.Has(entityId));
  73. }
  74. [Fact]
  75. public void DeleteComponent()
  76. {
  77. const int entityId = 1;
  78. var mapper = new ComponentMapper<Transform2>(2, _ => { });
  79. var component = new Transform2();
  80. mapper.Put(entityId, component);
  81. mapper.Delete(entityId);
  82. Assert.False(mapper.Has(entityId));
  83. }
  84. [Fact]
  85. public void HasComponent()
  86. {
  87. const int entityId = 0;
  88. var mapper = new ComponentMapper<Transform2>(3, _ => { });
  89. var component = new Transform2();
  90. Assert.False(mapper.Has(entityId));
  91. mapper.Put(entityId, component);
  92. Assert.True(mapper.Has(entityId));
  93. }
  94. }
  95. }