BoxTests.c 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. #include "../Tests.h"
  2. #include "core/Box.h"
  3. #define CV3(a, b, c) (&(CoreVector3){{a, b, c}})
  4. static void testInit() {
  5. CoreBox box = {0};
  6. coreSetBox(&box, CV3(1.0f, 2.0f, 3.0f));
  7. char buffer[128];
  8. coreToStringBox(&box, buffer, sizeof(buffer));
  9. CORE_TEST_STRING("Box([0.000, 0.000, 0.000], [1.000, 2.000, 3.000])",
  10. buffer);
  11. coreToStringV3(&box.min, buffer, sizeof(buffer));
  12. CORE_TEST_STRING("[0.000, 0.000, 0.000]", buffer);
  13. coreToStringV3(&box.max, buffer, sizeof(buffer));
  14. CORE_TEST_STRING("[1.000, 2.000, 3.000]", buffer);
  15. coreSetBox(&box, CV3(-1.0f, -2.0f, -3.0f));
  16. coreToStringBox(&box, buffer, sizeof(buffer));
  17. CORE_TEST_STRING("Box([-1.000, -2.000, -3.000], [0.000, 0.000, 0.000])",
  18. buffer);
  19. coreToStringV3(&box.min, buffer, sizeof(buffer));
  20. CORE_TEST_STRING("[-1.000, -2.000, -3.000]", buffer);
  21. coreToStringV3(&box.max, buffer, sizeof(buffer));
  22. CORE_TEST_STRING("[0.000, 0.000, 0.000]", buffer);
  23. }
  24. static void testOffset() {
  25. CoreBox box = {0};
  26. coreSetBox(&box, CV3(1.0f, 2.0f, 3.0f));
  27. coreOffsetBox(&box, CV3(7.0f, -4.0f, 6.0f));
  28. char buffer[128];
  29. coreToStringBox(&box, buffer, sizeof(buffer));
  30. CORE_TEST_STRING("Box([7.000, -4.000, 6.000], [8.000, -2.000, 9.000])",
  31. buffer);
  32. }
  33. static void testCollidesWith() {
  34. CoreBox boxA = {0};
  35. coreSetBox(&boxA, CV3(1.0f, 2.0f, 3.0f));
  36. CoreBox boxB = {0};
  37. coreSetBox(&boxB, CV3(-1.0f, -2.0f, -3.0f));
  38. CoreBox boxC = {0};
  39. coreSetBox(&boxC, CV3(2.0f, 2.0f, 2.0f));
  40. coreOffsetBox(&boxC, CV3(-1.0f, -1.0f, -1.0f));
  41. CORE_TEST_TRUE(coreCollidesWithBox(&boxC, &boxA));
  42. CORE_TEST_TRUE(coreCollidesWithBox(&boxC, &boxB));
  43. CORE_TEST_TRUE(coreCollidesWithBox(&boxA, &boxC));
  44. CORE_TEST_TRUE(coreCollidesWithBox(&boxB, &boxC));
  45. CORE_TEST_FALSE(coreCollidesWithBox(&boxA, &boxB));
  46. CORE_TEST_FALSE(coreCollidesWithBox(&boxB, &boxA));
  47. }
  48. static void testExpand() {
  49. CoreBox box = {0};
  50. coreSetBox(&box, CV3(1.0f, 2.0f, 3.0f));
  51. coreExpandBox(&box, CV3(7.0f, -4.0f, 6.0f));
  52. char buffer[128];
  53. coreToStringBox(&box, buffer, sizeof(buffer));
  54. CORE_TEST_STRING("Box([0.000, -4.000, 0.000], [8.000, 2.000, 9.000])",
  55. buffer);
  56. coreSetBox(&box, CV3(1.0f, 2.0f, 3.0f));
  57. coreExpandBox(&box, CV3(-7.0f, 4.0f, -6.0f));
  58. coreToStringBox(&box, buffer, sizeof(buffer));
  59. CORE_TEST_STRING("Box([-7.000, 0.000, -6.000], [1.000, 6.000, 3.000])",
  60. buffer);
  61. }
  62. static void testGrow() {
  63. CoreBox box = {0};
  64. coreSetBox(&box, CV3(1.0f, 2.0f, 3.0f));
  65. coreGrowBox(&box, CV3(4.0f, 2.0f, 6.0f));
  66. char buffer[128];
  67. coreToStringBox(&box, buffer, sizeof(buffer));
  68. CORE_TEST_STRING("Box([-2.000, -1.000, -3.000], [3.000, 3.000, 6.000])",
  69. buffer);
  70. coreSetBox(&box, CV3(1.0f, 2.0f, 3.0f));
  71. coreGrowBox(&box, CV3(-4.0f, -2.0f, -6.0f));
  72. coreToStringBox(&box, buffer, sizeof(buffer));
  73. CORE_TEST_STRING("Box([0.500, 1.000, 1.500], [0.500, 1.000, 1.500])",
  74. buffer);
  75. coreSetBox(&box, CV3(1.0f, 2.0f, 3.0f));
  76. coreGrowBox(&box, CV3(-0.1f, -4.0f, -1.0f));
  77. coreToStringBox(&box, buffer, sizeof(buffer));
  78. CORE_TEST_STRING("Box([0.050, 1.000, 0.500], [0.950, 1.000, 2.500])",
  79. buffer);
  80. }
  81. void coreTestBox() {
  82. testInit();
  83. testOffset();
  84. testCollidesWith();
  85. testExpand();
  86. testGrow();
  87. }