BoxTests.c 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #define IMPORT_CORE
  2. #include "../Tests.h"
  3. #include "core/Box.h"
  4. #include "core/ToString.h"
  5. static void testInit() {
  6. Box box = BOX;
  7. setBox(&box, &V(1.0f, 2.0f, 3.0f));
  8. char buffer[128];
  9. toString(&box, buffer, sizeof(buffer));
  10. TEST_STRING("Box([0.000, 0.000, 0.000], [1.000, 2.000, 3.000])", buffer);
  11. setBox(&box, &V(-1.0f, -2.0f, -3.0f));
  12. toString(&box, buffer, sizeof(buffer));
  13. TEST_STRING("Box([-1.000, -2.000, -3.000], [0.000, 0.000, 0.000])", buffer);
  14. }
  15. static void testOffset() {
  16. Box box = BOX;
  17. setBox(&box, &V(1.0f, 2.0f, 3.0f));
  18. offsetBox(&box, &V(7.0f, -4.0f, 6.0f));
  19. char buffer[128];
  20. toString(&box, buffer, sizeof(buffer));
  21. TEST_STRING("Box([7.000, -4.000, 6.000], [8.000, -2.000, 9.000])", buffer);
  22. }
  23. static void testCollidesWith() {
  24. Box boxA = BOX;
  25. setBox(&boxA, &V(1.0f, 2.0f, 3.0f));
  26. Box boxB = BOX;
  27. setBox(&boxB, &V(-1.0f, -2.0f, -3.0f));
  28. Box boxC = BOX;
  29. setBox(&boxC, &V(2.0f, 2.0f, 2.0f));
  30. offsetBox(&boxC, &V(-1.0f, -1.0f, -1.0f));
  31. TEST_TRUE(collidesWithBox(&boxC, &boxA));
  32. TEST_TRUE(collidesWithBox(&boxC, &boxB));
  33. TEST_TRUE(collidesWithBox(&boxA, &boxC));
  34. TEST_TRUE(collidesWithBox(&boxB, &boxC));
  35. TEST_FALSE(collidesWithBox(&boxA, &boxB));
  36. TEST_FALSE(collidesWithBox(&boxB, &boxA));
  37. }
  38. static void testExpand() {
  39. Box box = BOX;
  40. setBox(&box, &V(1.0f, 2.0f, 3.0f));
  41. expandBox(&box, &V(7.0f, -4.0f, 6.0f));
  42. char buffer[128];
  43. toString(&box, buffer, sizeof(buffer));
  44. TEST_STRING("Box([0.000, -4.000, 0.000], [8.000, 2.000, 9.000])", buffer);
  45. setBox(&box, &V(1.0f, 2.0f, 3.0f));
  46. expandBox(&box, &V(-7.0f, 4.0f, -6.0f));
  47. toString(&box, buffer, sizeof(buffer));
  48. TEST_STRING("Box([-7.000, 0.000, -6.000], [1.000, 6.000, 3.000])", buffer);
  49. }
  50. static void testGrow() {
  51. Box box = BOX;
  52. setBox(&box, &V(1.0f, 2.0f, 3.0f));
  53. growBox(&box, &V(4.0f, 2.0f, 6.0f));
  54. char buffer[128];
  55. toString(&box, buffer, sizeof(buffer));
  56. TEST_STRING("Box([-2.000, -1.000, -3.000], [3.000, 3.000, 6.000])", buffer);
  57. setBox(&box, &V(1.0f, 2.0f, 3.0f));
  58. growBox(&box, &V(-4.0f, -2.0f, -6.0f));
  59. toString(&box, buffer, sizeof(buffer));
  60. TEST_STRING("Box([0.500, 1.000, 1.500], [0.500, 1.000, 1.500])", buffer);
  61. setBox(&box, &V(1.0f, 2.0f, 3.0f));
  62. growBox(&box, &V(-0.1f, -4.0f, -1.0f));
  63. toString(&box, buffer, sizeof(buffer));
  64. TEST_STRING("Box([0.050, 1.000, 0.500], [0.950, 1.000, 2.500])", buffer);
  65. }
  66. void testBox() {
  67. testInit();
  68. testOffset();
  69. testCollidesWith();
  70. testExpand();
  71. testGrow();
  72. }