#include "unittest/TestSuite.h" #include "gamemath/Rect4d.h" #include "gamemath/Rect4f.h" #include "gamemath/Rect4i.h" #include "gamemath/Rect4u.h" #include "gamemath/Rect4x.h" #include "gamemath/Box6d.h" #include "gamemath/Box6f.h" #include "gamemath/Box6i.h" #include "gamemath/Box6u.h" #include "gamemath/Box6x.h" #define assertRectWithFormat(rect, expected_xMin, expected_xMax, expected_yMin, expected_yMax, format) \ TestCase_assert(rect.xMin == expected_xMin && \ rect.xMax == expected_xMax && \ rect.yMin == expected_yMin && \ rect.yMax == expected_yMax, \ "Expected {" #expected_xMin ", " #expected_xMax ", " #expected_yMin ", " #expected_yMax "} but got {" format ", " format ", " format ", " format "}", \ rect.xMin, \ rect.xMax, \ rect.yMin, \ rect.yMax) #define assertBoxWithFormat(box, expected_xMin, expected_xMax, expected_yMin, expected_yMax, expected_zMin, expected_zMax, format) \ TestCase_assert(box.xMin == expected_xMin && \ box.xMax == expected_xMax && \ box.yMin == expected_yMin && \ box.yMax == expected_yMax && \ box.zMin == expected_zMin && \ box.zMax == expected_zMax, \ "Expected {" #expected_xMin ", " #expected_xMax ", " #expected_yMin ", " #expected_yMax ", " #expected_zMin ", " #expected_zMax "} but got {" format ", " format ", " format ", " format ", " format ", " format "}", \ box.xMin, \ box.xMax, \ box.yMin, \ box.yMax, \ box.zMin, \ box.zMax) #define assertRect4f(rect, xMin, xMax, yMin, yMax) assertRectWithFormat(rect, xMin, xMax, yMin, yMax, "%f") #define assertRect4d(rect, xMin, xMax, yMin, yMax) assertRectWithFormat(rect, xMin, xMax, yMin, yMax, "%f") #define assertRect4i(rect, xMin, xMax, yMin, yMax) assertRectWithFormat(rect, xMin, xMax, yMin, yMax, "%d") #define assertRect4u(rect, xMin, xMax, yMin, yMax) assertRectWithFormat(rect, xMin, xMax, yMin, yMax, "%u") #define assertRect4x(rect, xMin, xMax, yMin, yMax) assertRectWithFormat(rect, xMin, xMax, yMin, yMax, "0x%05X") #define assertBox6f(box, xMin, xMax, yMin, yMax, zMin, zMax) assertBoxWithFormat(box, xMin, xMax, yMin, yMax, zMin, zMax, "%f") #define assertBox6d(box, xMin, xMax, yMin, yMax, zMin, zMax) assertBoxWithFormat(box, xMin, xMax, yMin, yMax, zMin, zMax, "%f") #define assertBox6i(box, xMin, xMax, yMin, yMax, zMin, zMax) assertBoxWithFormat(box, xMin, xMax, yMin, yMax, zMin, zMax, "%d") #define assertBox6u(box, xMin, xMax, yMin, yMax, zMin, zMax) assertBoxWithFormat(box, xMin, xMax, yMin, yMax, zMin, zMax, "%u") #define assertBox6x(box, xMin, xMax, yMin, yMax, zMin, zMax) assertBoxWithFormat(box, xMin, xMax, yMin, yMax, zMin, zMax, "0x%05X") #define assertVector2f(vector, expectedX, expectedY) { \ TestCase_assertFloatEqual(vector.x, (expectedX)); \ TestCase_assertFloatEqual(vector.y, (expectedY)); \ } #define assertVector3i(vector, expectedX, expectedY, expectedZ) { \ TestCase_assertIntEqual(vector.x, (expectedX)); \ TestCase_assertIntEqual(vector.y, (expectedY)); \ TestCase_assertIntEqual(vector.z, (expectedZ)); \ } static void testConstructor(void) { Rect4d rect4d; Rect4f rect4f; Rect4i rect4i; Rect4u rect4u; Rect4x rect4x; Box6d box6d; Box6f box6f; Box6i box6i; Box6u box6u; Box6x box6x; rect4d = RECT4d(0.0, 0.0, 0.0, 0.0); assertRect4d(rect4d, 0.0, 0.0, 0.0, 0.0); rect4d = RECT4d(1.0, 2.0, 3.0, 4.0); assertRect4d(rect4d, 1.0, 2.0, 3.0, 4.0); rect4f = RECT4f(0.0f, 0.0f, 0.0f, 0.0f); assertRect4f(rect4f, 0.0f, 0.0f, 0.0f, 0.0f); rect4f = RECT4f(1.0f, 2.0f, 3.0f, 4.0f); assertRect4f(rect4f, 1.0f, 2.0f, 3.0f, 4.0f); rect4i = RECT4i(0, 0, 0, 0); assertRect4i(rect4i, 0, 0, 0, 0); rect4i = RECT4i(1, 2, 3, 4); assertRect4i(rect4i, 1, 2, 3, 4); rect4u = RECT4u(0, 0, 0, 0); assertRect4u(rect4u, 0, 0, 0, 0); rect4u = RECT4u(1, 2, 3, 4); assertRect4u(rect4u, 1, 2, 3, 4); rect4x = RECT4x(0x00000, 0x00000, 0x00000, 0x00000); assertRect4x(rect4x, 0x00000, 0x00000, 0x00000, 0x00000); rect4x = RECT4x(0x10000, 0x20000, 0x30000, 0x40000); assertRect4x(rect4x, 0x10000, 0x20000, 0x30000, 0x40000); box6d = BOX6d(0.0, 0.0, 0.0, 0.0, 0.0, 0.0); assertBox6d(box6d, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); box6d = BOX6d(1.0, 2.0, 3.0, 4.0, 5.0, 6.0); assertBox6d(box6d, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0); box6f = BOX6f(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f); assertBox6f(box6f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f); box6f = BOX6f(1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f); assertBox6f(box6f, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f); box6i = BOX6i(0, 0, 0, 0, 0, 0); assertBox6i(box6i, 0, 0, 0, 0, 0, 0); box6i = BOX6i(1, 2, 3, 4, 5, 6); assertBox6i(box6i, 1, 2, 3, 4, 5, 6); box6u = BOX6u(0, 0, 0, 0, 0, 0); assertBox6u(box6u, 0, 0, 0, 0, 0, 0); box6u = BOX6u(1, 2, 3, 4, 5, 6); assertBox6u(box6u, 1, 2, 3, 4, 5, 6); box6x = BOX6x(0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000); assertBox6x(box6x, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000); box6x = BOX6x(0x10000, 0x20000, 0x30000, 0x40000, 0x50000, 0x60000); assertBox6x(box6x, 0x10000, 0x20000, 0x30000, 0x40000, 0x50000, 0x60000); } static void testFromPositionAndSize(void) { Rect4d rect4d; Rect4f rect4f; Rect4i rect4i; Rect4x rect4x; Box6d box6d; Box6f box6f; Box6i box6i; Box6x box6x; rect4d = Rect4d_fromPositionAndSize(VECTOR2d(0.0, 0.0), VECTOR2d(0.0, 0.0)); assertRect4d(rect4d, 0.0, 0.0, 0.0, 0.0); rect4d = Rect4d_fromPositionAndSize(VECTOR2d(1.0, 3.0), VECTOR2d(1.0, 1.0)); assertRect4d(rect4d, 1.0, 2.0, 3.0, 4.0); rect4f = Rect4f_fromPositionAndSize(VECTOR2f(0.0f, 0.0f), VECTOR2f(0.0f, 0.0f)); assertRect4f(rect4f, 0.0f, 0.0f, 0.0f, 0.0f); rect4f = Rect4f_fromPositionAndSize(VECTOR2f(1.0f, 3.0f), VECTOR2f(1.0f, 1.0f)); assertRect4f(rect4f, 1.0f, 2.0f, 3.0f, 4.0f); rect4i = Rect4i_fromPositionAndSize(VECTOR2i(0, 0), VECTOR2i(0, 0)); assertRect4i(rect4i, 0, 0, 0, 0); rect4i = Rect4i_fromPositionAndSize(VECTOR2i(1, 3), VECTOR2i(1, 1)); assertRect4i(rect4i, 1, 2, 3, 4); rect4x = Rect4x_fromPositionAndSize(VECTOR2x(0x00000, 0x00000), VECTOR2x(0x00000, 0x00000)); assertRect4x(rect4x, 0x00000, 0x00000, 0x00000, 0x00000); rect4x = Rect4x_fromPositionAndSize(VECTOR2x(0x10000, 0x30000), VECTOR2x(0x10000, 0x10000)); assertRect4x(rect4x, 0x10000, 0x20000, 0x30000, 0x40000); box6d = Box6d_fromPositionAndSize(VECTOR3d(0.0, 0.0, 0.0), VECTOR3d(0.0, 0.0, 0.0)); assertBox6d(box6d, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); box6d = Box6d_fromPositionAndSize(VECTOR3d(1.0, 3.0, 5.0), VECTOR3d(1.0, 1.0, 1.0)); assertBox6d(box6d, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0); box6f = Box6f_fromPositionAndSize(VECTOR3f(0.0f, 0.0f, 0.0f), VECTOR3f(0.0f, 0.0f, 0.0f)); assertBox6f(box6f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f); box6f = Box6f_fromPositionAndSize(VECTOR3f(1.0f, 3.0f, 5.0f), VECTOR3f(1.0f, 1.0f, 1.0f)); assertBox6f(box6f, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f); box6i = Box6i_fromPositionAndSize(VECTOR3i(0, 0, 0), VECTOR3i(0, 0, 0)); assertBox6i(box6i, 0, 0, 0, 0, 0, 0); box6i = Box6i_fromPositionAndSize(VECTOR3i(1, 3, 5), VECTOR3i(1, 1, 1)); assertBox6i(box6i, 1, 2, 3, 4, 5, 6); box6x = Box6x_fromPositionAndSize(VECTOR3x(0x00000, 0x00000, 0x00000), VECTOR3x(0x00000, 0x00000, 0x00000)); assertBox6x(box6x, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000); box6x = Box6x_fromPositionAndSize(VECTOR3x(0x10000, 0x30000, 0x50000), VECTOR3x(0x10000, 0x10000, 0x10000)); assertBox6x(box6x, 0x10000, 0x20000, 0x30000, 0x40000, 0x50000, 0x60000); } static void testFromPositionSizeOrigin(void) { Rect4d rect4d; Rect4f rect4f; Rect4i rect4i; Rect4x rect4x; Box6d box6d; Box6f box6f; Box6i box6i; Box6x box6x; rect4d = Rect4d_fromPositionSizeOrigin(VECTOR2d(0.0, 0.0), VECTOR2d(0.0, 0.0), VECTOR2d(0.0, 0.0)); assertRect4d(rect4d, 0.0, 0.0, 0.0, 0.0); rect4d = Rect4d_fromPositionSizeOrigin(VECTOR2d(1.0, 3.0), VECTOR2d(1.0, 1.0), VECTOR2d(0.0, 0.0)); assertRect4d(rect4d, 1.0, 2.0, 3.0, 4.0); rect4d = Rect4d_fromPositionSizeOrigin(VECTOR2d(1.0, 3.0), VECTOR2d(2.0, 2.0), VECTOR2d(1.0, 0.5)); assertRect4d(rect4d, -1.0, 1.0, 2.0, 4.0); rect4f = Rect4f_fromPositionSizeOrigin(VECTOR2f(0.0f, 0.0f), VECTOR2f(0.0f, 0.0f), VECTOR2f(0.0f, 0.0f)); assertRect4f(rect4f, 0.0f, 0.0f, 0.0f, 0.0f); rect4f = Rect4f_fromPositionSizeOrigin(VECTOR2f(1.0f, 3.0f), VECTOR2f(1.0f, 1.0f), VECTOR2f(0.0f, 0.0f)); assertRect4f(rect4f, 1.0f, 2.0f, 3.0f, 4.0f); rect4f = Rect4f_fromPositionSizeOrigin(VECTOR2f(1.0f, 3.0f), VECTOR2f(2.0f, 2.0f), VECTOR2f(1.0f, 0.5f)); assertRect4f(rect4f, -1.0f, 1.0f, 2.0f, 4.0f); rect4i = Rect4i_fromPositionSizeOrigin(VECTOR2i(0, 0), VECTOR2i(0, 0), VECTOR2i(0, 0)); assertRect4i(rect4i, 0, 0, 0, 0); rect4i = Rect4i_fromPositionSizeOrigin(VECTOR2i(1, 3), VECTOR2i(1, 1), VECTOR2i(0, 0)); assertRect4i(rect4i, 1, 2, 3, 4); rect4i = Rect4i_fromPositionSizeOrigin(VECTOR2i(1, 3), VECTOR2i(2, 2), VECTOR2i(1, 1)); assertRect4i(rect4i, -1, 1, 1, 3); rect4x = Rect4x_fromPositionSizeOrigin(VECTOR2x(0x00000, 0x00000), VECTOR2x(0x00000, 0x00000), VECTOR2x(0x00000, 0x00000)); assertRect4x(rect4x, 0x00000, 0x00000, 0x00000, 0x00000); rect4x = Rect4x_fromPositionSizeOrigin(VECTOR2x(0x10000, 0x30000), VECTOR2x(0x10000, 0x10000), VECTOR2x(0x00000, 0x00000)); assertRect4x(rect4x, 0x10000, 0x20000, 0x30000, 0x40000); rect4x = Rect4x_fromPositionSizeOrigin(VECTOR2x(0x10000, 0x30000), VECTOR2x(0x20000, 0x20000), VECTOR2x(0x10000, 0x08000)); assertRect4x(rect4x, -0x10000, 0x10000, 0x20000, 0x40000); box6d = Box6d_fromPositionSizeOrigin(VECTOR3d(0.0, 0.0, 0.0), VECTOR3d(0.0, 0.0, 0.0), VECTOR3d(0.0, 0.0, 0.0)); assertBox6d(box6d, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); box6d = Box6d_fromPositionSizeOrigin(VECTOR3d(1.0, 3.0, 5.0), VECTOR3d(1.0, 1.0, 1.0), VECTOR3d(0.0, 0.0, 0.0)); assertBox6d(box6d, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0); box6d = Box6d_fromPositionSizeOrigin(VECTOR3d(1.0, 3.0, 5.0), VECTOR3d(2.0, 2.0, 2.0), VECTOR3d(1.0, 0.5, 0.25)); assertBox6d(box6d, -1.0, 1.0, 2.0, 4.0, 4.5, 6.5); box6f = Box6f_fromPositionSizeOrigin(VECTOR3f(0.0f, 0.0f, 0.0f), VECTOR3f(0.0f, 0.0f, 0.0f), VECTOR3f(0.0f, 0.0f, 0.0f)); assertBox6f(box6f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f); box6f = Box6f_fromPositionSizeOrigin(VECTOR3f(1.0f, 3.0f, 5.0f), VECTOR3f(1.0f, 1.0f, 1.0f), VECTOR3f(0.0f, 0.0f, 0.0f)); assertBox6f(box6f, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f); box6f = Box6f_fromPositionSizeOrigin(VECTOR3f(1.0f, 3.0f, 5.0f), VECTOR3f(2.0f, 2.0f, 2.0f), VECTOR3f(1.0f, 0.5f, 0.25f)); assertBox6f(box6f, -1.0f, 1.0f, 2.0f, 4.0f, 4.5f, 6.5f); box6i = Box6i_fromPositionSizeOrigin(VECTOR3i(0, 0, 0), VECTOR3i(0, 0, 0), VECTOR3i(0, 0, 0)); assertBox6i(box6i, 0, 0, 0, 0, 0, 0); box6i = Box6i_fromPositionSizeOrigin(VECTOR3i(1, 3, 5), VECTOR3i(1, 1, 1), VECTOR3i(0, 0, 0)); assertBox6i(box6i, 1, 2, 3, 4, 5, 6); box6i = Box6i_fromPositionSizeOrigin(VECTOR3i(1, 3, 5), VECTOR3i(2, 2, 2), VECTOR3i(1, 1, 1)); assertBox6i(box6i, -1, 1, 1, 3, 3, 5); box6x = Box6x_fromPositionSizeOrigin(VECTOR3x(0x00000, 0x00000, 0x00000), VECTOR3x(0x00000, 0x00000, 0x00000), VECTOR3x(0x00000, 0x00000, 0x00000)); assertBox6x(box6x, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000); box6x = Box6x_fromPositionSizeOrigin(VECTOR3x(0x10000, 0x30000, 0x50000), VECTOR3x(0x10000, 0x10000, 0x10000), VECTOR3x(0x00000, 0x00000, 0x00000)); assertBox6x(box6x, 0x10000, 0x20000, 0x30000, 0x40000, 0x50000, 0x60000); box6x = Box6x_fromPositionSizeOrigin(VECTOR3x(0x10000, 0x30000, 0x50000), VECTOR3x(0x20000, 0x20000, 0x20000), VECTOR3x(0x10000, 0x08000, 0x04000)); assertBox6x(box6x, -0x10000, 0x10000, 0x20000, 0x40000, 0x48000, 0x68000); } static void testEnclosingPoints(void) { Rect4d rect4d; Rect4f rect4f; Rect4i rect4i; Rect4x rect4x; Box6d box6d; Box6f box6f; Box6i box6i; Box6x box6x; rect4d = Rect4d_enclosingPoints(VECTOR2d(1.0, 2.0), VECTOR2d(3.0, 4.0)); assertRect4d(rect4d, 1.0, 3.0, 2.0, 4.0); rect4d = Rect4d_enclosingPoints(VECTOR2d(5.0, -1.0), VECTOR2d(3.0, -6.0)); assertRect4d(rect4d, 3.0, 5.0, -6.0, -1.0); rect4f = Rect4f_enclosingPoints(VECTOR2f(1.0f, 2.0f), VECTOR2f(3.0f, 4.0f)); assertRect4f(rect4f, 1.0f, 3.0f, 2.0f, 4.0f); rect4f = Rect4f_enclosingPoints(VECTOR2f(5.0f, -1.0f), VECTOR2f(3.0f, -6.0f)); assertRect4f(rect4f, 3.0f, 5.0f, -6.0f, -1.0f); rect4i = Rect4i_enclosingPoints(VECTOR2i(1, 2), VECTOR2i(3, 4)); assertRect4i(rect4i, 1, 3, 2, 4); rect4i = Rect4i_enclosingPoints(VECTOR2i(5, -1), VECTOR2i(3, -6)); assertRect4i(rect4i, 3, 5, -6, -1); rect4x = Rect4x_enclosingPoints(VECTOR2x(0x10000, 0x20000), VECTOR2x(0x30000, 0x40000)); assertRect4x(rect4x, 0x10000, 0x30000, 0x20000, 0x40000); rect4x = Rect4x_enclosingPoints(VECTOR2x(0x50000, -0x10000), VECTOR2x(0x30000, -0x60000)); assertRect4x(rect4x, 0x30000, 0x50000, -0x60000, -0x10000); box6d = Box6d_enclosingPoints(VECTOR3d(1.0, 2.0, 3.0), VECTOR3d(4.0, 5.0, 6.0)); assertBox6d(box6d, 1.0, 4.0, 2.0, 5.0, 3.0, 6.0); box6d = Box6d_enclosingPoints(VECTOR3d(5.0, -1.0, 2.0), VECTOR3d(3.0, -6.0, -2.0)); assertBox6d(box6d, 3.0, 5.0, -6.0, -1.0, -2.0, 2.0); box6f = Box6f_enclosingPoints(VECTOR3f(1.0f, 2.0f, 3.0f), VECTOR3f(4.0f, 5.0f, 6.0f)); assertBox6f(box6f, 1.0f, 4.0f, 2.0f, 5.0f, 3.0f, 6.0f); box6f = Box6f_enclosingPoints(VECTOR3f(5.0f, -1.0f, 2.0f), VECTOR3f(3.0f, -6.0f, -2.0f)); assertBox6f(box6f, 3.0f, 5.0f, -6.0f, -1.0f, -2.0f, 2.0f); box6i = Box6i_enclosingPoints(VECTOR3i(1, 2, 3), VECTOR3i(4, 5, 6)); assertBox6i(box6i, 1, 4, 2, 5, 3, 6); box6i = Box6i_enclosingPoints(VECTOR3i(5, -1, 2), VECTOR3i(3, -6, -2)); assertBox6i(box6i, 3, 5, -6, -1, -2, 2); box6x = Box6x_enclosingPoints(VECTOR3x(0x10000, 0x20000, 0x30000), VECTOR3x(0x40000, 0x50000, 0x60000)); assertBox6x(box6x, 0x10000, 0x40000, 0x20000, 0x50000, 0x30000, 0x60000); box6x = Box6x_enclosingPoints(VECTOR3x(0x50000, -0x10000, 0x20000), VECTOR3x(0x30000, -0x60000, -0x20000)); assertBox6x(box6x, 0x30000, 0x50000, -0x60000, -0x10000, -0x20000, 0x20000); } static void testIntersection(void) { Rect4d rect4d; Rect4f rect4f; Rect4i rect4i; Rect4x rect4x; Box6d box6d; Box6f box6f; Box6i box6i; Box6x box6x; rect4d = Rect4d_intersection(RECT4d(0.0, 4.0, 1.0, 5.0), RECT4d(2.0, 7.0, 2.0, 6.0)); assertRect4d(rect4d, 2.0, 4.0, 2.0, 5.0); rect4d = Rect4d_intersection(RECT4d(3.0, 8.0, 3.0, 7.0), RECT4d(1.0, 5.0, 2.0, 6.0)); assertRect4d(rect4d, 3.0, 5.0, 3.0, 6.0); rect4d = Rect4d_intersection(RECT4d(0.0, 1.0, 0.0, 1.0), RECT4d(1.0, 2.0, 1.0, 2.0)); assertRect4d(rect4d, 0.0, 0.0, 0.0, 0.0); rect4d = Rect4d_intersection(RECT4d(2.0, 1.0, 2.0, 1.0), RECT4d(1.0, 2.0, 1.0, 2.0)); assertRect4d(rect4d, 0.0, 0.0, 0.0, 0.0); rect4d = Rect4d_intersection(RECT4d(0.0, 1.0, 0.0, 1.0), RECT4d(2.0, 0.0, 2.0, 0.0)); assertRect4d(rect4d, 0.0, 0.0, 0.0, 0.0); rect4d = Rect4d_intersection(RECT4d(2.0, 0.0, 2.0, 0.0), RECT4d(1.0, 0.0, 1.0, 0.0)); assertRect4d(rect4d, 0.0, 0.0, 0.0, 0.0); rect4f = Rect4f_intersection(RECT4f(0.0f, 4.0f, 1.0f, 5.0f), RECT4f(2.0f, 7.0f, 2.0f, 6.0f)); assertRect4f(rect4f, 2.0f, 4.0f, 2.0f, 5.0f); rect4f = Rect4f_intersection(RECT4f(3.0f, 8.0f, 3.0f, 7.0f), RECT4f(1.0f, 5.0f, 2.0f, 6.0f)); assertRect4f(rect4f, 3.0f, 5.0f, 3.0f, 6.0f); rect4f = Rect4f_intersection(RECT4f(0.0f, 1.0f, 0.0f, 1.0f), RECT4f(1.0f, 2.0f, 1.0f, 2.0f)); assertRect4f(rect4f, 0.0f, 0.0f, 0.0f, 0.0f); rect4f = Rect4f_intersection(RECT4f(2.0f, 1.0f, 2.0f, 1.0f), RECT4f(1.0f, 2.0f, 1.0f, 2.0f)); assertRect4f(rect4f, 0.0f, 0.0f, 0.0f, 0.0f); rect4f = Rect4f_intersection(RECT4f(0.0f, 1.0f, 0.0f, 1.0f), RECT4f(2.0f, 0.0f, 2.0f, 0.0f)); assertRect4f(rect4f, 0.0f, 0.0f, 0.0f, 0.0f); rect4f = Rect4f_intersection(RECT4f(2.0f, 0.0f, 2.0f, 0.0f), RECT4f(1.0f, 0.0f, 1.0f, 0.0f)); assertRect4f(rect4f, 0.0f, 0.0f, 0.0f, 0.0f); rect4i = Rect4i_intersection(RECT4i(0, 4, 1, 5), RECT4i(2, 7, 2, 6)); assertRect4i(rect4i, 2, 4, 2, 5); rect4i = Rect4i_intersection(RECT4i(3, 8, 3, 7), RECT4i(1, 5, 2, 6)); assertRect4i(rect4i, 3, 5, 3, 6); rect4i = Rect4i_intersection(RECT4i(0, 1, 0, 1), RECT4i(1, 2, 1, 2)); assertRect4i(rect4i, 0, 0, 0, 0); rect4i = Rect4i_intersection(RECT4i(2, 1, 2, 1), RECT4i(1, 2, 1, 2)); assertRect4i(rect4i, 0, 0, 0, 0); rect4i = Rect4i_intersection(RECT4i(0, 1, 0, 1), RECT4i(2, 0, 2, 0)); assertRect4i(rect4i, 0, 0, 0, 0); rect4i = Rect4i_intersection(RECT4i(2, 0, 2, 0), RECT4i(1, 0, 1, 0)); assertRect4i(rect4i, 0, 0, 0, 0); rect4x = Rect4x_intersection(RECT4x(0x00000, 0x40000, 0x10000, 0x50000), RECT4x(0x20000, 0x70000, 0x20000, 0x60000)); assertRect4x(rect4x, 0x20000, 0x40000, 0x20000, 0x50000); rect4x = Rect4x_intersection(RECT4x(0x30000, 0x80000, 0x30000, 0x70000), RECT4x(0x10000, 0x50000, 0x20000, 0x60000)); assertRect4x(rect4x, 0x30000, 0x50000, 0x30000, 0x60000); rect4x = Rect4x_intersection(RECT4x(0x00000, 0x10000, 0x00000, 0x10000), RECT4x(0x10000, 0x20000, 0x10000, 0x20000)); assertRect4x(rect4x, 0x00000, 0x00000, 0x00000, 0x00000); rect4x = Rect4x_intersection(RECT4x(0x20000, 0x10000, 0x20000, 0x10000), RECT4x(0x10000, 0x20000, 0x10000, 0x20000)); assertRect4x(rect4x, 0x00000, 0x00000, 0x00000, 0x00000); rect4x = Rect4x_intersection(RECT4x(0x00000, 0x10000, 0x00000, 0x10000), RECT4x(0x20000, 0x00000, 0x20000, 0x00000)); assertRect4x(rect4x, 0x00000, 0x00000, 0x00000, 0x00000); rect4x = Rect4x_intersection(RECT4x(0x20000, 0x00000, 0x20000, 0x00000), RECT4x(0x10000, 0x00000, 0x10000, 0x00000)); assertRect4x(rect4x, 0x00000, 0x00000, 0x00000, 0x00000); box6d = Box6d_intersection(BOX6d(0.0, 4.0, 1.0, 5.0, 2.0, 6.0), BOX6d(2.0, 7.0, 2.0, 6.0, 2.0, 5.0)); assertBox6d(box6d, 2.0, 4.0, 2.0, 5.0, 2.0, 5.0); box6d = Box6d_intersection(BOX6d(3.0, 8.0, 3.0, 7.0, 3.0, 6.0), BOX6d(1.0, 5.0, 2.0, 6.0, 3.0, 7.0)); assertBox6d(box6d, 3.0, 5.0, 3.0, 6.0, 3.0, 6.0); box6d = Box6d_intersection(BOX6d(0.0, 1.0, 0.0, 1.0, 0.0, 1.0), BOX6d(1.0, 2.0, 1.0, 2.0, 1.0, 2.0)); assertBox6d(box6d, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); box6d = Box6d_intersection(BOX6d(2.0, 1.0, 2.0, 1.0, 2.0, 1.0), BOX6d(1.0, 2.0, 1.0, 2.0, 1.0, 2.0)); assertBox6d(box6d, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); box6d = Box6d_intersection(BOX6d(0.0, 1.0, 0.0, 1.0, 0.0, 1.0), BOX6d(2.0, 0.0, 2.0, 0.0, 2.0, 0.0)); assertBox6d(box6d, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); box6d = Box6d_intersection(BOX6d(2.0, 0.0, 2.0, 0.0, 2.0, 0.0), BOX6d(1.0, 0.0, 1.0, 0.0, 1.0, 0.0)); assertBox6d(box6d, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); box6f = Box6f_intersection(BOX6f(0.0f, 4.0f, 1.0f, 5.0f, 2.0f, 6.0f), BOX6f(2.0f, 7.0f, 2.0f, 6.0f, 2.0f, 5.0f)); assertBox6f(box6f, 2.0f, 4.0f, 2.0f, 5.0f, 2.0f, 5.0f); box6f = Box6f_intersection(BOX6f(3.0f, 8.0f, 3.0f, 7.0f, 3.0f, 6.0f), BOX6f(1.0f, 5.0f, 2.0f, 6.0f, 3.0f, 7.0f)); assertBox6f(box6f, 3.0f, 5.0f, 3.0f, 6.0f, 3.0f, 6.0f); box6f = Box6f_intersection(BOX6f(0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f), BOX6f(1.0f, 2.0f, 1.0f, 2.0f, 1.0f, 2.0f)); assertBox6f(box6f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f); box6f = Box6f_intersection(BOX6f(2.0f, 1.0f, 2.0f, 1.0f, 2.0f, 1.0f), BOX6f(1.0f, 2.0f, 1.0f, 2.0f, 1.0f, 2.0f)); assertBox6f(box6f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f); box6f = Box6f_intersection(BOX6f(0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f), BOX6f(2.0f, 0.0f, 2.0f, 0.0f, 2.0f, 0.0f)); assertBox6f(box6f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f); box6f = Box6f_intersection(BOX6f(2.0f, 0.0f, 2.0f, 0.0f, 2.0f, 0.0f), BOX6f(1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f)); assertBox6f(box6f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f); box6i = Box6i_intersection(BOX6i(0, 4, 1, 5, 2, 6), BOX6i(2, 7, 2, 6, 2, 5)); assertBox6i(box6i, 2, 4, 2, 5, 2, 5); box6i = Box6i_intersection(BOX6i(3, 8, 3, 7, 3, 6), BOX6i(1, 5, 2, 6, 3, 7)); assertBox6i(box6i, 3, 5, 3, 6, 3, 6); box6i = Box6i_intersection(BOX6i(0, 1, 0, 1, 0, 1), BOX6i(1, 2, 1, 2, 1, 2)); assertBox6i(box6i, 0, 0, 0, 0, 0, 0); box6i = Box6i_intersection(BOX6i(2, 1, 2, 1, 2, 1), BOX6i(1, 2, 1, 2, 1, 2)); assertBox6i(box6i, 0, 0, 0, 0, 0, 0); box6i = Box6i_intersection(BOX6i(0, 1, 0, 1, 0, 1), BOX6i(2, 0, 2, 0, 2, 0)); assertBox6i(box6i, 0, 0, 0, 0, 0, 0); box6i = Box6i_intersection(BOX6i(2, 0, 2, 0, 2, 0), BOX6i(1, 0, 1, 0, 1, 0)); assertBox6i(box6i, 0, 0, 0, 0, 0, 0); box6x = Box6x_intersection(BOX6x(0x00000, 0x40000, 0x10000, 0x50000, 0x20000, 0x60000), BOX6x(0x20000, 0x70000, 0x20000, 0x60000, 0x20000, 0x50000)); assertBox6x(box6x, 0x20000, 0x40000, 0x20000, 0x50000, 0x20000, 0x50000); box6x = Box6x_intersection(BOX6x(0x30000, 0x80000, 0x30000, 0x70000, 0x30000, 0x60000), BOX6x(0x10000, 0x50000, 0x20000, 0x60000, 0x30000, 0x70000)); assertBox6x(box6x, 0x30000, 0x50000, 0x30000, 0x60000, 0x30000, 0x60000); box6x = Box6x_intersection(BOX6x(0x00000, 0x10000, 0x00000, 0x10000, 0x00000, 0x10000), BOX6x(0x10000, 0x20000, 0x10000, 0x20000, 0x10000, 0x20000)); assertBox6x(box6x, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000); box6x = Box6x_intersection(BOX6x(0x20000, 0x10000, 0x20000, 0x10000, 0x20000, 0x10000), BOX6x(0x10000, 0x20000, 0x10000, 0x20000, 0x10000, 0x20000)); assertBox6x(box6x, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000); box6x = Box6x_intersection(BOX6x(0x00000, 0x10000, 0x00000, 0x10000, 0x00000, 0x10000), BOX6x(0x20000, 0x00000, 0x20000, 0x00000, 0x20000, 0x00000)); assertBox6x(box6x, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000); box6x = Box6x_intersection(BOX6x(0x20000, 0x00000, 0x20000, 0x00000, 0x20000, 0x00000), BOX6x(0x10000, 0x00000, 0x10000, 0x00000, 0x10000, 0x00000)); assertBox6x(box6x, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000); rect4i = Rect4i_intersection(RECT4i(0, 1, 0, 1), RECT4i(2, 3, 2, 3)); assertRect4i(rect4i, 0, 0, 0, 0); rect4i = Rect4i_intersection(RECT4i(0, 0, 0, 0), RECT4i(-2, -1, -4, -3)); assertRect4i(rect4i, 0, 0, 0, 0); rect4i = Rect4i_intersectionNonempty(RECT4i(0, 1, 0, 1), RECT4i(2, 3, 2, 3)); assertRect4i(rect4i, 2, 1, 2, 1); rect4i = Rect4i_intersectionNonempty(RECT4i(0, 0, 0, 0), RECT4i(-2, -1, -4, -3)); assertRect4i(rect4i, 0, -1, 0, -3); } static void testUnion(void) { Rect4d rect4d; Rect4f rect4f; Rect4i rect4i; Rect4x rect4x; Box6d box6d; Box6f box6f; Box6i box6i; Box6x box6x; rect4d = Rect4d_union(RECT4d(0.0, 1.0, 0.0, 1.0), RECT4d(2.0, 3.0, 5.0, 7.0)); assertRect4d(rect4d, 0.0, 3.0, 0.0, 7.0); rect4d = Rect4d_union(RECT4d(4.0, 5.0, 2.0, 3.0), RECT4d(0.0, 1.0, 1.0, 2.0)); assertRect4d(rect4d, 0.0, 5.0, 1.0, 3.0); rect4d = Rect4d_union(RECT4d(2.0, 3.0, 2.0, 3.0), RECT4d(1.0, 0.0, 1.0, 0.0)); assertRect4d(rect4d, 2.0, 3.0, 2.0, 3.0); rect4d = Rect4d_union(RECT4d(3.0, 2.0, 3.0, 2.0), RECT4d(0.0, 1.0, 0.0, 1.0)); assertRect4d(rect4d, 0.0, 1.0, 0.0, 1.0); rect4d = Rect4d_union(RECT4d(3.0, 2.0, 3.0, 2.0), RECT4d(1.0, 0.0, 1.0, 0.0)); assertRect4d(rect4d, 0.0, 0.0, 0.0, 0.0); rect4f = Rect4f_union(RECT4f(0.0f, 1.0f, 0.0f, 1.0f), RECT4f(2.0f, 3.0f, 5.0f, 7.0f)); assertRect4f(rect4f, 0.0f, 3.0f, 0.0f, 7.0f); rect4f = Rect4f_union(RECT4f(4.0f, 5.0f, 2.0f, 3.0f), RECT4f(0.0f, 1.0f, 1.0f, 2.0f)); assertRect4f(rect4f, 0.0f, 5.0f, 1.0f, 3.0f); rect4f = Rect4f_union(RECT4f(2.0f, 3.0f, 2.0f, 3.0f), RECT4f(1.0f, 0.0f, 1.0f, 0.0f)); assertRect4f(rect4f, 2.0f, 3.0f, 2.0f, 3.0f); rect4f = Rect4f_union(RECT4f(3.0f, 2.0f, 3.0f, 2.0f), RECT4f(0.0f, 1.0f, 0.0f, 1.0f)); assertRect4f(rect4f, 0.0f, 1.0f, 0.0f, 1.0f); rect4f = Rect4f_union(RECT4f(3.0f, 2.0f, 3.0f, 2.0f), RECT4f(1.0f, 0.0f, 1.0f, 0.0f)); assertRect4f(rect4f, 0.0f, 0.0f, 0.0f, 0.0f); rect4i = Rect4i_union(RECT4i(0, 1, 0, 1), RECT4i(2, 3, 5, 7)); assertRect4i(rect4i, 0, 3, 0, 7); rect4i = Rect4i_union(RECT4i(4, 5, 2, 3), RECT4i(0, 1, 1, 2)); assertRect4i(rect4i, 0, 5, 1, 3); rect4i = Rect4i_union(RECT4i(2, 3, 2, 3), RECT4i(1, 0, 1, 0)); assertRect4i(rect4i, 2, 3, 2, 3); rect4i = Rect4i_union(RECT4i(3, 2, 3, 2), RECT4i(0, 1, 0, 1)); assertRect4i(rect4i, 0, 1, 0, 1); rect4i = Rect4i_union(RECT4i(3, 2, 3, 2), RECT4i(1, 0, 1, 0)); assertRect4i(rect4i, 0, 0, 0, 0); rect4x = Rect4x_union(RECT4x(0x00000, 0x10000, 0x00000, 0x10000), RECT4x(0x20000, 0x30000, 0x50000, 0x70000)); assertRect4x(rect4x, 0x00000, 0x30000, 0x00000, 0x70000); rect4x = Rect4x_union(RECT4x(0x40000, 0x50000, 0x20000, 0x30000), RECT4x(0x00000, 0x10000, 0x10000, 0x20000)); assertRect4x(rect4x, 0x00000, 0x50000, 0x10000, 0x30000); rect4x = Rect4x_union(RECT4x(0x20000, 0x30000, 0x20000, 0x30000), RECT4x(0x10000, 0x00000, 0x10000, 0x00000)); assertRect4x(rect4x, 0x20000, 0x30000, 0x20000, 0x30000); rect4x = Rect4x_union(RECT4x(0x30000, 0x20000, 0x30000, 0x20000), RECT4x(0x00000, 0x10000, 0x00000, 0x10000)); assertRect4x(rect4x, 0x00000, 0x10000, 0x00000, 0x10000); rect4x = Rect4x_union(RECT4x(0x30000, 0x20000, 0x30000, 0x20000), RECT4x(0x10000, 0x00000, 0x10000, 0x00000)); assertRect4x(rect4x, 0x00000, 0x00000, 0x00000, 0x00000); box6d = Box6d_union(BOX6d(0.0, 1.0, 0.0, 1.0, 0.0, 1.0), BOX6d(2.0, 3.0, 5.0, 7.0, 6.0, 8.0)); assertBox6d(box6d, 0.0, 3.0, 0.0, 7.0, 0.0, 8.0); box6d = Box6d_union(BOX6d(4.0, 5.0, 2.0, 3.0, 1.0, 2.0), BOX6d(0.0, 1.0, 1.0, 2.0, 2.0, 3.0)); assertBox6d(box6d, 0.0, 5.0, 1.0, 3.0, 1.0, 3.0); box6d = Box6d_union(BOX6d(2.0, 3.0, 2.0, 3.0, 2.0, 3.0), BOX6d(1.0, 0.0, 1.0, 0.0, 1.0, 0.0)); assertBox6d(box6d, 2.0, 3.0, 2.0, 3.0, 2.0, 3.0); box6d = Box6d_union(BOX6d(3.0, 2.0, 3.0, 2.0, 3.0, 2.0), BOX6d(0.0, 1.0, 0.0, 1.0, 0.0, 1.0)); assertBox6d(box6d, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0); box6d = Box6d_union(BOX6d(3.0, 2.0, 3.0, 2.0, 3.0, 2.0), BOX6d(1.0, 0.0, 1.0, 0.0, 1.0, 0.0)); assertBox6d(box6d, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); box6f = Box6f_union(BOX6f(0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f), BOX6f(2.0f, 3.0f, 5.0f, 7.0f, 6.0f, 8.0f)); assertBox6f(box6f, 0.0f, 3.0f, 0.0f, 7.0f, 0.0f, 8.0f); box6f = Box6f_union(BOX6f(4.0f, 5.0f, 2.0f, 3.0f, 1.0f, 2.0f), BOX6f(0.0f, 1.0f, 1.0f, 2.0f, 2.0f, 3.0f)); assertBox6f(box6f, 0.0f, 5.0f, 1.0f, 3.0f, 1.0f, 3.0f); box6f = Box6f_union(BOX6f(2.0f, 3.0f, 2.0f, 3.0f, 2.0f, 3.0f), BOX6f(1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f)); assertBox6f(box6f, 2.0f, 3.0f, 2.0f, 3.0f, 2.0f, 3.0f); box6f = Box6f_union(BOX6f(3.0f, 2.0f, 3.0f, 2.0f, 3.0f, 2.0f), BOX6f(0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f)); assertBox6f(box6f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f); box6f = Box6f_union(BOX6f(3.0f, 2.0f, 3.0f, 2.0f, 3.0f, 2.0f), BOX6f(1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f)); assertBox6f(box6f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f); box6i = Box6i_union(BOX6i(0, 1, 0, 1, 0, 1), BOX6i(2, 3, 5, 7, 6, 8)); assertBox6i(box6i, 0, 3, 0, 7, 0, 8); box6i = Box6i_union(BOX6i(4, 5, 2, 3, 1, 2), BOX6i(0, 1, 1, 2, 2, 3)); assertBox6i(box6i, 0, 5, 1, 3, 1, 3); box6i = Box6i_union(BOX6i(2, 3, 2, 3, 2, 3), BOX6i(1, 0, 1, 0, 1, 0)); assertBox6i(box6i, 2, 3, 2, 3, 2, 3); box6i = Box6i_union(BOX6i(3, 2, 3, 2, 3, 2), BOX6i(0, 1, 0, 1, 0, 1)); assertBox6i(box6i, 0, 1, 0, 1, 0, 1); box6i = Box6i_union(BOX6i(3, 2, 3, 2, 3, 2), BOX6i(1, 0, 1, 0, 1, 0)); assertBox6i(box6i, 0, 0, 0, 0, 0, 0); box6x = Box6x_union(BOX6x(0x00000, 0x10000, 0x00000, 0x10000, 0x00000, 0x10000), BOX6x(0x20000, 0x30000, 0x50000, 0x70000, 0x60000, 0x80000)); assertBox6x(box6x, 0x00000, 0x30000, 0x00000, 0x70000, 0x00000, 0x80000); box6x = Box6x_union(BOX6x(0x40000, 0x50000, 0x20000, 0x30000, 0x10000, 0x20000), BOX6x(0x00000, 0x10000, 0x10000, 0x20000, 0x20000, 0x30000)); assertBox6x(box6x, 0x00000, 0x50000, 0x10000, 0x30000, 0x10000, 0x30000); box6x = Box6x_union(BOX6x(0x20000, 0x30000, 0x20000, 0x30000, 0x20000, 0x30000), BOX6x(0x10000, 0x00000, 0x10000, 0x00000, 0x10000, 0x00000)); assertBox6x(box6x, 0x20000, 0x30000, 0x20000, 0x30000, 0x20000, 0x30000); box6x = Box6x_union(BOX6x(0x30000, 0x20000, 0x30000, 0x20000, 0x30000, 0x20000), BOX6x(0x00000, 0x10000, 0x00000, 0x10000, 0x00000, 0x10000)); assertBox6x(box6x, 0x00000, 0x10000, 0x00000, 0x10000, 0x00000, 0x10000); box6x = Box6x_union(BOX6x(0x30000, 0x20000, 0x30000, 0x20000, 0x30000, 0x20000), BOX6x(0x10000, 0x00000, 0x10000, 0x00000, 0x10000, 0x00000)); assertBox6x(box6x, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000); rect4i = Rect4i_union(RECT4i(0, 0, 0, 0), RECT4i(1, 2, 3, 4)); assertRect4i(rect4i, 1, 2, 3, 4); rect4i = Rect4i_union(RECT4i(0, 0, 0, 0), RECT4i(-2, -1, -4, -3)); assertRect4i(rect4i, -2, -1, -4, -3); rect4i = Rect4i_unionNonempty(RECT4i(0, 0, 0, 0), RECT4i(1, 2, 3, 4)); assertRect4i(rect4i, 0, 2, 0, 4); rect4i = Rect4i_unionNonempty(RECT4i(0, 0, 0, 0), RECT4i(-2, -1, -4, -3)); assertRect4i(rect4i, -2, 0, -4, 0); } static void testOffset(void) { Rect4d rect4d; Rect4f rect4f; Rect4i rect4i; Rect4x rect4x; Box6d box6d; Box6f box6f; Box6i box6i; Box6x box6x; rect4d = Rect4d_offset(RECT4d(0.0, 1.0, 0.0, 1.0), VECTOR2d(1.0, 2.0)); assertRect4d(rect4d, 1.0, 2.0, 2.0, 3.0); rect4d = Rect4d_offset(RECT4d(3.0, 5.0, 1.0, 2.0), VECTOR2d(2.0, -1.0)); assertRect4d(rect4d, 5.0, 7.0, 0.0, 1.0); rect4f = Rect4f_offset(RECT4f(0.0f, 1.0f, 0.0f, 1.0f), VECTOR2f(1.0f, 2.0f)); assertRect4f(rect4f, 1.0f, 2.0f, 2.0f, 3.0f); rect4f = Rect4f_offset(RECT4f(3.0f, 5.0f, 1.0f, 2.0f), VECTOR2f(2.0f, -1.0f)); assertRect4f(rect4f, 5.0f, 7.0f, 0.0f, 1.0f); rect4i = Rect4i_offset(RECT4i(0, 1, 0, 1), VECTOR2i(1, 2)); assertRect4i(rect4i, 1, 2, 2, 3); rect4i = Rect4i_offset(RECT4i(3, 5, 1, 2), VECTOR2i(2, -1)); assertRect4i(rect4i, 5, 7, 0, 1); rect4x = Rect4x_offset(RECT4x(0x00000, 0x10000, 0x00000, 0x10000), VECTOR2x(0x10000, 0x20000)); assertRect4x(rect4x, 0x10000, 0x20000, 0x20000, 0x30000); rect4x = Rect4x_offset(RECT4x(0x30000, 0x50000, 0x10000, 0x20000), VECTOR2x(0x20000, -0x10000)); assertRect4x(rect4x, 0x50000, 0x70000, 0x00000, 0x10000); box6d = Box6d_offset(BOX6d(0.0, 1.0, 0.0, 1.0, 0.0, 1.0), VECTOR3d(1.0, 2.0, 3.0)); assertBox6d(box6d, 1.0, 2.0, 2.0, 3.0, 3.0, 4.0); box6d = Box6d_offset(BOX6d(3.0, 5.0, 1.0, 2.0, 6.0, 7.0), VECTOR3d(2.0, -1.0, 1.0)); assertBox6d(box6d, 5.0, 7.0, 0.0, 1.0, 7.0, 8.0); box6f = Box6f_offset(BOX6f(0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f), VECTOR3f(1.0f, 2.0f, 3.0f)); assertBox6f(box6f, 1.0f, 2.0f, 2.0f, 3.0f, 3.0f, 4.0f); box6f = Box6f_offset(BOX6f(3.0f, 5.0f, 1.0f, 2.0f, 6.0f, 7.0f), VECTOR3f(2.0f, -1.0f, 1.0f)); assertBox6f(box6f, 5.0f, 7.0f, 0.0f, 1.0f, 7.0f, 8.0f); box6i = Box6i_offset(BOX6i(0, 1, 0, 1, 0, 1), VECTOR3i(1, 2, 3)); assertBox6i(box6i, 1, 2, 2, 3, 3, 4); box6i = Box6i_offset(BOX6i(3, 5, 1, 2, 6, 7), VECTOR3i(2, -1, 1)); assertBox6i(box6i, 5, 7, 0, 1, 7, 8); box6x = Box6x_offset(BOX6x(0x00000, 0x10000, 0x00000, 0x10000, 0x00000, 0x10000), VECTOR3x(0x10000, 0x20000, 0x30000)); assertBox6x(box6x, 0x10000, 0x20000, 0x20000, 0x30000, 0x30000, 0x40000); box6x = Box6x_offset(BOX6x(0x30000, 0x50000, 0x10000, 0x20000, 0x60000, 0x70000), VECTOR3x(0x20000, -0x10000, 0x10000)); assertBox6x(box6x, 0x50000, 0x70000, 0x00000, 0x10000, 0x70000, 0x80000); } static void testConstrainWithin(void) { Rect4f rect4f; Box6i box6i; rect4f = Rect4f_constrainWithin(RECT4f(1.0f, 2.0f, 1.0f, 2.0f), RECT4f(-5.0f, 5.0f, -5.0f, 5.0f)); assertRect4f(rect4f, 1.0f, 2.0f, 1.0f, 2.0f); rect4f = Rect4f_constrainWithin(RECT4f(7.0f, 10.0f, -14.0f, -10.0f), RECT4f(-5.0f, 5.0f, -5.0f, 5.0f)); assertRect4f(rect4f, 2.0f, 5.0f, -5.0f, -1.0f); rect4f = Rect4f_constrainWithin(RECT4f(-6.0f, -5.0f, 7.0f, 9.0f), RECT4f(-4.0f, 4.0f, -6.0f, 6.0f)); assertRect4f(rect4f, -4.0f, -3.0f, 4.0f, 6.0f); box6i = Box6i_constrainWithin(BOX6i(1, 2, 1, 2, 1, 2), BOX6i(-5, 5, -5, 5, -5, 5)); assertBox6i(box6i, 1, 2, 1, 2, 1, 2); box6i = Box6i_constrainWithin(BOX6i(7, 10, -14, -10, 8, 9), BOX6i(-5, 5, -5, 5, -5, 5)); assertBox6i(box6i, 2, 5, -5, -1, 4, 5); box6i = Box6i_constrainWithin(BOX6i(-6, -5, 7, 9, -12, -8), BOX6i(-4, 4, -6, 6, -7, 5)); assertBox6i(box6i, -4, -3, 4, 6, -7, -3); } static void testInset(void) { Rect4d rect4d; Rect4f rect4f; Rect4i rect4i; Rect4x rect4x; Box6d box6d; Box6f box6f; Box6i box6i; Box6x box6x; rect4d = Rect4d_inset(RECT4d(0.0, 6.0, 0.0, 6.0), VECTOR2d(1.0, 2.0)); assertRect4d(rect4d, 1.0, 5.0, 2.0, 4.0); rect4d = Rect4d_inset(RECT4d(1.0, 10.0, 2.0, 9.0), VECTOR2d(2.0, -1.0)); assertRect4d(rect4d, 3.0, 8.0, 1.0, 10.0); rect4f = Rect4f_inset(RECT4f(0.0f, 6.0f, 0.0f, 6.0f), VECTOR2f(1.0f, 2.0f)); assertRect4f(rect4f, 1.0f, 5.0f, 2.0f, 4.0f); rect4f = Rect4f_inset(RECT4f(1.0f, 10.0f, 2.0f, 9.0f), VECTOR2f(2.0f, -1.0f)); assertRect4f(rect4f, 3.0f, 8.0f, 1.0f, 10.0f); rect4i = Rect4i_inset(RECT4i(0, 6, 0, 6), VECTOR2i(1, 2)); assertRect4i(rect4i, 1, 5, 2, 4); rect4i = Rect4i_inset(RECT4i(1, 10, 2, 9), VECTOR2i(2, -1)); assertRect4i(rect4i, 3, 8, 1, 10); rect4x = Rect4x_inset(RECT4x(0x00000, 0x60000, 0x00000, 0x60000), VECTOR2x(0x10000, 0x20000)); assertRect4x(rect4x, 0x10000, 0x50000, 0x20000, 0x40000); rect4x = Rect4x_inset(RECT4x(0x10000, 0xA0000, 0x20000, 0x90000), VECTOR2x(0x20000, -0x10000)); assertRect4x(rect4x, 0x30000, 0x80000, 0x10000, 0xA0000); box6d = Box6d_inset(BOX6d(0.0, 6.0, 0.0, 6.0, 0.0, 6.0), VECTOR3d(1.0, 2.0, 3.0)); assertBox6d(box6d, 1.0, 5.0, 2.0, 4.0, 3.0, 3.0); box6d = Box6d_inset(BOX6d(1.0, 10.0, 2.0, 9.0, 3.0, 8.0), VECTOR3d(2.0, -1.0, 1.0)); assertBox6d(box6d, 3.0, 8.0, 1.0, 10.0, 4.0, 7.0); box6f = Box6f_inset(BOX6f(0.0f, 6.0f, 0.0f, 6.0f, 0.0f, 6.0f), VECTOR3f(1.0f, 2.0f, 3.0f)); assertBox6f(box6f, 1.0f, 5.0f, 2.0f, 4.0f, 3.0f, 3.0f); box6f = Box6f_inset(BOX6f(1.0f, 10.0f, 2.0f, 9.0f, 3.0f, 8.0f), VECTOR3f(2.0f, -1.0f, 1.0f)); assertBox6f(box6f, 3.0f, 8.0f, 1.0f, 10.0f, 4.0f, 7.0f); box6i = Box6i_inset(BOX6i(0, 6, 0, 6, 0, 6), VECTOR3i(1, 2, 3)); assertBox6i(box6i, 1, 5, 2, 4, 3, 3); box6i = Box6i_inset(BOX6i(1, 10, 2, 9, 3, 8), VECTOR3i(2, -1, 1)); assertBox6i(box6i, 3, 8, 1, 10, 4, 7); box6x = Box6x_inset(BOX6x(0x00000, 0x60000, 0x00000, 0x60000, 0x00000, 0x60000), VECTOR3x(0x10000, 0x20000, 0x30000)); assertBox6x(box6x, 0x10000, 0x50000, 0x20000, 0x40000, 0x30000, 0x30000); box6x = Box6x_inset(BOX6x(0x10000, 0xA0000, 0x20000, 0x90000, 0x30000, 0x80000), VECTOR3x(0x20000, -0x10000, 0x10000)); assertBox6x(box6x, 0x30000, 0x80000, 0x10000, 0xA0000, 0x40000, 0x70000); } static void testInsetMargins(void) { Rect4d rect4d; Rect4f rect4f; Rect4i rect4i; Rect4x rect4x; Box6d box6d; Box6f box6f; Box6i box6i; Box6x box6x; rect4d = Rect4d_insetMargins(RECT4d(0.0, 6.0, 0.0, 6.0), RECT4d(1.0, 2.0, -1.0f, 3.0f)); assertRect4d(rect4d, 1.0, 4.0, -1.0, 3.0); rect4d = Rect4d_insetMargins(RECT4d(1.0, 10.0, 2.0, 9.0), RECT4d(2.0, 1.0, 2.0f, 3.0f)); assertRect4d(rect4d, 3.0, 9.0, 4.0, 6.0); rect4f = Rect4f_insetMargins(RECT4f(0.0f, 6.0f, 0.0f, 6.0f), RECT4f(1.0f, 2.0f, -1.0f, 3.0f)); assertRect4f(rect4f, 1.0f, 4.0f, -1.0f, 3.0f); rect4f = Rect4f_insetMargins(RECT4f(1.0f, 10.0f, 2.0f, 9.0f), RECT4f(2.0f, 1.0f, 2.0f, 3.0f)); assertRect4f(rect4f, 3.0f, 9.0f, 4.0f, 6.0f); rect4i = Rect4i_insetMargins(RECT4i(0, 6, 0, 6), RECT4i(1, 2, -1, 3)); assertRect4i(rect4i, 1, 4, -1, 3); rect4i = Rect4i_insetMargins(RECT4i(1, 10, 2, 9), RECT4i(2, 1, 2, 3)); assertRect4i(rect4i, 3, 9, 4, 6); rect4x = Rect4x_insetMargins(RECT4x(0x00000, 0x60000, 0x00000, 0x60000), RECT4x(0x10000, 0x20000, -0x10000, 0x30000)); assertRect4x(rect4x, 0x10000, 0x40000, -0x10000, 0x30000); rect4x = Rect4x_insetMargins(RECT4x(0x10000, 0xA0000, 0x20000, 0x90000), RECT4x(0x20000, 0x10000, 0x20000, 0x30000)); assertRect4x(rect4x, 0x30000, 0x90000, 0x40000, 0x60000); box6d = Box6d_insetMargins(BOX6d(0.0, 6.0, 0.0, 6.0, 0.0, 6.0), BOX6d(1.0, 2.0, -1.0, 3.0, 3.0, 2.0)); assertBox6d(box6d, 1.0, 4.0, -1.0, 3.0, 3.0, 4.0); box6d = Box6d_insetMargins(BOX6d(1.0, 10.0, 2.0, 9.0, 3.0, 8.0), BOX6d(2.0, -1.0, -1.0f, 3.0f, 1.0, 1.0f)); assertBox6d(box6d, 3.0, 11.0, 1.0, 6.0, 4.0, 7.0); box6f = Box6f_insetMargins(BOX6f(0.0f, 6.0f, 0.0f, 6.0f, 0.0f, 6.0f), BOX6f(1.0f, 2.0f, -1.0, 3.0, 3.0f, 2.0)); assertBox6f(box6f, 1.0f, 4.0f, -1.0f, 3.0f, 3.0f, 4.0f); box6f = Box6f_insetMargins(BOX6f(1.0f, 10.0f, 2.0f, 9.0f, 3.0f, 8.0f), BOX6f(2.0f, -1.0f, -1.0, 3.0, 1.0f, 1.0)); assertBox6f(box6f, 3.0f, 11.0f, 1.0f, 6.0f, 4.0f, 7.0f); box6i = Box6i_insetMargins(BOX6i(0, 6, 0, 6, 0, 6), BOX6i(1, 2, -1, 3, 3, 2)); assertBox6i(box6i, 1, 4, -1, 3, 3, 4); box6i = Box6i_insetMargins(BOX6i(1, 10, 2, 9, 3, 8), BOX6i(2, -1, -1, 3, 1, 1)); assertBox6i(box6i, 3, 11, 1, 6, 4, 7); box6x = Box6x_insetMargins(BOX6x(0x00000, 0x60000, 0x00000, 0x60000, 0x00000, 0x60000), BOX6x(0x10000, 0x20000, -0x10000, 0x30000, 0x30000, 0x20000)); assertBox6x(box6x, 0x10000, 0x40000, -0x10000, 0x30000, 0x30000, 0x40000); box6x = Box6x_insetMargins(BOX6x(0x10000, 0xA0000, 0x20000, 0x90000, 0x30000, 0x80000), BOX6x(0x20000, -0x10000, -0x10000, 0x30000, 0x10000, 0x10000)); assertBox6x(box6x, 0x30000, 0xB0000, 0x10000, 0x60000, 0x40000, 0x70000); } static void testOutsetMargins(void) { Rect4d rect4d; Rect4f rect4f; Rect4i rect4i; Rect4x rect4x; Box6d box6d; Box6f box6f; Box6i box6i; Box6x box6x; rect4d = Rect4d_outsetMargins(RECT4d(0.0, 6.0, 0.0, 6.0), RECT4d(-1.0, -2.0, 1.0f, -3.0f)); assertRect4d(rect4d, 1.0, 4.0, -1.0, 3.0); rect4d = Rect4d_outsetMargins(RECT4d(1.0, 10.0, 2.0, 9.0), RECT4d(-2.0, -1.0, -2.0f, -3.0f)); assertRect4d(rect4d, 3.0, 9.0, 4.0, 6.0); rect4f = Rect4f_outsetMargins(RECT4f(0.0f, 6.0f, 0.0f, 6.0f), RECT4f(-1.0f, -2.0f, 1.0f, -3.0f)); assertRect4f(rect4f, 1.0f, 4.0f, -1.0f, 3.0f); rect4f = Rect4f_outsetMargins(RECT4f(1.0f, 10.0f, 2.0f, 9.0f), RECT4f(-2.0f, -1.0f, -2.0f, -3.0f)); assertRect4f(rect4f, 3.0f, 9.0f, 4.0f, 6.0f); rect4i = Rect4i_outsetMargins(RECT4i(0, 6, 0, 6), RECT4i(-1, -2, 1, -3)); assertRect4i(rect4i, 1, 4, -1, 3); rect4i = Rect4i_outsetMargins(RECT4i(1, 10, 2, 9), RECT4i(-2, -1, -2, -3)); assertRect4i(rect4i, 3, 9, 4, 6); rect4x = Rect4x_outsetMargins(RECT4x(0x00000, 0x60000, 0x00000, 0x60000), RECT4x(-0x10000, -0x20000, 0x10000, -0x30000)); assertRect4x(rect4x, 0x10000, 0x40000, -0x10000, 0x30000); rect4x = Rect4x_outsetMargins(RECT4x(0x10000, 0xA0000, 0x20000, 0x90000), RECT4x(-0x20000, -0x10000, -0x20000, -0x30000)); assertRect4x(rect4x, 0x30000, 0x90000, 0x40000, 0x60000); box6d = Box6d_outsetMargins(BOX6d(0.0, 6.0, 0.0, 6.0, 0.0, 6.0), BOX6d(-1.0, -2.0, 1.0, -3.0, -3.0, -2.0)); assertBox6d(box6d, 1.0, 4.0, -1.0, 3.0, 3.0, 4.0); box6d = Box6d_outsetMargins(BOX6d(1.0, 10.0, 2.0, 9.0, 3.0, 8.0), BOX6d(-2.0, 1.0, 1.0f, -3.0f, -1.0, -1.0f)); assertBox6d(box6d, 3.0, 11.0, 1.0, 6.0, 4.0, 7.0); box6f = Box6f_outsetMargins(BOX6f(0.0f, 6.0f, 0.0f, 6.0f, 0.0f, 6.0f), BOX6f(-1.0f, -2.0f, 1.0, -3.0, -3.0f, -2.0)); assertBox6f(box6f, 1.0f, 4.0f, -1.0f, 3.0f, 3.0f, 4.0f); box6f = Box6f_outsetMargins(BOX6f(1.0f, 10.0f, 2.0f, 9.0f, 3.0f, 8.0f), BOX6f(-2.0f, 1.0f, 1.0, -3.0, -1.0f, -1.0)); assertBox6f(box6f, 3.0f, 11.0f, 1.0f, 6.0f, 4.0f, 7.0f); box6i = Box6i_outsetMargins(BOX6i(0, 6, 0, 6, 0, 6), BOX6i(-1, -2, 1, -3, -3, -2)); assertBox6i(box6i, 1, 4, -1, 3, 3, 4); box6i = Box6i_outsetMargins(BOX6i(1, 10, 2, 9, 3, 8), BOX6i(-2, 1, 1, -3, -1, -1)); assertBox6i(box6i, 3, 11, 1, 6, 4, 7); box6x = Box6x_outsetMargins(BOX6x(0x00000, 0x60000, 0x00000, 0x60000, 0x00000, 0x60000), BOX6x(-0x10000, -0x20000, 0x10000, -0x30000, -0x30000, -0x20000)); assertBox6x(box6x, 0x10000, 0x40000, -0x10000, 0x30000, 0x30000, 0x40000); box6x = Box6x_outsetMargins(BOX6x(0x10000, 0xA0000, 0x20000, 0x90000, 0x30000, 0x80000), BOX6x(-0x20000, 0x10000, 0x10000, -0x30000, -0x10000, -0x10000)); assertBox6x(box6x, 0x30000, 0xB0000, 0x10000, 0x60000, 0x40000, 0x70000); } static void testInterpolate(void) { Rect4d rect4d; Rect4f rect4f; Rect4x rect4x; Box6d box6d; Box6f box6f; Box6x box6x; rect4d = Rect4d_interpolate(RECT4d(0.0, 6.0, 0.0, 6.0), RECT4d(2.0, 8.0, -2.0, 2.0), 0.5); assertRect4d(rect4d, 1.0, 7.0, -1.0, 4.0); rect4d = Rect4d_interpolate(RECT4d(1.0, 10.0, 2.0, 9.0), RECT4d(-3.0, 2.0, 3.0, 11.0), 0.25); assertRect4d(rect4d, 0.0, 8.0, 2.25, 9.5); rect4f = Rect4f_interpolate(RECT4f(0.0f, 6.0f, 0.0f, 6.0f), RECT4f(2.0f, 8.0f, -2.0f, 2.0f), 0.5f); assertRect4f(rect4f, 1.0f, 7.0f, -1.0f, 4.0f); rect4f = Rect4f_interpolate(RECT4f(1.0f, 10.0f, 2.0f, 9.0f), RECT4f(-3.0f, 2.0f, 3.0f, 11.0f), 0.25f); assertRect4f(rect4f, 0.0f, 8.0f, 2.25f, 9.5f); rect4x = Rect4x_interpolate(RECT4x(0x00000, 0x60000, 0x00000, 0x60000), RECT4x(0x20000, 0x80000, -0x20000, 0x20000), 0x08000); assertRect4x(rect4x, 0x10000, 0x70000, -0x10000, 0x40000); rect4x = Rect4x_interpolate(RECT4x(0x10000, 0xA0000, 0x20000, 0x90000), RECT4x(-0x30000, 0x20000, 0x30000, 0xB0000), 0x04000); assertRect4x(rect4x, 0x00000, 0x80000, 0x24000, 0x98000); box6d = Box6d_interpolate(BOX6d(0.0, 6.0, 0.0, 6.0, 0.0, 6.0), BOX6d(2.0, 8.0, -2.0, 2.0, 4.0, 10.0), 0.5); assertBox6d(box6d, 1.0, 7.0, -1.0, 4.0, 2.0, 8.0); box6d = Box6d_interpolate(BOX6d(1.0, 10.0, 2.0, 9.0, 3.0, 8.0), BOX6d(-3.0, 2.0, 3.0, 11.0, -1.0, 6.0), 0.25); assertBox6d(box6d, 0.0, 8.0, 2.25, 9.5, 2.0, 7.5); box6f = Box6f_interpolate(BOX6f(0.0f, 6.0f, 0.0f, 6.0f, 0.0f, 6.0f), BOX6f(2.0f, 8.0f, -2.0f, 2.0f, 4.0f, 10.0f), 0.5f); assertBox6f(box6f, 1.0f, 7.0f, -1.0f, 4.0f, 2.0f, 8.0f); box6f = Box6f_interpolate(BOX6f(1.0f, 10.0f, 2.0f, 9.0f, 3.0f, 8.0f), BOX6f(-3.0f, 2.0f, 3.0f, 11.0f, -1.0f, 6.0f), 0.25f); assertBox6f(box6f, 0.0f, 8.0f, 2.25f, 9.5f, 2.0f, 7.5f); box6x = Box6x_interpolate(BOX6x(0x00000, 0x60000, 0x00000, 0x60000, 0x00000, 0x60000), BOX6x(0x20000, 0x80000, -0x20000, 0x20000, 0x40000, 0xA0000), 0x08000); assertBox6x(box6x, 0x10000, 0x70000, -0x10000, 0x40000, 0x20000, 0x80000); box6x = Box6x_interpolate(BOX6x(0x10000, 0xA0000, 0x20000, 0x90000, 0x30000, 0x80000), BOX6x(-0x30000, 0x20000, 0x30000, 0xB0000, -0x10000, 0x60000), 0x04000); assertBox6x(box6x, 0x00000, 0x80000, 0x24000, 0x98000, 0x20000, 0x78000); } static void testRound(void) { Rect4d rect4d; Rect4f rect4f; Rect4x rect4x; Box6d box6d; Box6f box6f; Box6x box6x; rect4d = Rect4d_round(RECT4d(0.1, 0.5, 0.49, 1.0)); assertRect4d(rect4d, 0.0, 1.0, 0.0, 1.0); rect4d = Rect4d_round(RECT4d(-1.5, -10.7, 3.4, -3.3)); assertRect4d(rect4d, -1.0, -11.0, 3.0, -3.0); rect4f = Rect4f_round(RECT4f(0.1f, 0.5f, 0.49f, 1.0f)); assertRect4f(rect4f, 0.0f, 1.0f, 0.0f, 1.0f); rect4f = Rect4f_round(RECT4f(-1.5f, -10.7f, 3.4f, -3.3f)); assertRect4f(rect4f, -1.0f, -11.0f, 3.0f, -3.0f); rect4x = Rect4x_round(RECT4x(0x00100, 0x08000, 0x07FFF, 0x10000)); assertRect4x(rect4x, 0x00000, 0x10000, 0x00000, 0x10000); rect4x = Rect4x_round(RECT4x(-0x18000, -0x59000, 0x37000, -0x35000)); assertRect4x(rect4x, -0x10000, -0x60000, 0x30000, -0x30000); box6d = Box6d_round(BOX6d(0.1, 0.5, 0.49, 1.0, 0.51, 0.0)); assertBox6d(box6d, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0); box6d = Box6d_round(BOX6d(-1.5, -10.7, 3.4, -3.3, 3.5, -0.1)); assertBox6d(box6d, -1.0, -11.0, 3.0, -3.0, 4.0, 0.0); box6f = Box6f_round(BOX6f(0.1f, 0.5f, 0.49f, 1.0f, 0.51f, 0.0f)); assertBox6f(box6f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 0.0f); box6f = Box6f_round(BOX6f(-1.5f, -10.7f, 3.4f, -3.3f, 3.5f, -0.1f)); assertBox6f(box6f, -1.0f, -11.0f, 3.0f, -3.0f, 4.0f, 0.0f); box6x = Box6x_round(BOX6x(0x00100, 0x08000, 0x07FFF, 0x10000, 0x08001, 0x00000)); assertBox6x(box6x, 0x00000, 0x10000, 0x00000, 0x10000, 0x10000, 0x00000); box6x = Box6x_round(BOX6x(-0x18000, -0x59000, 0x37000, -0x35000, 0x38000, -0x01000)); assertBox6x(box6x, -0x10000, -0x60000, 0x30000, -0x30000, 0x40000, 0x00000); } static void testUnionWithPosition(void) { Rect4d rect4d = Rect4d_unionWithPosition(RECT4d(0.0, 1.0, 0.0, 1.0), VECTOR2d(0.5, 0.5)); assertRect4d(rect4d, 0.0, 1.0, 0.0, 1.0); rect4d = Rect4d_unionWithPosition(RECT4d(0.0, 1.0, 0.0, 1.0), VECTOR2d(-1.0, -2.0)); assertRect4d(rect4d, -1.0, 1.0, -2.0, 1.0); rect4d = Rect4d_unionWithPosition(RECT4d(3.0, 5.0, 2.0, 7.0), VECTOR2d(10.0, 10.0)); assertRect4d(rect4d, 3.0, 10.0, 2.0, 10.0); rect4d = Rect4d_unionWithPosition(RECT4d_MIN, VECTOR2d(1.0, 2.0)); assertRect4d(rect4d, 1.0, 1.0, 2.0, 2.0); Rect4f rect4f = Rect4f_unionWithPosition(RECT4f(0.0f, 1.0f, 0.0f, 1.0f), VECTOR2f(0.5f, 0.5f)); assertRect4f(rect4f, 0.0f, 1.0f, 0.0f, 1.0f); rect4f = Rect4f_unionWithPosition(RECT4f(0.0f, 1.0f, 0.0f, 1.0f), VECTOR2f(-1.0f, -2.0f)); assertRect4f(rect4f, -1.0f, 1.0f, -2.0f, 1.0f); rect4f = Rect4f_unionWithPosition(RECT4f(3.0f, 5.0f, 2.0f, 7.0f), VECTOR2f(10.0f, 10.0f)); assertRect4f(rect4f, 3.0f, 10.0f, 2.0f, 10.0f); rect4f = Rect4f_unionWithPosition(RECT4f_MIN, VECTOR2f(1.0f, 2.0f)); assertRect4f(rect4f, 1.0f, 1.0f, 2.0f, 2.0f); Rect4i rect4i = Rect4i_unionWithPosition(RECT4i(0, 2, 0, 2), VECTOR2i(1, 1)); assertRect4i(rect4i, 0, 2, 0, 2); rect4i = Rect4i_unionWithPosition(RECT4i(0, 1, 0, 1), VECTOR2i(-1, -2)); assertRect4i(rect4i, -1, 1, -2, 1); rect4i = Rect4i_unionWithPosition(RECT4i(3, 5, 2, 7), VECTOR2i(10, 10)); assertRect4i(rect4i, 3, 10, 2, 10); rect4i = Rect4i_unionWithPosition(RECT4i_MIN, VECTOR2i(1, 2)); assertRect4i(rect4i, 1, 1, 2, 2); Rect4u rect4u = Rect4u_unionWithPosition(RECT4u(0, 2, 0, 2), VECTOR2u(1, 1)); assertRect4u(rect4u, 0, 2, 0, 2); rect4u = Rect4u_unionWithPosition(RECT4u(3, 4, 3, 4), VECTOR2u(2, 1)); assertRect4u(rect4u, 2, 4, 1, 4); rect4u = Rect4u_unionWithPosition(RECT4u(3, 5, 2, 7), VECTOR2u(10, 10)); assertRect4u(rect4u, 3, 10, 2, 10); rect4u = Rect4u_unionWithPosition(RECT4u_MIN, VECTOR2u(1, 2)); assertRect4u(rect4u, 1, 1, 2, 2); Rect4x rect4x = Rect4x_unionWithPosition(RECT4x(0x00000, 0x10000, 0x00000, 0x10000), VECTOR2x(0x08000, 0x08000)); assertRect4x(rect4x, 0x00000, 0x10000, 0x00000, 0x10000); rect4x = Rect4x_unionWithPosition(RECT4x(0x00000, 0x10000, 0x00000, 0x10000), VECTOR2x(-0x10000, -0x20000)); assertRect4x(rect4x, -0x10000, 0x10000, -0x20000, 0x10000); rect4x = Rect4x_unionWithPosition(RECT4x(0x30000, 0x50000, 0x20000, 0x70000), VECTOR2x(0xA0000, 0xA0000)); assertRect4x(rect4x, 0x30000, 0xA0000, 0x20000, 0xA0000); rect4x = Rect4x_unionWithPosition(RECT4x_MIN, VECTOR2x(0x10000, 0x20000)); assertRect4x(rect4x, 0x10000, 0x10000, 0x20000, 0x20000); Box6f box6f = Box6f_unionWithPosition(BOX6f(0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f), VECTOR3f(0.5f, 0.5f, 0.5f)); assertBox6f(box6f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f); box6f = Box6f_unionWithPosition(BOX6f(0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f), VECTOR3f(-1.0f, -2.0f, -3.0f)); assertBox6f(box6f, -1.0f, 1.0f, -2.0f, 1.0f, -3.0f, 1.0f); box6f = Box6f_unionWithPosition(BOX6f(3.0f, 5.0f, 2.0f, 7.0f, 1.0f, 8.0f), VECTOR3f(10.0f, 11.0f, 12.0f)); assertBox6f(box6f, 3.0f, 10.0f, 2.0f, 11.0f, 1.0f, 12.0f); box6f = Box6f_unionWithPosition(BOX6f_MIN, VECTOR3f(1.0f, 2.0f, 3.0f)); assertBox6f(box6f, 1.0f, 1.0f, 2.0f, 2.0f, 3.0f, 3.0f); } static void testIsEmpty(void) { bool empty; empty = Rect4d_isEmpty(RECT4d(0.0, 1.0, 0.0, 1.0)); TestCase_assert(!empty, "Expected false but got true"); empty = Rect4d_isEmpty(RECT4d(0.0, 0.0, 0.0, 0.0)); TestCase_assert(empty, "Expected true but got false"); empty = Rect4d_isEmpty(RECT4d(0.0, 1.0, 1.0, 0.0)); TestCase_assert(empty, "Expected true but got false"); empty = Rect4d_isEmpty(RECT4d(1.0, 0.0, 0.0, 1.0)); TestCase_assert(empty, "Expected true but got false"); empty = Rect4f_isEmpty(RECT4f(0.0f, 1.0f, 0.0f, 1.0f)); TestCase_assert(!empty, "Expected false but got true"); empty = Rect4f_isEmpty(RECT4f(0.0f, 0.0f, 0.0f, 0.0f)); TestCase_assert(empty, "Expected true but got false"); empty = Rect4f_isEmpty(RECT4f(0.0f, 1.0f, 1.0f, 0.0f)); TestCase_assert(empty, "Expected true but got false"); empty = Rect4f_isEmpty(RECT4f(1.0f, 0.0f, 0.0f, 1.0f)); TestCase_assert(empty, "Expected true but got false"); empty = Rect4i_isEmpty(RECT4i(0, 1, 0, 1)); TestCase_assert(!empty, "Expected false but got true"); empty = Rect4i_isEmpty(RECT4i(0, 0, 0, 0)); TestCase_assert(empty, "Expected true but got false"); empty = Rect4i_isEmpty(RECT4i(0, 1, 1, 0)); TestCase_assert(empty, "Expected true but got false"); empty = Rect4i_isEmpty(RECT4i(1, 0, 0, 1)); TestCase_assert(empty, "Expected true but got false"); empty = Rect4x_isEmpty(RECT4x(0x00000, 0x10000, 0x00000, 0x10000)); TestCase_assert(!empty, "Expected false but got true"); empty = Rect4x_isEmpty(RECT4x(0x00000, 0x00000, 0x00000, 0x00000)); TestCase_assert(empty, "Expected true but got false"); empty = Rect4x_isEmpty(RECT4x(0x00000, 0x10000, 0x10000, 0x00000)); TestCase_assert(empty, "Expected true but got false"); empty = Rect4x_isEmpty(RECT4x(0x10000, 0x00000, 0x00000, 0x10000)); TestCase_assert(empty, "Expected true but got false"); empty = Box6d_isEmpty(BOX6d(0.0, 1.0, 0.0, 1.0, 0.0, 1.0)); TestCase_assert(!empty, "Expected false but got true"); empty = Box6d_isEmpty(BOX6d(0.0, 0.0, 0.0, 0.0, 0.0, 0.0)); TestCase_assert(empty, "Expected true but got false"); empty = Box6d_isEmpty(BOX6d(0.0, 1.0, 0.0, 1.0, 1.0, 0.0)); TestCase_assert(empty, "Expected true but got false"); empty = Box6d_isEmpty(BOX6d(0.0, 1.0, 1.0, 0.0, 0.0, 1.0)); TestCase_assert(empty, "Expected true but got false"); empty = Box6d_isEmpty(BOX6d(1.0, 0.0, 0.0, 1.0, 0.0, 1.0)); TestCase_assert(empty, "Expected true but got false"); empty = Box6f_isEmpty(BOX6f(0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f)); TestCase_assert(!empty, "Expected false but got true"); empty = Box6f_isEmpty(BOX6f(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f)); TestCase_assert(empty, "Expected true but got false"); empty = Box6f_isEmpty(BOX6f(0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 0.0f)); TestCase_assert(empty, "Expected true but got false"); empty = Box6f_isEmpty(BOX6f(0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f)); TestCase_assert(empty, "Expected true but got false"); empty = Box6f_isEmpty(BOX6f(1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f)); TestCase_assert(empty, "Expected true but got false"); empty = Box6i_isEmpty(BOX6i(0, 1, 0, 1, 0, 1)); TestCase_assert(!empty, "Expected false but got true"); empty = Box6i_isEmpty(BOX6i(0, 0, 0, 0, 0, 0)); TestCase_assert(empty, "Expected true but got false"); empty = Box6i_isEmpty(BOX6i(0, 1, 0, 1, 1, 0)); TestCase_assert(empty, "Expected true but got false"); empty = Box6i_isEmpty(BOX6i(0, 1, 1, 0, 0, 1)); TestCase_assert(empty, "Expected true but got false"); empty = Box6i_isEmpty(BOX6i(1, 0, 0, 1, 0, 1)); TestCase_assert(empty, "Expected true but got false"); empty = Box6x_isEmpty(BOX6x(0x00000, 0x10000, 0x00000, 0x10000, 0x00000, 0x10000)); TestCase_assert(!empty, "Expected false but got true"); empty = Box6x_isEmpty(BOX6x(0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000)); TestCase_assert(empty, "Expected true but got false"); empty = Box6x_isEmpty(BOX6x(0x00000, 0x10000, 0x00000, 0x10000, 0x10000, 0x00000)); TestCase_assert(empty, "Expected true but got false"); empty = Box6x_isEmpty(BOX6x(0x00000, 0x10000, 0x10000, 0x00000, 0x00000, 0x10000)); TestCase_assert(empty, "Expected true but got false"); empty = Box6x_isEmpty(BOX6x(0x10000, 0x00000, 0x00000, 0x10000, 0x00000, 0x10000)); TestCase_assert(empty, "Expected true but got false"); } static void testIsZero(void) { TestCase_assertBoolTrue(Rect4i_isZero(RECT4i(0, 0, 0, 0))); TestCase_assertBoolFalse(Rect4i_isZero(RECT4i(1, 0, 0, 0))); TestCase_assertBoolFalse(Rect4i_isZero(RECT4i(0, 1, 0, 0))); TestCase_assertBoolFalse(Rect4i_isZero(RECT4i(0, 0, 1, 0))); TestCase_assertBoolFalse(Rect4i_isZero(RECT4i(0, 0, 0, 1))); TestCase_assertBoolFalse(Rect4i_isZero(RECT4i(1, 1, 1, 1))); TestCase_assertBoolTrue(Box6f_isZero(BOX6f(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f))); TestCase_assertBoolFalse(Box6f_isZero(BOX6f(1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f))); TestCase_assertBoolFalse(Box6f_isZero(BOX6f(0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f))); TestCase_assertBoolFalse(Box6f_isZero(BOX6f(0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f))); TestCase_assertBoolFalse(Box6f_isZero(BOX6f(0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f))); TestCase_assertBoolFalse(Box6f_isZero(BOX6f(0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f))); TestCase_assertBoolFalse(Box6f_isZero(BOX6f(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f))); TestCase_assertBoolFalse(Box6f_isZero(BOX6f(1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f))); } static void testIsEqual(void) { TestCase_assertBoolTrue(Rect4d_isEqual(RECT4d(0.0, 0.0, 0.0, 0.0), RECT4d(0.0, 0.0, 0.0, 0.0))); TestCase_assertBoolTrue(Rect4d_isEqual(RECT4d(1.0, 2.0, 3.0, 4.0), RECT4d(1.0, 2.0, 3.0, 4.0))); TestCase_assertBoolFalse(Rect4d_isEqual(RECT4d(0.0, 0.0, 0.0, 0.0), RECT4d(1.0, 2.0, 3.0, 4.0))); TestCase_assertBoolTrue(Rect4f_isEqual(RECT4f(0.0f, 0.0f, 0.0f, 0.0f), RECT4f(0.0f, 0.0f, 0.0f, 0.0f))); TestCase_assertBoolTrue(Rect4f_isEqual(RECT4f(1.0f, 2.0f, 3.0f, 4.0f), RECT4f(1.0f, 2.0f, 3.0f, 4.0f))); TestCase_assertBoolFalse(Rect4f_isEqual(RECT4f(0.0f, 0.0f, 0.0f, 0.0f), RECT4f(1.0f, 2.0f, 3.0f, 4.0f))); TestCase_assertBoolTrue(Rect4i_isEqual(RECT4i(0, 0, 0, 0), RECT4i(0, 0, 0, 0))); TestCase_assertBoolTrue(Rect4i_isEqual(RECT4i(1, 2, 3, 4), RECT4i(1, 2, 3, 4))); TestCase_assertBoolFalse(Rect4i_isEqual(RECT4i(0, 0, 0, 0), RECT4i(1, 2, 3, 4))); TestCase_assertBoolTrue(Rect4x_isEqual(RECT4x(0x00000, 0x00000, 0x00000, 0x00000), RECT4x(0x00000, 0x00000, 0x00000, 0x00000))); TestCase_assertBoolTrue(Rect4x_isEqual(RECT4x(0x10000, 0x20000, 0x30000, 0x40000), RECT4x(0x10000, 0x20000, 0x30000, 0x40000))); TestCase_assertBoolFalse(Rect4x_isEqual(RECT4x(0x00000, 0x00000, 0x00000, 0x00000), RECT4x(0x10000, 0x20000, 0x30000, 0x40000))); TestCase_assertBoolTrue(Box6d_isEqual(BOX6d(0.0, 0.0, 0.0, 0.0, 0.0, 0.0), BOX6d(0.0, 0.0, 0.0, 0.0, 0.0, 0.0))); TestCase_assertBoolTrue(Box6d_isEqual(BOX6d(1.0, 2.0, 3.0, 4.0, 5.0, 6.0), BOX6d(1.0, 2.0, 3.0, 4.0, 5.0, 6.0))); TestCase_assertBoolFalse(Box6d_isEqual(BOX6d(0.0, 0.0, 0.0, 0.0, 0.0, 0.0), BOX6d(1.0, 2.0, 3.0, 4.0, 5.0, 6.0))); TestCase_assertBoolTrue(Box6f_isEqual(BOX6f(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f), BOX6f(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f))); TestCase_assertBoolTrue(Box6f_isEqual(BOX6f(1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f), BOX6f(1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f))); TestCase_assertBoolFalse(Box6f_isEqual(BOX6f(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f), BOX6f(1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f))); TestCase_assertBoolTrue(Box6i_isEqual(BOX6i(0, 0, 0, 0, 0, 0), BOX6i(0, 0, 0, 0, 0, 0))); TestCase_assertBoolTrue(Box6i_isEqual(BOX6i(1, 2, 3, 4, 5, 6), BOX6i(1, 2, 3, 4, 5, 6))); TestCase_assertBoolFalse(Box6i_isEqual(BOX6i(0, 0, 0, 0, 0, 0), BOX6i(1, 2, 3, 4, 5, 6))); TestCase_assertBoolTrue(Box6x_isEqual(BOX6x(0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000), BOX6x(0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000))); TestCase_assertBoolTrue(Box6x_isEqual(BOX6x(0x10000, 0x20000, 0x30000, 0x40000, 0x50000, 0x60000), BOX6x(0x10000, 0x20000, 0x30000, 0x40000, 0x50000, 0x60000))); TestCase_assertBoolFalse(Box6x_isEqual(BOX6x(0x00000, 0x00000, 0x00000, 0x00000, 0x00000, 0x00000), BOX6x(0x10000, 0x20000, 0x30000, 0x40000, 0x50000, 0x60000))); } static void testIntersectsRectBox(void) { bool intersects; intersects = Rect4d_intersectsRect4d(RECT4d(0.0, 3.0, 0.0, 3.0), RECT4d(1.0, 2.0, 1.0, 2.0)); TestCase_assert(intersects, "Expected true but got false"); intersects = Rect4d_intersectsRect4d(RECT4d(0.0, 2.0, 0.0, 2.0), RECT4d(1.0, 3.0, 1.0, 3.0)); TestCase_assert(intersects, "Expected true but got false"); intersects = Rect4d_intersectsRect4d(RECT4d(0.0, 1.0, 0.0, 1.0), RECT4d(1.0, 2.0, 1.0, 2.0)); TestCase_assert(!intersects, "Expected false but got true"); intersects = Rect4d_intersectsRect4d(RECT4d(0.0, 3.0, 0.0, 3.0), RECT4d(2.0, 1.0, 2.0, 1.0)); TestCase_assert(!intersects, "Expected false but got true"); intersects = Rect4d_intersectsRect4d(RECT4d(3.0, 0.0, 3.0, 0.0), RECT4d(1.0, 2.0, 1.0, 2.0)); TestCase_assert(!intersects, "Expected false but got true"); intersects = Rect4f_intersectsRect4f(RECT4f(0.0f, 3.0f, 0.0f, 3.0f), RECT4f(1.0f, 2.0f, 1.0f, 2.0f)); TestCase_assert(intersects, "Expected true but got false"); intersects = Rect4f_intersectsRect4f(RECT4f(0.0f, 2.0f, 0.0f, 2.0f), RECT4f(1.0f, 3.0f, 1.0f, 3.0f)); TestCase_assert(intersects, "Expected true but got false"); intersects = Rect4f_intersectsRect4f(RECT4f(0.0f, 1.0f, 0.0f, 1.0f), RECT4f(1.0f, 2.0f, 1.0f, 2.0f)); TestCase_assert(!intersects, "Expected false but got true"); intersects = Rect4f_intersectsRect4f(RECT4f(0.0f, 3.0f, 0.0f, 3.0f), RECT4f(2.0f, 1.0f, 2.0f, 1.0f)); TestCase_assert(!intersects, "Expected false but got true"); intersects = Rect4f_intersectsRect4f(RECT4f(3.0f, 0.0f, 3.0f, 0.0f), RECT4f(1.0f, 2.0f, 1.0f, 2.0f)); TestCase_assert(!intersects, "Expected false but got true"); intersects = Rect4i_intersectsRect4i(RECT4i(0, 3, 0, 3), RECT4i(1, 2, 1, 2)); TestCase_assert(intersects, "Expected true but got false"); intersects = Rect4i_intersectsRect4i(RECT4i(0, 2, 0, 2), RECT4i(1, 3, 1, 3)); TestCase_assert(intersects, "Expected true but got false"); intersects = Rect4i_intersectsRect4i(RECT4i(0, 1, 0, 1), RECT4i(1, 2, 1, 2)); TestCase_assert(!intersects, "Expected false but got true"); intersects = Rect4i_intersectsRect4i(RECT4i(0, 3, 0, 3), RECT4i(2, 1, 2, 1)); TestCase_assert(!intersects, "Expected false but got true"); intersects = Rect4i_intersectsRect4i(RECT4i(3, 0, 3, 0), RECT4i(1, 2, 1, 2)); TestCase_assert(!intersects, "Expected false but got true"); intersects = Rect4x_intersectsRect4x(RECT4x(0x00000, 0x30000, 0x00000, 0x30000), RECT4x(0x10000, 0x20000, 0x10000, 0x20000)); TestCase_assert(intersects, "Expected true but got false"); intersects = Rect4x_intersectsRect4x(RECT4x(0x00000, 0x20000, 0x00000, 0x20000), RECT4x(0x10000, 0x30000, 0x10000, 0x30000)); TestCase_assert(intersects, "Expected true but got false"); intersects = Rect4x_intersectsRect4x(RECT4x(0x00000, 0x10000, 0x00000, 0x10000), RECT4x(0x10000, 0x20000, 0x10000, 0x20000)); TestCase_assert(!intersects, "Expected false but got true"); intersects = Rect4x_intersectsRect4x(RECT4x(0x00000, 0x30000, 0x00000, 0x30000), RECT4x(0x20000, 0x10000, 0x20000, 0x10000)); TestCase_assert(!intersects, "Expected false but got true"); intersects = Rect4x_intersectsRect4x(RECT4x(0x30000, 0x00000, 0x30000, 0x00000), RECT4x(0x10000, 0x20000, 0x10000, 0x20000)); TestCase_assert(!intersects, "Expected false but got true"); intersects = Box6d_intersectsBox6d(BOX6d(0.0, 3.0, 0.0, 3.0, 0.0, 3.0), BOX6d(1.0, 2.0, 1.0, 2.0, 1.0, 2.0)); TestCase_assert(intersects, "Expected true but got false"); intersects = Box6d_intersectsBox6d(BOX6d(0.0, 2.0, 0.0, 2.0, 0.0, 2.0), BOX6d(1.0, 3.0, 1.0, 3.0, 1.0, 3.0)); TestCase_assert(intersects, "Expected true but got false"); intersects = Box6d_intersectsBox6d(BOX6d(0.0, 1.0, 0.0, 1.0, 0.0, 1.0), BOX6d(1.0, 2.0, 1.0, 2.0, 1.0, 2.0)); TestCase_assert(!intersects, "Expected false but got true"); intersects = Box6d_intersectsBox6d(BOX6d(0.0, 3.0, 0.0, 3.0, 0.0, 3.0), BOX6d(2.0, 1.0, 2.0, 1.0, 2.0, 1.0)); TestCase_assert(!intersects, "Expected false but got true"); intersects = Box6d_intersectsBox6d(BOX6d(3.0, 0.0, 3.0, 0.0, 3.0, 0.0), BOX6d(1.0, 2.0, 1.0, 2.0, 1.0, 2.0)); TestCase_assert(!intersects, "Expected false but got true"); intersects = Box6f_intersectsBox6f(BOX6f(0.0f, 3.0f, 0.0f, 3.0f, 0.0f, 3.0f), BOX6f(1.0f, 2.0f, 1.0f, 2.0f, 1.0f, 2.0f)); TestCase_assert(intersects, "Expected true but got false"); intersects = Box6f_intersectsBox6f(BOX6f(0.0f, 2.0f, 0.0f, 2.0f, 0.0f, 2.0f), BOX6f(1.0f, 3.0f, 1.0f, 3.0f, 1.0f, 3.0f)); TestCase_assert(intersects, "Expected true but got false"); intersects = Box6f_intersectsBox6f(BOX6f(0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f), BOX6f(1.0f, 2.0f, 1.0f, 2.0f, 1.0f, 2.0f)); TestCase_assert(!intersects, "Expected false but got true"); intersects = Box6f_intersectsBox6f(BOX6f(0.0f, 3.0f, 0.0f, 3.0f, 0.0f, 3.0f), BOX6f(2.0f, 1.0f, 2.0f, 1.0f, 2.0f, 1.0f)); TestCase_assert(!intersects, "Expected false but got true"); intersects = Box6f_intersectsBox6f(BOX6f(3.0f, 0.0f, 3.0f, 0.0f, 3.0f, 0.0f), BOX6f(1.0f, 2.0f, 1.0f, 2.0f, 1.0f, 2.0f)); TestCase_assert(!intersects, "Expected false but got true"); intersects = Box6i_intersectsBox6i(BOX6i(0, 3, 0, 3, 0, 3), BOX6i(1, 2, 1, 2, 1, 2)); TestCase_assert(intersects, "Expected true but got false"); intersects = Box6i_intersectsBox6i(BOX6i(0, 2, 0, 2, 0, 2), BOX6i(1, 3, 1, 3, 1, 3)); TestCase_assert(intersects, "Expected true but got false"); intersects = Box6i_intersectsBox6i(BOX6i(0, 1, 0, 1, 0, 1), BOX6i(1, 2, 1, 2, 1, 2)); TestCase_assert(!intersects, "Expected false but got true"); intersects = Box6i_intersectsBox6i(BOX6i(0, 3, 0, 3, 0, 3), BOX6i(2, 1, 2, 1, 2, 1)); TestCase_assert(!intersects, "Expected false but got true"); intersects = Box6i_intersectsBox6i(BOX6i(3, 0, 3, 0, 3, 0), BOX6i(1, 2, 1, 2, 1, 2)); TestCase_assert(!intersects, "Expected false but got true"); intersects = Box6x_intersectsBox6x(BOX6x(0x00000, 0x30000, 0x00000, 0x30000, 0x00000, 0x30000), BOX6x(0x10000, 0x20000, 0x10000, 0x20000, 0x10000, 0x20000)); TestCase_assert(intersects, "Expected true but got false"); intersects = Box6x_intersectsBox6x(BOX6x(0x00000, 0x20000, 0x00000, 0x20000, 0x00000, 0x20000), BOX6x(0x10000, 0x30000, 0x10000, 0x30000, 0x10000, 0x30000)); TestCase_assert(intersects, "Expected true but got false"); intersects = Box6x_intersectsBox6x(BOX6x(0x00000, 0x10000, 0x00000, 0x10000, 0x00000, 0x10000), BOX6x(0x10000, 0x20000, 0x10000, 0x20000, 0x10000, 0x20000)); TestCase_assert(!intersects, "Expected false but got true"); intersects = Box6x_intersectsBox6x(BOX6x(0x00000, 0x30000, 0x00000, 0x30000, 0x00000, 0x30000), BOX6x(0x20000, 0x10000, 0x20000, 0x10000, 0x20000, 0x10000)); TestCase_assert(!intersects, "Expected false but got true"); intersects = Box6x_intersectsBox6x(BOX6x(0x30000, 0x00000, 0x30000, 0x00000, 0x30000, 0x00000), BOX6x(0x10000, 0x20000, 0x10000, 0x20000, 0x10000, 0x20000)); TestCase_assert(!intersects, "Expected false but got true"); } static void testContainsRectBox(void) { bool contains; contains = Rect4d_containsRect4d(RECT4d(0.0, 3.0, 0.0, 3.0), RECT4d(1.0, 2.0, 1.0, 2.0)); TestCase_assert(contains, "Expected true but got false"); contains = Rect4d_containsRect4d(RECT4d(0.0, 2.0, 0.0, 2.0), RECT4d(1.0, 3.0, 1.0, 3.0)); TestCase_assert(!contains, "Expected false but got true"); contains = Rect4d_containsRect4d(RECT4d(0.0, 1.0, 0.0, 1.0), RECT4d(1.0, 2.0, 1.0, 2.0)); TestCase_assert(!contains, "Expected false but got true"); contains = Rect4d_containsRect4d(RECT4d(0.0, 3.0, 0.0, 3.0), RECT4d(2.0, 1.0, 2.0, 1.0)); TestCase_assert(!contains, "Expected false but got true"); contains = Rect4d_containsRect4d(RECT4d(3.0, 0.0, 3.0, 0.0), RECT4d(1.0, 2.0, 1.0, 2.0)); TestCase_assert(!contains, "Expected false but got true"); contains = Rect4f_containsRect4f(RECT4f(0.0f, 3.0f, 0.0f, 3.0f), RECT4f(1.0f, 2.0f, 1.0f, 2.0f)); TestCase_assert(contains, "Expected true but got false"); contains = Rect4f_containsRect4f(RECT4f(0.0f, 2.0f, 0.0f, 2.0f), RECT4f(1.0f, 3.0f, 1.0f, 3.0f)); TestCase_assert(!contains, "Expected false but got true"); contains = Rect4f_containsRect4f(RECT4f(0.0f, 1.0f, 0.0f, 1.0f), RECT4f(1.0f, 2.0f, 1.0f, 2.0f)); TestCase_assert(!contains, "Expected false but got true"); contains = Rect4f_containsRect4f(RECT4f(0.0f, 3.0f, 0.0f, 3.0f), RECT4f(2.0f, 1.0f, 2.0f, 1.0f)); TestCase_assert(!contains, "Expected false but got true"); contains = Rect4f_containsRect4f(RECT4f(3.0f, 0.0f, 3.0f, 0.0f), RECT4f(1.0f, 2.0f, 1.0f, 2.0f)); TestCase_assert(!contains, "Expected false but got true"); contains = Rect4i_containsRect4i(RECT4i(0, 3, 0, 3), RECT4i(1, 2, 1, 2)); TestCase_assert(contains, "Expected true but got false"); contains = Rect4i_containsRect4i(RECT4i(0, 2, 0, 2), RECT4i(1, 3, 1, 3)); TestCase_assert(!contains, "Expected false but got true"); contains = Rect4i_containsRect4i(RECT4i(0, 1, 0, 1), RECT4i(1, 2, 1, 2)); TestCase_assert(!contains, "Expected false but got true"); contains = Rect4i_containsRect4i(RECT4i(0, 3, 0, 3), RECT4i(2, 1, 2, 1)); TestCase_assert(!contains, "Expected false but got true"); contains = Rect4i_containsRect4i(RECT4i(3, 0, 3, 0), RECT4i(1, 2, 1, 2)); TestCase_assert(!contains, "Expected false but got true"); contains = Rect4x_containsRect4x(RECT4x(0x00000, 0x30000, 0x00000, 0x30000), RECT4x(0x10000, 0x20000, 0x10000, 0x20000)); TestCase_assert(contains, "Expected true but got false"); contains = Rect4x_containsRect4x(RECT4x(0x00000, 0x20000, 0x00000, 0x20000), RECT4x(0x10000, 0x30000, 0x10000, 0x30000)); TestCase_assert(!contains, "Expected false but got true"); contains = Rect4x_containsRect4x(RECT4x(0x00000, 0x10000, 0x00000, 0x10000), RECT4x(0x10000, 0x20000, 0x10000, 0x20000)); TestCase_assert(!contains, "Expected false but got true"); contains = Rect4x_containsRect4x(RECT4x(0x00000, 0x30000, 0x00000, 0x30000), RECT4x(0x20000, 0x10000, 0x20000, 0x10000)); TestCase_assert(!contains, "Expected false but got true"); contains = Rect4x_containsRect4x(RECT4x(0x30000, 0x00000, 0x30000, 0x00000), RECT4x(0x10000, 0x20000, 0x10000, 0x20000)); TestCase_assert(!contains, "Expected false but got true"); contains = Box6d_containsBox6d(BOX6d(0.0, 3.0, 0.0, 3.0, 0.0, 3.0), BOX6d(1.0, 2.0, 1.0, 2.0, 1.0, 2.0)); TestCase_assert(contains, "Expected true but got false"); contains = Box6d_containsBox6d(BOX6d(0.0, 2.0, 0.0, 2.0, 0.0, 2.0), BOX6d(1.0, 3.0, 1.0, 3.0, 1.0, 3.0)); TestCase_assert(!contains, "Expected false but got true"); contains = Box6d_containsBox6d(BOX6d(0.0, 1.0, 0.0, 1.0, 0.0, 1.0), BOX6d(1.0, 2.0, 1.0, 2.0, 1.0, 2.0)); TestCase_assert(!contains, "Expected false but got true"); contains = Box6d_containsBox6d(BOX6d(0.0, 3.0, 0.0, 3.0, 0.0, 3.0), BOX6d(2.0, 1.0, 2.0, 1.0, 2.0, 1.0)); TestCase_assert(!contains, "Expected false but got true"); contains = Box6d_containsBox6d(BOX6d(3.0, 0.0, 3.0, 0.0, 3.0, 0.0), BOX6d(1.0, 2.0, 1.0, 2.0, 1.0, 2.0)); TestCase_assert(!contains, "Expected false but got true"); contains = Box6f_containsBox6f(BOX6f(0.0f, 3.0f, 0.0f, 3.0f, 0.0f, 3.0f), BOX6f(1.0f, 2.0f, 1.0f, 2.0f, 1.0f, 2.0f)); TestCase_assert(contains, "Expected true but got false"); contains = Box6f_containsBox6f(BOX6f(0.0f, 2.0f, 0.0f, 2.0f, 0.0f, 2.0f), BOX6f(1.0f, 3.0f, 1.0f, 3.0f, 1.0f, 3.0f)); TestCase_assert(!contains, "Expected false but got true"); contains = Box6f_containsBox6f(BOX6f(0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f), BOX6f(1.0f, 2.0f, 1.0f, 2.0f, 1.0f, 2.0f)); TestCase_assert(!contains, "Expected false but got true"); contains = Box6f_containsBox6f(BOX6f(0.0f, 3.0f, 0.0f, 3.0f, 0.0f, 3.0f), BOX6f(2.0f, 1.0f, 2.0f, 1.0f, 2.0f, 1.0f)); TestCase_assert(!contains, "Expected false but got true"); contains = Box6f_containsBox6f(BOX6f(3.0f, 0.0f, 3.0f, 0.0f, 3.0f, 0.0f), BOX6f(1.0f, 2.0f, 1.0f, 2.0f, 1.0f, 2.0f)); TestCase_assert(!contains, "Expected false but got true"); contains = Box6i_containsBox6i(BOX6i(0, 3, 0, 3, 0, 3), BOX6i(1, 2, 1, 2, 1, 2)); TestCase_assert(contains, "Expected true but got false"); contains = Box6i_containsBox6i(BOX6i(0, 2, 0, 2, 0, 2), BOX6i(1, 3, 1, 3, 1, 3)); TestCase_assert(!contains, "Expected false but got true"); contains = Box6i_containsBox6i(BOX6i(0, 1, 0, 1, 0, 1), BOX6i(1, 2, 1, 2, 1, 2)); TestCase_assert(!contains, "Expected false but got true"); contains = Box6i_containsBox6i(BOX6i(0, 3, 0, 3, 0, 3), BOX6i(2, 1, 2, 1, 2, 1)); TestCase_assert(!contains, "Expected false but got true"); contains = Box6i_containsBox6i(BOX6i(3, 0, 3, 0, 3, 0), BOX6i(1, 2, 1, 2, 1, 2)); TestCase_assert(!contains, "Expected false but got true"); contains = Box6x_containsBox6x(BOX6x(0x00000, 0x30000, 0x00000, 0x30000, 0x00000, 0x30000), BOX6x(0x10000, 0x20000, 0x10000, 0x20000, 0x10000, 0x20000)); TestCase_assert(contains, "Expected true but got false"); contains = Box6x_containsBox6x(BOX6x(0x00000, 0x20000, 0x00000, 0x20000, 0x00000, 0x20000), BOX6x(0x10000, 0x30000, 0x10000, 0x30000, 0x10000, 0x30000)); TestCase_assert(!contains, "Expected false but got true"); contains = Box6x_containsBox6x(BOX6x(0x00000, 0x10000, 0x00000, 0x10000, 0x00000, 0x10000), BOX6x(0x10000, 0x20000, 0x10000, 0x20000, 0x10000, 0x20000)); TestCase_assert(!contains, "Expected false but got true"); contains = Box6x_containsBox6x(BOX6x(0x00000, 0x30000, 0x00000, 0x30000, 0x00000, 0x30000), BOX6x(0x20000, 0x10000, 0x20000, 0x10000, 0x20000, 0x10000)); TestCase_assert(!contains, "Expected false but got true"); contains = Box6x_containsBox6x(BOX6x(0x30000, 0x00000, 0x30000, 0x00000, 0x30000, 0x00000), BOX6x(0x10000, 0x20000, 0x10000, 0x20000, 0x10000, 0x20000)); TestCase_assert(!contains, "Expected false but got true"); } static void testContainsVector(void) { bool contains; contains = Rect4d_containsVector2d(RECT4d(2.0, 4.0, 2.0, 4.0), VECTOR2d(3.0, 3.0)); TestCase_assert(contains, "Expected true but got false"); contains = Rect4d_containsVector2d(RECT4d(2.0, 4.0, 2.0, 4.0), VECTOR2d(0.0, 3.0)); TestCase_assert(!contains, "Expected false but got true"); contains = Rect4d_containsVector2d(RECT4d(2.0, 4.0, 2.0, 4.0), VECTOR2d(6.0, 3.0)); TestCase_assert(!contains, "Expected false but got true"); contains = Rect4d_containsVector2d(RECT4d(2.0, 4.0, 2.0, 4.0), VECTOR2d(3.0, 0.0)); TestCase_assert(!contains, "Expected false but got true"); contains = Rect4d_containsVector2d(RECT4d(2.0, 4.0, 2.0, 4.0), VECTOR2d(3.0, 6.0)); TestCase_assert(!contains, "Expected false but got true"); contains = Rect4d_containsVector2d(RECT4d(-1.0, 1.0, 2.0, 4.0), VECTOR2d(0.0, 3.0)); TestCase_assert(contains, "Expected true but got false"); contains = Rect4d_containsVector2d(RECT4d(4.0, 2.0, 4.0, 2.0), VECTOR2d(3.0, 3.0)); TestCase_assert(!contains, "Expected false but got true"); contains = Rect4f_containsVector2f(RECT4f(2.0f, 4.0f, 2.0f, 4.0f), VECTOR2f(3.0f, 3.0f)); TestCase_assert(contains, "Expected true but got false"); contains = Rect4f_containsVector2f(RECT4f(2.0f, 4.0f, 2.0f, 4.0f), VECTOR2f(0.0f, 3.0f)); TestCase_assert(!contains, "Expected false but got true"); contains = Rect4f_containsVector2f(RECT4f(2.0f, 4.0f, 2.0f, 4.0f), VECTOR2f(6.0f, 3.0f)); TestCase_assert(!contains, "Expected false but got true"); contains = Rect4f_containsVector2f(RECT4f(2.0f, 4.0f, 2.0f, 4.0f), VECTOR2f(3.0f, 0.0f)); TestCase_assert(!contains, "Expected false but got true"); contains = Rect4f_containsVector2f(RECT4f(2.0f, 4.0f, 2.0f, 4.0f), VECTOR2f(3.0f, 6.0f)); TestCase_assert(!contains, "Expected false but got true"); contains = Rect4f_containsVector2f(RECT4f(-1.0f, 1.0f, 2.0f, 4.0f), VECTOR2f(0.0f, 3.0f)); TestCase_assert(contains, "Expected true but got false"); contains = Rect4f_containsVector2f(RECT4f(4.0f, 2.0f, 4.0f, 2.0f), VECTOR2f(3.0f, 3.0f)); TestCase_assert(!contains, "Expected false but got true"); contains = Rect4i_containsVector2i(RECT4i(2, 4, 2, 4), VECTOR2i(3, 3)); TestCase_assert(contains, "Expected true but got false"); contains = Rect4i_containsVector2i(RECT4i(2, 4, 2, 4), VECTOR2i(0, 3)); TestCase_assert(!contains, "Expected false but got true"); contains = Rect4i_containsVector2i(RECT4i(2, 4, 2, 4), VECTOR2i(6, 3)); TestCase_assert(!contains, "Expected false but got true"); contains = Rect4i_containsVector2i(RECT4i(2, 4, 2, 4), VECTOR2i(3, 0)); TestCase_assert(!contains, "Expected false but got true"); contains = Rect4i_containsVector2i(RECT4i(2, 4, 2, 4), VECTOR2i(3, 6)); TestCase_assert(!contains, "Expected false but got true"); contains = Rect4i_containsVector2i(RECT4i(-1, 1, 2, 4), VECTOR2i(0, 3)); TestCase_assert(contains, "Expected true but got false"); contains = Rect4i_containsVector2i(RECT4i(4, 2, 4, 2), VECTOR2i(3, 3)); TestCase_assert(!contains, "Expected false but got true"); contains = Rect4x_containsVector2x(RECT4x(0x20000, 0x40000, 0x20000, 0x40000), VECTOR2x(0x30000, 0x30000)); TestCase_assert(contains, "Expected true but got false"); contains = Rect4x_containsVector2x(RECT4x(0x20000, 0x40000, 0x20000, 0x40000), VECTOR2x(0x00000, 0x30000)); TestCase_assert(!contains, "Expected false but got true"); contains = Rect4x_containsVector2x(RECT4x(0x20000, 0x40000, 0x20000, 0x40000), VECTOR2x(0x60000, 0x30000)); TestCase_assert(!contains, "Expected false but got true"); contains = Rect4x_containsVector2x(RECT4x(0x20000, 0x40000, 0x20000, 0x40000), VECTOR2x(0x30000, 0x00000)); TestCase_assert(!contains, "Expected false but got true"); contains = Rect4x_containsVector2x(RECT4x(0x20000, 0x40000, 0x20000, 0x40000), VECTOR2x(0x30000, 0x60000)); TestCase_assert(!contains, "Expected false but got true"); contains = Rect4x_containsVector2x(RECT4x(-0x10000, 0x10000, 0x20000, 0x40000), VECTOR2x(0x00000, 0x30000)); TestCase_assert(contains, "Expected true but got false"); contains = Rect4x_containsVector2x(RECT4x(0x40000, 0x20000, 0x40000, 0x20000), VECTOR2x(0x30000, 0x30000)); TestCase_assert(!contains, "Expected false but got true"); contains = Box6d_containsVector3d(BOX6d(2.0, 4.0, 2.0, 4.0, 2.0, 4.0), VECTOR3d(3.0, 3.0, 3.0)); TestCase_assert(contains, "Expected true but got false"); contains = Box6d_containsVector3d(BOX6d(2.0, 4.0, 2.0, 4.0, 2.0, 4.0), VECTOR3d(0.0, 3.0, 3.0)); TestCase_assert(!contains, "Expected false but got true"); contains = Box6d_containsVector3d(BOX6d(2.0, 4.0, 2.0, 4.0, 2.0, 4.0), VECTOR3d(6.0, 3.0, 3.0)); TestCase_assert(!contains, "Expected false but got true"); contains = Box6d_containsVector3d(BOX6d(2.0, 4.0, 2.0, 4.0, 2.0, 4.0), VECTOR3d(3.0, 0.0, 3.0)); TestCase_assert(!contains, "Expected false but got true"); contains = Box6d_containsVector3d(BOX6d(2.0, 4.0, 2.0, 4.0, 2.0, 4.0), VECTOR3d(3.0, 6.0, 3.0)); TestCase_assert(!contains, "Expected false but got true"); contains = Box6d_containsVector3d(BOX6d(2.0, 4.0, 2.0, 4.0, 2.0, 4.0), VECTOR3d(3.0, 3.0, 0.0)); TestCase_assert(!contains, "Expected false but got true"); contains = Box6d_containsVector3d(BOX6d(2.0, 4.0, 2.0, 4.0, 2.0, 4.0), VECTOR3d(3.0, 3.0, 6.0)); TestCase_assert(!contains, "Expected false but got true"); contains = Box6d_containsVector3d(BOX6d(-1.0, 1.0, 2.0, 4.0, 2.0, 4.0), VECTOR3d(0.0, 3.0, 3.0)); TestCase_assert(contains, "Expected true but got false"); contains = Box6d_containsVector3d(BOX6d(4.0, 2.0, 4.0, 2.0, 4.0, 2.0), VECTOR3d(3.0, 3.0, 3.0)); TestCase_assert(!contains, "Expected false but got true"); contains = Box6f_containsVector3f(BOX6f(2.0f, 4.0f, 2.0f, 4.0f, 2.0f, 4.0f), VECTOR3f(3.0f, 3.0f, 3.0f)); TestCase_assert(contains, "Expected true but got false"); contains = Box6f_containsVector3f(BOX6f(2.0f, 4.0f, 2.0f, 4.0f, 2.0f, 4.0f), VECTOR3f(0.0f, 3.0f, 3.0f)); TestCase_assert(!contains, "Expected false but got true"); contains = Box6f_containsVector3f(BOX6f(2.0f, 4.0f, 2.0f, 4.0f, 2.0f, 4.0f), VECTOR3f(6.0f, 3.0f, 3.0f)); TestCase_assert(!contains, "Expected false but got true"); contains = Box6f_containsVector3f(BOX6f(2.0f, 4.0f, 2.0f, 4.0f, 2.0f, 4.0f), VECTOR3f(3.0f, 0.0f, 3.0f)); TestCase_assert(!contains, "Expected false but got true"); contains = Box6f_containsVector3f(BOX6f(2.0f, 4.0f, 2.0f, 4.0f, 2.0f, 4.0f), VECTOR3f(3.0f, 6.0f, 3.0f)); TestCase_assert(!contains, "Expected false but got true"); contains = Box6f_containsVector3f(BOX6f(2.0f, 4.0f, 2.0f, 4.0f, 2.0f, 4.0f), VECTOR3f(3.0f, 3.0f, 0.0f)); TestCase_assert(!contains, "Expected false but got true"); contains = Box6f_containsVector3f(BOX6f(2.0f, 4.0f, 2.0f, 4.0f, 2.0f, 4.0f), VECTOR3f(3.0f, 3.0f, 6.0f)); TestCase_assert(!contains, "Expected false but got true"); contains = Box6f_containsVector3f(BOX6f(-1.0f, 1.0f, 2.0f, 4.0f, 2.0f, 4.0f), VECTOR3f(0.0f, 3.0f, 3.0f)); TestCase_assert(contains, "Expected true but got false"); contains = Box6f_containsVector3f(BOX6f(4.0f, 2.0f, 4.0f, 2.0f, 4.0f, 2.0f), VECTOR3f(3.0f, 3.0f, 3.0f)); TestCase_assert(!contains, "Expected false but got true"); contains = Box6i_containsVector3i(BOX6i(2, 4, 2, 4, 2, 4), VECTOR3i(3, 3, 3)); TestCase_assert(contains, "Expected true but got false"); contains = Box6i_containsVector3i(BOX6i(2, 4, 2, 4, 2, 4), VECTOR3i(0, 3, 3)); TestCase_assert(!contains, "Expected false but got true"); contains = Box6i_containsVector3i(BOX6i(2, 4, 2, 4, 2, 4), VECTOR3i(6, 3, 3)); TestCase_assert(!contains, "Expected false but got true"); contains = Box6i_containsVector3i(BOX6i(2, 4, 2, 4, 2, 4), VECTOR3i(3, 0, 3)); TestCase_assert(!contains, "Expected false but got true"); contains = Box6i_containsVector3i(BOX6i(2, 4, 2, 4, 2, 4), VECTOR3i(3, 6, 3)); TestCase_assert(!contains, "Expected false but got true"); contains = Box6i_containsVector3i(BOX6i(2, 4, 2, 4, 2, 4), VECTOR3i(3, 3, 0)); TestCase_assert(!contains, "Expected false but got true"); contains = Box6i_containsVector3i(BOX6i(2, 4, 2, 4, 2, 4), VECTOR3i(3, 3, 6)); TestCase_assert(!contains, "Expected false but got true"); contains = Box6i_containsVector3i(BOX6i(-1, 1, 2, 4, 2, 4), VECTOR3i(0, 3, 3)); TestCase_assert(contains, "Expected true but got false"); contains = Box6i_containsVector3i(BOX6i(4, 2, 4, 2, 4, 2), VECTOR3i(3, 3, 3)); TestCase_assert(!contains, "Expected false but got true"); contains = Box6x_containsVector3x(BOX6x(0x20000, 0x40000, 0x20000, 0x40000, 0x20000, 0x40000), VECTOR3x(0x30000, 0x30000, 0x30000)); TestCase_assert(contains, "Expected true but got false"); contains = Box6x_containsVector3x(BOX6x(0x20000, 0x40000, 0x20000, 0x40000, 0x20000, 0x40000), VECTOR3x(0x00000, 0x30000, 0x30000)); TestCase_assert(!contains, "Expected false but got true"); contains = Box6x_containsVector3x(BOX6x(0x20000, 0x40000, 0x20000, 0x40000, 0x20000, 0x40000), VECTOR3x(0x60000, 0x30000, 0x30000)); TestCase_assert(!contains, "Expected false but got true"); contains = Box6x_containsVector3x(BOX6x(0x20000, 0x40000, 0x20000, 0x40000, 0x20000, 0x40000), VECTOR3x(0x30000, 0x00000, 0x30000)); TestCase_assert(!contains, "Expected false but got true"); contains = Box6x_containsVector3x(BOX6x(0x20000, 0x40000, 0x20000, 0x40000, 0x20000, 0x40000), VECTOR3x(0x30000, 0x60000, 0x30000)); TestCase_assert(!contains, "Expected false but got true"); contains = Box6x_containsVector3x(BOX6x(0x20000, 0x40000, 0x20000, 0x40000, 0x20000, 0x40000), VECTOR3x(0x30000, 0x30000, 0x00000)); TestCase_assert(!contains, "Expected false but got true"); contains = Box6x_containsVector3x(BOX6x(0x20000, 0x40000, 0x20000, 0x40000, 0x20000, 0x40000), VECTOR3x(0x30000, 0x30000, 0x60000)); TestCase_assert(!contains, "Expected false but got true"); contains = Box6x_containsVector3x(BOX6x(-0x10000, 0x10000, 0x20000, 0x40000, 0x20000, 0x40000), VECTOR3x(0x00000, 0x30000, 0x30000)); TestCase_assert(contains, "Expected true but got false"); contains = Box6x_containsVector3x(BOX6x(0x40000, 0x20000, 0x40000, 0x20000, 0x40000, 0x20000), VECTOR3x(0x30000, 0x30000, 0x30000)); TestCase_assert(!contains, "Expected false but got true"); } static void testClamp(void) { Vector2f vector2 = Rect4f_clampVector2f(RECT4f(0.0f, 1.0f, 0.0f, 1.0f), VECTOR2f(0.5f, 0.5f)); assertVector2f(vector2, 0.5f, 0.5f); vector2 = Rect4f_clampVector2f(RECT4f(0.0f, 1.0f, 0.0f, 1.0f), VECTOR2f(-0.5f, 1.5f)); assertVector2f(vector2, 0.0f, 1.0f); vector2 = Rect4f_clampVector2f(RECT4f(0.0f, 1.0f, 0.0f, 1.0f), VECTOR2f(1.5f, -0.5f)); assertVector2f(vector2, 1.0f, 0.0f); vector2 = Rect4f_clampVector2f(RECT4f(-0.25f, 1.25f, 0.25f, 0.75f), VECTOR2f(-0.5f, 1.5f)); assertVector2f(vector2, -0.25f, 0.75f); vector2 = Rect4f_clampVector2f(RECT4f(-0.25f, 1.25f, 0.25f, 0.75f), VECTOR2f(1.5f, -0.5f)); assertVector2f(vector2, 1.25f, 0.25f); Vector3i vector3 = Box6i_clampVector3i(BOX6i(0, 4, 0, 4, 0, 4), VECTOR3i(1, 2, 3)); assertVector3i(vector3, 1, 2, 3); vector3 = Box6i_clampVector3i(BOX6i(0, 4, 0, 4, 0, 4), VECTOR3i(-2, 6, -2)); assertVector3i(vector3, 0, 4, 0); vector3 = Box6i_clampVector3i(BOX6i(0, 4, 0, 4, 0, 4), VECTOR3i(6, -2, 6)); assertVector3i(vector3, 4, 0, 4); vector3 = Box6i_clampVector3i(BOX6i(-1, 5, 1, 3, 2, 5), VECTOR3i(-2, 6, -2)); assertVector3i(vector3, -1, 3, 2); vector3 = Box6i_clampVector3i(BOX6i(-1, 5, 1, 3, 2, 5), VECTOR3i(6, -2, 6)); assertVector3i(vector3, 5, 1, 5); } static void testConvenienceAccessors(void) { double resultd; float resultf; int resulti; fixed16_16 resultx; Vector2d center2d; Vector2f center2f; Vector2i center2i; Vector2x center2x; Vector3d center3d; Vector3f center3f; Vector3i center3i; Vector3x center3x; resultd = Rect4d_getWidth(RECT4d(1.0, 3.0, 0.0, 1.0)); TestCase_assert(resultd == 2.0, "Expected 2.0 but got %f", resultd); resultd = Rect4d_getWidth(RECT4d(4.0, 7.0, 1.0, 3.0)); TestCase_assert(resultd == 3.0, "Expected 3.0 but got %f", resultd); resultd = Rect4d_getHeight(RECT4d(0.0, 1.0, 1.0, 3.0)); TestCase_assert(resultd == 2.0, "Expected 2.0 but got %f", resultd); resultd = Rect4d_getHeight(RECT4d(1.0, 3.0, 4.0, 7.0)); TestCase_assert(resultd == 3.0, "Expected 3.0 but got %f", resultd); Vector2d size2d = Rect4d_getSize(RECT4d(0.0, 1.0, 1.0, 3.0)); TestCase_assert(size2d.x == 1.0 && size2d.y == 2.0, "Expected {1.0, 2.0} but got {%f, %f}", size2d.x, size2d.y); size2d = Rect4d_getSize(RECT4d(1.0, 3.0, 4.0, 7.0)); TestCase_assert(size2d.x == 2.0 && size2d.y == 3.0, "Expected {2.0, 3.0} but got {%f, %f}", size2d.x, size2d.y); center2d = Rect4d_getCenter(RECT4d(1.0, 3.0, 0.0, 1.0)); TestCase_assert(center2d.x == 2.0 && center2d.y == 0.5, "Expected {2.0, 0.5} but got {%f, %f}", center2d.x, center2d.y); center2d = Rect4d_getCenter(RECT4d(-2.0, 2.0, 5.0, 8.0)); TestCase_assert(center2d.x == 0.0 && center2d.y == 6.5, "Expected {0.0, 6.5} but got {%f, %f}", center2d.x, center2d.y); resultf = Rect4f_getWidth(RECT4f(1.0f, 3.0f, 0.0f, 1.0f)); TestCase_assert(resultf == 2.0f, "Expected 2.0 but got %f", resultf); resultf = Rect4f_getWidth(RECT4f(4.0f, 7.0f, 1.0f, 3.0f)); TestCase_assert(resultf == 3.0f, "Expected 3.0 but got %f", resultf); resultf = Rect4f_getHeight(RECT4f(0.0f, 1.0f, 1.0f, 3.0f)); TestCase_assert(resultf == 2.0f, "Expected 2.0 but got %f", resultf); resultf = Rect4f_getHeight(RECT4f(1.0f, 3.0f, 4.0f, 7.0f)); TestCase_assert(resultf == 3.0f, "Expected 3.0 but got %f", resultf); Vector2f size2f = Rect4f_getSize(RECT4f(0.0f, 1.0f, 1.0f, 3.0f)); TestCase_assert(size2f.x == 1.0f && size2f.y == 2.0f, "Expected {1.0, 2.0} but got {%f, %f}", size2f.x, size2f.y); size2f = Rect4f_getSize(RECT4f(1.0f, 3.0f, 4.0f, 7.0f)); TestCase_assert(size2f.x == 2.0f && size2f.y == 3.0f, "Expected {2.0, 3.0} but got {%f, %f}", size2f.x, size2f.y); center2f = Rect4f_getCenter(RECT4f(1.0f, 3.0f, 0.0f, 1.0f)); TestCase_assert(center2f.x == 2.0f && center2f.y == 0.5f, "Expected {2.0, 0.5} but got {%f, %f}", center2f.x, center2f.y); center2f = Rect4f_getCenter(RECT4f(-2.0f, 2.0f, 5.0f, 8.0f)); TestCase_assert(center2f.x == 0.0f && center2f.y == 6.5f, "Expected {0.0, 6.5} but got {%f, %f}", center2f.x, center2f.y); resulti = Rect4i_getWidth(RECT4i(1, 3, 0, 1)); TestCase_assert(resulti == 2, "Expected 2 but got %d", resulti); resulti = Rect4i_getWidth(RECT4i(4, 7, 1, 3)); TestCase_assert(resulti == 3, "Expected 3 but got %d", resulti); resulti = Rect4i_getHeight(RECT4i(0, 1, 1, 3)); TestCase_assert(resulti == 2, "Expected 2 but got %d", resulti); resulti = Rect4i_getHeight(RECT4i(1, 3, 4, 7)); TestCase_assert(resulti == 3, "Expected 3 but got %d", resulti); center2i = Rect4i_getCenter(RECT4i(1, 3, 0, 1)); TestCase_assert(center2i.x == 2 && center2i.y == 0, "Expected {2, 0} but got {%d, %d}", center2i.x, center2i.y); center2i = Rect4i_getCenter(RECT4i(-2, 2, 5, 8)); TestCase_assert(center2i.x == 0 && center2i.y == 6, "Expected {0, 6} but got {%d, %d}", center2i.x, center2i.y); resultx = Rect4x_getWidth(RECT4x(0x10000, 0x30000, 0x00000, 0x10000)); TestCase_assert(resultx == 0x20000, "Expected 0x20000 but got 0x%05X", resultx); resultx = Rect4x_getWidth(RECT4x(0x40000, 0x70000, 0x10000, 0x30000)); TestCase_assert(resultx == 0x30000, "Expected 0x30000 but got 0x%05X", resultx); resultx = Rect4x_getHeight(RECT4x(0x00000, 0x10000, 0x10000, 0x30000)); TestCase_assert(resultx == 0x20000, "Expected 0x20000 but got 0x%05X", resultx); resultx = Rect4x_getHeight(RECT4x(0x10000, 0x30000, 0x40000, 0x70000)); TestCase_assert(resultx == 0x30000, "Expected 0x30000 but got 0x%05X", resultx); center2x = Rect4x_getCenter(RECT4x(0x10000, 0x30000, 0x00000, 0x10000)); TestCase_assert(center2x.x == 0x20000 && center2x.y == 0x08000, "Expected {0x20000, 0x08000} but got {0x%05X, 0x%05X}", center2x.x, center2x.y); center2x = Rect4x_getCenter(RECT4x(-0x20000, 0x20000, 0x50000, 0x80000)); TestCase_assert(center2x.x == 0x00000 && center2x.y == 0x68000, "Expected {0x00000, 0x68000} but got {0x%05X, 0x%05X}", center2x.x, center2x.y); resultd = Box6d_getWidth(BOX6d(1.0, 3.0, 0.0, 1.0, 0.0, 1.0)); TestCase_assert(resultd == 2.0, "Expected 2.0 but got %f", resultd); resultd = Box6d_getWidth(BOX6d(4.0, 7.0, 1.0, 3.0, 1.0, 3.0)); TestCase_assert(resultd == 3.0, "Expected 3.0 but got %f", resultd); resultd = Box6d_getHeight(BOX6d(0.0, 1.0, 1.0, 3.0, 0.0, 1.0)); TestCase_assert(resultd == 2.0, "Expected 2.0 but got %f", resultd); resultd = Box6d_getHeight(BOX6d(1.0, 3.0, 4.0, 7.0, 1.0, 3.0)); TestCase_assert(resultd == 3.0, "Expected 3.0 but got %f", resultd); resultd = Box6d_getDepth(BOX6d(0.0, 1.0, 0.0, 1.0, 1.0, 3.0)); TestCase_assert(resultd == 2.0, "Expected 2.0 but got %f", resultd); resultd = Box6d_getDepth(BOX6d(1.0, 3.0, 1.0, 3.0, 4.0, 7.0)); TestCase_assert(resultd == 3.0, "Expected 3.0 but got %f", resultd); center3d = Box6d_getCenter(BOX6d(1.0, 3.0, 0.0, 1.0, 2.0, 4.0)); TestCase_assert(center3d.x == 2.0 && center3d.y == 0.5 && center3d.z == 3.0, "Expected {2.0, 0.5, 3.0} but got {%f, %f, %f}", center3d.x, center3d.y, center3d.z); center3d = Box6d_getCenter(BOX6d(-2.0, 2.0, 5.0, 8.0, -1.0, 3.0)); TestCase_assert(center3d.x == 0.0 && center3d.y == 6.5 && center3d.z == 1.0, "Expected {0.0, 6.5, 1.0} but got {%f, %f, %f}", center3d.x, center3d.y, center3d.z); resultf = Box6f_getWidth(BOX6f(1.0f, 3.0f, 0.0f, 1.0f, 0.0f, 1.0f)); TestCase_assert(resultf == 2.0f, "Expected 2.0 but got %f", resultf); resultf = Box6f_getWidth(BOX6f(4.0f, 7.0f, 1.0f, 3.0f, 1.0f, 3.0f)); TestCase_assert(resultf == 3.0f, "Expected 3.0 but got %f", resultf); resultf = Box6f_getHeight(BOX6f(0.0f, 1.0f, 1.0f, 3.0f, 0.0f, 1.0f)); TestCase_assert(resultf == 2.0f, "Expected 2.0 but got %f", resultf); resultf = Box6f_getHeight(BOX6f(1.0f, 3.0f, 4.0f, 7.0f, 1.0f, 3.0f)); TestCase_assert(resultf == 3.0f, "Expected 3.0 but got %f", resultf); resultf = Box6f_getDepth(BOX6f(0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 3.0f)); TestCase_assert(resultf == 2.0f, "Expected 2.0 but got %f", resultf); resultf = Box6f_getDepth(BOX6f(1.0f, 3.0f, 1.0f, 3.0f, 4.0f, 7.0f)); TestCase_assert(resultf == 3.0f, "Expected 3.0 but got %f", resultf); Vector3f size3f = Box6f_getSize(BOX6f(0.0f, 1.0f, 1.0f, 3.0f, -3.0f, 0.0f)); TestCase_assert(size3f.x == 1.0f && size3f.y == 2.0f && size3f.z == 3.0f, "Expected {1.0, 2.0, 3.0} but got {%f, %f, %f}", size3f.x, size3f.y, size3f.z); size3f = Box6f_getSize(BOX6f(1.0f, 3.0f, 4.0f, 7.0f, 0.0f, 0.5f)); TestCase_assert(size3f.x == 2.0f && size3f.y == 3.0 && size3f.z == 0.5f, "Expected {2.0, 3.0, 0.5} but got {%f, %f, %f}", size3f.x, size3f.y, size3f.z); center3f = Box6f_getCenter(BOX6f(1.0f, 3.0f, 0.0f, 1.0f, 2.0f, 4.0f)); TestCase_assert(center3f.x == 2.0f && center3f.y == 0.5f && center3f.z == 3.0f, "Expected {2.0, 0.5, 3.0} but got {%f, %f, %f}", center3f.x, center3f.y, center3f.z); center3f = Box6f_getCenter(BOX6f(-2.0f, 2.0f, 5.0f, 8.0f, -1.0f, 3.0f)); TestCase_assert(center3f.x == 0.0f && center3f.y == 6.5f && center3f.z == 1.0f, "Expected {0.0, 6.5, 1.0} but got {%f, %f, %f}", center3f.x, center3f.y, center3f.z); resulti = Box6i_getWidth(BOX6i(1, 3, 0, 1, 0, 1)); TestCase_assert(resulti == 2, "Expected 2 but got %d", resulti); resulti = Box6i_getWidth(BOX6i(4, 7, 1, 3, 1, 3)); TestCase_assert(resulti == 3, "Expected 3 but got %d", resulti); resulti = Box6i_getHeight(BOX6i(0, 1, 1, 3, 0, 1)); TestCase_assert(resulti == 2, "Expected 2 but got %d", resulti); resulti = Box6i_getHeight(BOX6i(1, 3, 4, 7, 1, 3)); TestCase_assert(resulti == 3, "Expected 3 but got %d", resulti); resulti = Box6i_getDepth(BOX6i(0, 1, 0, 1, 1, 3)); TestCase_assert(resulti == 2, "Expected 2 but got %d", resulti); resulti = Box6i_getDepth(BOX6i(1, 3, 1, 3, 4, 7)); TestCase_assert(resulti == 3, "Expected 3 but got %d", resulti); center3i = Box6i_getCenter(BOX6i(1, 3, 0, 1, 2, 4)); TestCase_assert(center3i.x == 2 && center3i.y == 0 && center3i.z == 3, "Expected {2, 0, 3} but got {%d, %d, %d}", center3i.x, center3i.y, center3i.z); center3i = Box6i_getCenter(BOX6i(-2, 2, 5, 8, -1, 3)); TestCase_assert(center3i.x == 0 && center3i.y == 6 && center3i.z == 1, "Expected {0, 6, 1} but got {%d, %d, %d}", center3i.x, center3i.y, center3i.z); resultx = Box6x_getWidth(BOX6x(0x10000, 0x30000, 0x00000, 0x10000, 0x00000, 0x10000)); TestCase_assert(resultx == 0x20000, "Expected 0x20000 but got 0x%05X", resultx); resultx = Box6x_getWidth(BOX6x(0x40000, 0x70000, 0x10000, 0x30000, 0x10000, 0x30000)); TestCase_assert(resultx == 0x30000, "Expected 0x30000 but got 0x%05X", resultx); resultx = Box6x_getHeight(BOX6x(0x00000, 0x10000, 0x10000, 0x30000, 0x00000, 0x10000)); TestCase_assert(resultx == 0x20000, "Expected 0x20000 but got 0x%05X", resultx); resultx = Box6x_getHeight(BOX6x(0x10000, 0x30000, 0x40000, 0x70000, 0x10000, 0x30000)); TestCase_assert(resultx == 0x30000, "Expected 0x30000 but got 0x%05X", resultx); resultx = Box6x_getDepth(BOX6x(0x00000, 0x10000, 0x00000, 0x10000, 0x10000, 0x30000)); TestCase_assert(resultx == 0x20000, "Expected 0x20000 but got 0x%05X", resultx); resultx = Box6x_getDepth(BOX6x(0x10000, 0x30000, 0x10000, 0x30000, 0x40000, 0x70000)); TestCase_assert(resultx == 0x30000, "Expected 0x30000 but got 0x%05X", resultx); center3x = Box6x_getCenter(BOX6x(0x10000, 0x30000, 0x00000, 0x10000, 0x20000, 0x40000)); TestCase_assert(center3x.x == 0x20000 && center3x.y == 0x08000 && center3x.z == 0x30000, "Expected {0x20000, 0x08000, 0x30000} but got {0x%05X, 0x%05X, 0x%05X}", center3x.x, center3x.y, center3x.z); center3x = Box6x_getCenter(BOX6x(-0x20000, 0x20000, 0x50000, 0x80000, -0x10000, 0x30000)); TestCase_assert(center3x.x == 0x00000 && center3x.y == 0x68000 && center3x.z == 0x10000, "Expected {0x00000, 0x68000, 0x10000} but got {0x%05X, 0x%05X, 0x%05X}", center3x.x, center3x.y, center3x.z); } TEST_SUITE(RectBoxTest, testConstructor, testFromPositionAndSize, testFromPositionSizeOrigin, testEnclosingPoints, testIntersection, testUnion, testOffset, testConstrainWithin, testInset, testInsetMargins, testOutsetMargins, testInterpolate, testRound, testUnionWithPosition, testIsEmpty, testIsZero, testIsEqual, testIntersectsRectBox, testContainsRectBox, testContainsVector, testClamp, testConvenienceAccessors)