X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=tests%2Fgeometry%2FVectorTest.cpp;fp=tests%2Fgeometry%2FVectorTest.cpp;h=7ba58d2bae8d7de955194741c69e4db34424dc6a;hb=ef2496b3cb7ce66b7f831278be66261834b732e5;hp=0000000000000000000000000000000000000000;hpb=c5e56f45e08fcc6c4dceb586ce3d671a3f3907ab;p=l2e.git diff --git a/tests/geometry/VectorTest.cpp b/tests/geometry/VectorTest.cpp new file mode 100644 index 0000000..7ba58d2 --- /dev/null +++ b/tests/geometry/VectorTest.cpp @@ -0,0 +1,127 @@ +#include "VectorTest.h" + +#include + +CPPUNIT_TEST_SUITE_REGISTRATION(test_geometry::VectorTest); + +using geometry::Vector; + + +namespace test_geometry { + +void VectorTest::setUp() { + +} + +void VectorTest::tearDown() { + +} + + +void VectorTest::testComparison() { + CPPUNIT_ASSERT_EQUAL(Vector(0, 0), Vector(0, 0)); + + CPPUNIT_ASSERT(Vector(0, 0) != Vector(0, 1)); + CPPUNIT_ASSERT(Vector(0, 0) != Vector(1, 0)); + CPPUNIT_ASSERT(Vector(0, 0) != Vector(1, 1)); +} + +void VectorTest::testSum() { + CPPUNIT_ASSERT_EQUAL( + Vector(1, 1), + Vector(1, 1) + Vector(0, 0)); + CPPUNIT_ASSERT_EQUAL( + Vector(1, 1), + Vector(0, 1) + Vector(1, 0)); + + CPPUNIT_ASSERT_EQUAL( + Vector(1, 1), + Vector(1, 1) - Vector(0, 0)); + CPPUNIT_ASSERT_EQUAL( + Vector(0, 1), + Vector(1, 1) - Vector(1, 0)); +} + +void VectorTest::testProduct() { + CPPUNIT_ASSERT_EQUAL( + Vector(2, 3), + Vector(2, 3) * Vector(1, 1)); + CPPUNIT_ASSERT_EQUAL( + Vector(10, 12), + Vector(2, 3) * Vector(5, 4)); + CPPUNIT_ASSERT_EQUAL( + Vector(2, 3), + Vector(2, 3) * 1); + CPPUNIT_ASSERT_EQUAL( + Vector(4, 6), + Vector(2, 3) * 2); + CPPUNIT_ASSERT_EQUAL( + Vector(2, 3), + 1 * Vector(2, 3)); + CPPUNIT_ASSERT_EQUAL( + Vector(4, 6), + 2 * Vector(2, 3)); + + CPPUNIT_ASSERT_EQUAL( + Vector(10, 12), + Vector(10, 12) / Vector(1, 1)); + CPPUNIT_ASSERT_EQUAL( + Vector(2, 3), + Vector(10, 12) / Vector(5, 4)); + CPPUNIT_ASSERT_EQUAL( + Vector(4, 6), + Vector(4, 6) / 1); + CPPUNIT_ASSERT_EQUAL( + Vector(2, 3), + Vector(4, 6) / 2); + CPPUNIT_ASSERT_EQUAL( + Vector(3, 4), + 12 / Vector(4, 3)); +} + +void VectorTest::testModulo() { + CPPUNIT_ASSERT_EQUAL( + Vector(0, 0), + Vector(1, 2) % Vector(1, 1)); + CPPUNIT_ASSERT_EQUAL( + Vector(0, 0), + Vector(1, 2) % 1); + CPPUNIT_ASSERT_EQUAL( + Vector(3, 1), + Vector(3, 5) % Vector(4, 2)); + CPPUNIT_ASSERT_EQUAL( + Vector(3, 1), + Vector(3, 5) % 4); + + Vector vecf = Vector(4.0f, 5.0f) % Vector(2.0f, 3.0f); + CPPUNIT_ASSERT_DOUBLES_EQUAL(0.0f, vecf.X(), std::numeric_limits::epsilon()); + CPPUNIT_ASSERT_DOUBLES_EQUAL(2.0f, vecf.Y(), std::numeric_limits::epsilon()); + + vecf = Vector(4.0f, 5.0f) % 4.0f; + CPPUNIT_ASSERT_DOUBLES_EQUAL(0.0f, vecf.X(), std::numeric_limits::epsilon()); + CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0f, vecf.Y(), std::numeric_limits::epsilon()); + + Vector vecd = Vector(4.0, 5.0) % Vector(2.0, 3.0); + CPPUNIT_ASSERT_DOUBLES_EQUAL(0.0, vecd.X(), std::numeric_limits::epsilon()); + CPPUNIT_ASSERT_DOUBLES_EQUAL(2.0, vecd.Y(), std::numeric_limits::epsilon()); + + vecd = Vector(4.0, 5.0) % 4.0; + CPPUNIT_ASSERT_DOUBLES_EQUAL(0.0, vecd.X(), std::numeric_limits::epsilon()); + CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, vecd.Y(), std::numeric_limits::epsilon()); +} + +void VectorTest::testFunctional() { + const Vector vec(2, 5); + CPPUNIT_ASSERT_EQUAL(2, vec.X()); + CPPUNIT_ASSERT_EQUAL(5, vec.Y()); + CPPUNIT_ASSERT_EQUAL(52, vec.Index(10)); + + const Vector indexVec = Vector::FromIndex(52, 10); + CPPUNIT_ASSERT_EQUAL(vec, indexVec); + + Vector lockedVec = Vector(vec); + lockedVec.Lock(Vector(2, 2)); + CPPUNIT_ASSERT_EQUAL(Vector(2, 4), lockedVec); +} + +}