#include "tests/PlaneTests.h" #include "tests/Test.h" #include "math/Plane.h" #include "utils/StringBuffer.h" typedef StringBuffer<50> String; const float eps = 0.0001f; static void testToString1(Test& test) { Plane p; test.checkEqual(String("(0.00 x + 0.00 y + 0.00 z + 0.00)"), String(p), "to string 1"); } static void testToString2(Test& test) { Plane p(Vector3(3.0f, 6.0f, 8.0f), Vector3(7.0f, 6.0f, 2.0f), Vector3(4.0f, 4.0f, 4.0f)); test.checkEqual(String("(-0.68 x + 0.57 y + -0.46 z + 2.28)"), String(p), "to string 2"); } static void testSignedDistance(Test& test) { Vector3 a(3.0f, 6.0f, 8.0f); Vector3 b(7.0f, 6.0f, 2.0f); Vector3 c(4.0f, 4.0f, 4.0f); Plane p(a, b, c); test.checkFloat(0.0f, p.getSignedDistance(a), eps, "no distance to init points 1"); test.checkFloat(0.0f, p.getSignedDistance(b), eps, "no distance to init points 2"); test.checkFloat(0.0f, p.getSignedDistance(c), eps, "no distance to init points 3"); test.checkFloat(-1.13960576f, p.getSignedDistance(Vector3(5.0f, 8.0f, 10.0f)), eps, "positive distance"); test.checkFloat(0.911684612f, p.getSignedDistance(Vector3(3.0f, 2.0f, 1.0f)), eps, "negative distance"); } void PlaneTests::test() { Test test("Plane"); testToString1(test); testToString2(test); testSignedDistance(test); test.finalize(); }