BoxTests.cpp 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #include "../Tests.hpp"
  2. #include "core/Box.hpp"
  3. #include "core/Test.hpp"
  4. using Core::Box;
  5. using V3 = Core::Vector3;
  6. static void testInit() {
  7. Box box(V3(1.0f, 2.0f, 3.0f));
  8. TEST_STRING("Box([0.00, 0.00, 0.00], [1.00, 2.00, 3.00])", box);
  9. TEST_STRING("[0.00, 0.00, 0.00]", box.getMin());
  10. TEST_STRING("[1.00, 2.00, 3.00]", box.getMax());
  11. box = Box(V3(-1.0f, -2.0f, -3.0f));
  12. TEST_STRING("Box([-1.00, -2.00, -3.00], [0.00, 0.00, 0.00])", box);
  13. TEST_STRING("[-1.00, -2.00, -3.00]", box.getMin());
  14. TEST_STRING("[0.00, 0.00, 0.00]", box.getMax());
  15. }
  16. static void testOffset() {
  17. Box box(V3(1.0f, 2.0f, 3.0f));
  18. box = box.offset(V3(7.0f, -4.0f, 6.0f));
  19. TEST_STRING("Box([7.00, -4.00, 6.00], [8.00, -2.00, 9.00])", box);
  20. }
  21. static void testCollidesWith() {
  22. Box boxA(V3(1.0f, 2.0f, 3.0f));
  23. Box boxB(V3(-1.0f, -2.0f, -3.0f));
  24. Box boxC(V3(2.0f, 2.0f, 2.0f));
  25. boxC = boxC.offset(V3(-1.0f, -1.0f, -1.0f));
  26. TEST_TRUE(boxC.collidesWith(boxA));
  27. TEST_TRUE(boxC.collidesWith(boxB));
  28. TEST_TRUE(boxA.collidesWith(boxC));
  29. TEST_TRUE(boxB.collidesWith(boxC));
  30. TEST_FALSE(boxA.collidesWith(boxB));
  31. TEST_FALSE(boxB.collidesWith(boxA));
  32. }
  33. static void testExpand() {
  34. Box box(V3(1.0f, 2.0f, 3.0f));
  35. box = box.expand(V3(7.0f, -4.0f, 6.0f));
  36. TEST_STRING("Box([0.00, -4.00, 0.00], [8.00, 2.00, 9.00])", box);
  37. box = Box(V3(1.0f, 2.0f, 3.0f));
  38. box = box.expand(V3(-7.0f, 4.0f, -6.0f));
  39. TEST_STRING("Box([-7.00, 0.00, -6.00], [1.00, 6.00, 3.00])", box);
  40. }
  41. static void testGrow() {
  42. Box box(V3(1.0f, 2.0f, 3.0f));
  43. TEST_STRING(
  44. "Box([-2.00, -1.00, -3.00], [3.00, 3.00, 6.00])",
  45. box.grow(V3(4.0f, 2.0f, 6.0f)));
  46. TEST_STRING(
  47. "Box([0.50, 1.00, 1.50], [0.50, 1.00, 1.50])",
  48. box.grow(V3(-4.0f, -2.0f, -6.0f)));
  49. TEST_STRING(
  50. "Box([0.05, 1.00, 0.50], [0.95, 1.00, 2.50])",
  51. box.grow(V3(-0.1f, -4.0f, -1.0f)));
  52. }
  53. void testBox() {
  54. testInit();
  55. testOffset();
  56. testCollidesWith();
  57. testExpand();
  58. testGrow();
  59. }