|
@@ -1,75 +1,60 @@
|
|
|
-#include "../Tests.h"
|
|
|
-#include "core/Box.h"
|
|
|
+#include "../Tests.hpp"
|
|
|
+#include "core/Box.hpp"
|
|
|
+#include "core/Test.hpp"
|
|
|
+
|
|
|
+using Core::Box;
|
|
|
+using V3 = Core::Vector3;
|
|
|
|
|
|
static void testInit() {
|
|
|
- Box box = BOX;
|
|
|
- setBox(&box, &V(1.0f, 2.0f, 3.0f));
|
|
|
- char buffer[128];
|
|
|
- toStringBox(&box, buffer, sizeof(buffer));
|
|
|
- TEST_STRING("Box([0.000, 0.000, 0.000], [1.000, 2.000, 3.000])", buffer);
|
|
|
- setBox(&box, &V(-1.0f, -2.0f, -3.0f));
|
|
|
- toStringBox(&box, buffer, sizeof(buffer));
|
|
|
- TEST_STRING("Box([-1.000, -2.000, -3.000], [0.000, 0.000, 0.000])", buffer);
|
|
|
+ Box box(V3(1.0f, 2.0f, 3.0f));
|
|
|
+ TEST_STRING("Box([0.00, 0.00, 0.00], [1.00, 2.00, 3.00])", box);
|
|
|
+ TEST_STRING("[0.00, 0.00, 0.00]", box.getMin());
|
|
|
+ TEST_STRING("[1.00, 2.00, 3.00]", box.getMax());
|
|
|
+ box = Box(V3(-1.0f, -2.0f, -3.0f));
|
|
|
+ TEST_STRING("Box([-1.00, -2.00, -3.00], [0.00, 0.00, 0.00])", box);
|
|
|
+ TEST_STRING("[-1.00, -2.00, -3.00]", box.getMin());
|
|
|
+ TEST_STRING("[0.00, 0.00, 0.00]", box.getMax());
|
|
|
}
|
|
|
|
|
|
static void testOffset() {
|
|
|
- Box box = BOX;
|
|
|
- setBox(&box, &V(1.0f, 2.0f, 3.0f));
|
|
|
- offsetBox(&box, &V(7.0f, -4.0f, 6.0f));
|
|
|
- char buffer[128];
|
|
|
- toStringBox(&box, buffer, sizeof(buffer));
|
|
|
- TEST_STRING("Box([7.000, -4.000, 6.000], [8.000, -2.000, 9.000])", buffer);
|
|
|
+ Box box(V3(1.0f, 2.0f, 3.0f));
|
|
|
+ box = box.offset(V3(7.0f, -4.0f, 6.0f));
|
|
|
+ TEST_STRING("Box([7.00, -4.00, 6.00], [8.00, -2.00, 9.00])", box);
|
|
|
}
|
|
|
|
|
|
static void testCollidesWith() {
|
|
|
- Box boxA = BOX;
|
|
|
- setBox(&boxA, &V(1.0f, 2.0f, 3.0f));
|
|
|
- Box boxB = BOX;
|
|
|
- setBox(&boxB, &V(-1.0f, -2.0f, -3.0f));
|
|
|
- Box boxC = BOX;
|
|
|
- setBox(&boxC, &V(2.0f, 2.0f, 2.0f));
|
|
|
- offsetBox(&boxC, &V(-1.0f, -1.0f, -1.0f));
|
|
|
-
|
|
|
- TEST_TRUE(collidesWithBox(&boxC, &boxA));
|
|
|
- TEST_TRUE(collidesWithBox(&boxC, &boxB));
|
|
|
- TEST_TRUE(collidesWithBox(&boxA, &boxC));
|
|
|
- TEST_TRUE(collidesWithBox(&boxB, &boxC));
|
|
|
- TEST_FALSE(collidesWithBox(&boxA, &boxB));
|
|
|
- TEST_FALSE(collidesWithBox(&boxB, &boxA));
|
|
|
+ Box boxA(V3(1.0f, 2.0f, 3.0f));
|
|
|
+ Box boxB(V3(-1.0f, -2.0f, -3.0f));
|
|
|
+ Box boxC(V3(2.0f, 2.0f, 2.0f));
|
|
|
+ boxC = boxC.offset(V3(-1.0f, -1.0f, -1.0f));
|
|
|
+ TEST_TRUE(boxC.collidesWith(boxA));
|
|
|
+ TEST_TRUE(boxC.collidesWith(boxB));
|
|
|
+ TEST_TRUE(boxA.collidesWith(boxC));
|
|
|
+ TEST_TRUE(boxB.collidesWith(boxC));
|
|
|
+ TEST_FALSE(boxA.collidesWith(boxB));
|
|
|
+ TEST_FALSE(boxB.collidesWith(boxA));
|
|
|
}
|
|
|
|
|
|
static void testExpand() {
|
|
|
- Box box = BOX;
|
|
|
- setBox(&box, &V(1.0f, 2.0f, 3.0f));
|
|
|
- expandBox(&box, &V(7.0f, -4.0f, 6.0f));
|
|
|
-
|
|
|
- char buffer[128];
|
|
|
- toStringBox(&box, buffer, sizeof(buffer));
|
|
|
- TEST_STRING("Box([0.000, -4.000, 0.000], [8.000, 2.000, 9.000])", buffer);
|
|
|
-
|
|
|
- setBox(&box, &V(1.0f, 2.0f, 3.0f));
|
|
|
- expandBox(&box, &V(-7.0f, 4.0f, -6.0f));
|
|
|
- toStringBox(&box, buffer, sizeof(buffer));
|
|
|
- TEST_STRING("Box([-7.000, 0.000, -6.000], [1.000, 6.000, 3.000])", buffer);
|
|
|
+ Box box(V3(1.0f, 2.0f, 3.0f));
|
|
|
+ box = box.expand(V3(7.0f, -4.0f, 6.0f));
|
|
|
+ TEST_STRING("Box([0.00, -4.00, 0.00], [8.00, 2.00, 9.00])", box);
|
|
|
+ box = Box(V3(1.0f, 2.0f, 3.0f));
|
|
|
+ box = box.expand(V3(-7.0f, 4.0f, -6.0f));
|
|
|
+ TEST_STRING("Box([-7.00, 0.00, -6.00], [1.00, 6.00, 3.00])", box);
|
|
|
}
|
|
|
|
|
|
static void testGrow() {
|
|
|
- Box box = BOX;
|
|
|
- setBox(&box, &V(1.0f, 2.0f, 3.0f));
|
|
|
- growBox(&box, &V(4.0f, 2.0f, 6.0f));
|
|
|
- char buffer[128];
|
|
|
- toStringBox(&box, buffer, sizeof(buffer));
|
|
|
- TEST_STRING("Box([-2.000, -1.000, -3.000], [3.000, 3.000, 6.000])", buffer);
|
|
|
-
|
|
|
- setBox(&box, &V(1.0f, 2.0f, 3.0f));
|
|
|
- growBox(&box, &V(-4.0f, -2.0f, -6.0f));
|
|
|
- toStringBox(&box, buffer, sizeof(buffer));
|
|
|
- TEST_STRING("Box([0.500, 1.000, 1.500], [0.500, 1.000, 1.500])", buffer);
|
|
|
-
|
|
|
- setBox(&box, &V(1.0f, 2.0f, 3.0f));
|
|
|
- growBox(&box, &V(-0.1f, -4.0f, -1.0f));
|
|
|
- toStringBox(&box, buffer, sizeof(buffer));
|
|
|
- TEST_STRING("Box([0.050, 1.000, 0.500], [0.950, 1.000, 2.500])", buffer);
|
|
|
+ Box box(V3(1.0f, 2.0f, 3.0f));
|
|
|
+ TEST_STRING(
|
|
|
+ "Box([-2.00, -1.00, -3.00], [3.00, 3.00, 6.00])",
|
|
|
+ box.grow(V3(4.0f, 2.0f, 6.0f)));
|
|
|
+ TEST_STRING(
|
|
|
+ "Box([0.50, 1.00, 1.50], [0.50, 1.00, 1.50])",
|
|
|
+ box.grow(V3(-4.0f, -2.0f, -6.0f)));
|
|
|
+ TEST_STRING(
|
|
|
+ "Box([0.05, 1.00, 0.50], [0.95, 1.00, 2.50])",
|
|
|
+ box.grow(V3(-0.1f, -4.0f, -1.0f)));
|
|
|
}
|
|
|
|
|
|
void testBox() {
|