]> git.localhorst.tv Git - l2e.git/blobdiff - tests/geometry/VectorTest.cpp
added first unit test
[l2e.git] / tests / geometry / VectorTest.cpp
diff --git a/tests/geometry/VectorTest.cpp b/tests/geometry/VectorTest.cpp
new file mode 100644 (file)
index 0000000..7ba58d2
--- /dev/null
@@ -0,0 +1,127 @@
+#include "VectorTest.h"
+
+#include <limits>
+
+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<int>(0, 0), Vector<int>(0, 0));
+
+       CPPUNIT_ASSERT(Vector<int>(0, 0) != Vector<int>(0, 1));
+       CPPUNIT_ASSERT(Vector<int>(0, 0) != Vector<int>(1, 0));
+       CPPUNIT_ASSERT(Vector<int>(0, 0) != Vector<int>(1, 1));
+}
+
+void VectorTest::testSum() {
+       CPPUNIT_ASSERT_EQUAL(
+                       Vector<int>(1, 1),
+                       Vector<int>(1, 1) + Vector<int>(0, 0));
+       CPPUNIT_ASSERT_EQUAL(
+                       Vector<int>(1, 1),
+                       Vector<int>(0, 1) + Vector<int>(1, 0));
+
+       CPPUNIT_ASSERT_EQUAL(
+                       Vector<int>(1, 1),
+                       Vector<int>(1, 1) - Vector<int>(0, 0));
+       CPPUNIT_ASSERT_EQUAL(
+                       Vector<int>(0, 1),
+                       Vector<int>(1, 1) - Vector<int>(1, 0));
+}
+
+void VectorTest::testProduct() {
+       CPPUNIT_ASSERT_EQUAL(
+                       Vector<int>(2, 3),
+                       Vector<int>(2, 3) * Vector<int>(1, 1));
+       CPPUNIT_ASSERT_EQUAL(
+                       Vector<int>(10, 12),
+                       Vector<int>(2, 3) * Vector<int>(5, 4));
+       CPPUNIT_ASSERT_EQUAL(
+                       Vector<int>(2, 3),
+                       Vector<int>(2, 3) * 1);
+       CPPUNIT_ASSERT_EQUAL(
+                       Vector<int>(4, 6),
+                       Vector<int>(2, 3) * 2);
+       CPPUNIT_ASSERT_EQUAL(
+                       Vector<int>(2, 3),
+                       1 * Vector<int>(2, 3));
+       CPPUNIT_ASSERT_EQUAL(
+                       Vector<int>(4, 6),
+                       2 * Vector<int>(2, 3));
+
+       CPPUNIT_ASSERT_EQUAL(
+                       Vector<int>(10, 12),
+                       Vector<int>(10, 12) / Vector<int>(1, 1));
+       CPPUNIT_ASSERT_EQUAL(
+                       Vector<int>(2, 3),
+                       Vector<int>(10, 12) / Vector<int>(5, 4));
+       CPPUNIT_ASSERT_EQUAL(
+                       Vector<int>(4, 6),
+                       Vector<int>(4, 6) / 1);
+       CPPUNIT_ASSERT_EQUAL(
+                       Vector<int>(2, 3),
+                       Vector<int>(4, 6) / 2);
+       CPPUNIT_ASSERT_EQUAL(
+                       Vector<int>(3, 4),
+                       12 / Vector<int>(4, 3));
+}
+
+void VectorTest::testModulo() {
+       CPPUNIT_ASSERT_EQUAL(
+                       Vector<int>(0, 0),
+                       Vector<int>(1, 2) % Vector<int>(1, 1));
+       CPPUNIT_ASSERT_EQUAL(
+                       Vector<int>(0, 0),
+                       Vector<int>(1, 2) % 1);
+       CPPUNIT_ASSERT_EQUAL(
+                       Vector<int>(3, 1),
+                       Vector<int>(3, 5) % Vector<int>(4, 2));
+       CPPUNIT_ASSERT_EQUAL(
+                       Vector<int>(3, 1),
+                       Vector<int>(3, 5) % 4);
+
+       Vector<float> vecf = Vector<float>(4.0f, 5.0f) % Vector<float>(2.0f, 3.0f);
+       CPPUNIT_ASSERT_DOUBLES_EQUAL(0.0f, vecf.X(), std::numeric_limits<float>::epsilon());
+       CPPUNIT_ASSERT_DOUBLES_EQUAL(2.0f, vecf.Y(), std::numeric_limits<float>::epsilon());
+
+       vecf = Vector<float>(4.0f, 5.0f) % 4.0f;
+       CPPUNIT_ASSERT_DOUBLES_EQUAL(0.0f, vecf.X(), std::numeric_limits<float>::epsilon());
+       CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0f, vecf.Y(), std::numeric_limits<float>::epsilon());
+
+       Vector<double> vecd = Vector<double>(4.0, 5.0) % Vector<double>(2.0, 3.0);
+       CPPUNIT_ASSERT_DOUBLES_EQUAL(0.0, vecd.X(), std::numeric_limits<double>::epsilon());
+       CPPUNIT_ASSERT_DOUBLES_EQUAL(2.0, vecd.Y(), std::numeric_limits<double>::epsilon());
+
+       vecd = Vector<double>(4.0, 5.0) % 4.0;
+       CPPUNIT_ASSERT_DOUBLES_EQUAL(0.0, vecd.X(), std::numeric_limits<double>::epsilon());
+       CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, vecd.Y(), std::numeric_limits<double>::epsilon());
+}
+
+void VectorTest::testFunctional() {
+       const Vector<int> vec(2, 5);
+       CPPUNIT_ASSERT_EQUAL(2, vec.X());
+       CPPUNIT_ASSERT_EQUAL(5, vec.Y());
+       CPPUNIT_ASSERT_EQUAL(52, vec.Index(10));
+
+       const Vector<int> indexVec = Vector<int>::FromIndex(52, 10);
+       CPPUNIT_ASSERT_EQUAL(vec, indexVec);
+
+       Vector<int> lockedVec = Vector<int>(vec);
+       lockedVec.Lock(Vector<int>(2, 2));
+       CPPUNIT_ASSERT_EQUAL(Vector<int>(2, 4), lockedVec);
+}
+
+}