diff trajectorymanagement/test/TrajectoryElementTest.h @ 1159:e1e7acef8eab

moved trajectory management library into Traffic Intelligence
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Mon, 22 Feb 2021 22:09:35 -0500
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/trajectorymanagement/test/TrajectoryElementTest.h	Mon Feb 22 22:09:35 2021 -0500
@@ -0,0 +1,233 @@
+#ifndef TRAJECTORYELEMENTTEST_H_
+#define TRAJECTORYELEMENTTEST_H_
+
+#include "../src/TrajectoryElement.h"
+#include "../src/PointOperations.h"
+
+#include <cppunit/extensions/HelperMacros.h>
+
+using namespace std;
+
+template<typename T>
+class TrajectoryElementTest: public CPPUNIT_NS::TestCase
+{
+CPPUNIT_TEST_SUITE(TrajectoryElementTest);
+		CPPUNIT_TEST(testTrajectoryElement1);
+		CPPUNIT_TEST(testTrajectoryElement2);
+		CPPUNIT_TEST(testSetFrameNumber);
+		CPPUNIT_TEST(testSetPoint);
+		CPPUNIT_TEST(testShift1);
+		CPPUNIT_TEST(testShift2);
+		CPPUNIT_TEST(testOperatorEq1);
+		CPPUNIT_TEST(testOperatorEq2);
+		CPPUNIT_TEST(testOperatorEq3);
+		CPPUNIT_TEST(testOperatorEq4);
+		CPPUNIT_TEST(testOperatorEq5);
+//		CPPUNIT_TEST(testOperatorIn1);
+//		CPPUNIT_TEST(testOperatorIn2);
+//		CPPUNIT_TEST(testOperatorOut1);
+//		CPPUNIT_TEST(testOperatorOut2);
+	CPPUNIT_TEST_SUITE_END();
+
+public:
+	void setUp(void)
+	{
+		trajectoryElement.setFrameNumber(2);
+
+		T point;
+		initPoint(point, int(4), int(8), int(16));
+		trajectoryElement.setPoint(point);
+	}
+
+	void tearDown(void)
+	{
+	}
+
+protected:
+	void testTrajectoryElement1(void)
+	{
+		T point;
+		initPoint(point, int(4), int(8), int(16));
+		CPPUNIT_ASSERT_EQUAL(trajectoryElement.getFrameNumber(), (unsigned int) 2);
+		CPPUNIT_ASSERT_EQUAL(trajectoryElement.getPoint(), point);
+	}
+
+	void testTrajectoryElement2(void)
+	{
+		TrajectoryElement<T> trajectoryElement2(trajectoryElement);
+		CPPUNIT_ASSERT_EQUAL(trajectoryElement, trajectoryElement2);
+	}
+
+	void testSetFrameNumber(void)
+	{
+		for (unsigned int i = 0; i < 20; ++i)
+		{
+			trajectoryElement.setFrameNumber(i);
+			CPPUNIT_ASSERT_EQUAL(trajectoryElement.getFrameNumber(), i);
+		}
+	}
+
+	void testSetPoint(void)
+	{
+		T point1, point2;
+		for (unsigned int i = 0; i < 20; ++i)
+		{
+			initPoint(point1, int(4), int(8), int(16));
+			initPoint(point2, int(4), int(8), int(16));
+			trajectoryElement.setPoint(point1);
+			CPPUNIT_ASSERT_EQUAL(trajectoryElement.getPoint(), point2);
+		}
+	}
+
+	void testShift1(void)
+	{
+		T shiftPoint, endPoint;
+		initPoint(shiftPoint, int(32), int(16), int(4));
+		initPoint(endPoint, int(36), int(24), int(20));
+		trajectoryElement.shift(shiftPoint);
+		CPPUNIT_ASSERT_EQUAL(trajectoryElement.getPoint(), endPoint);
+	}
+
+	void testShift2(void)
+	{
+		T shiftPoint1, shiftPoint2, endPoint;
+		initPoint(shiftPoint1, int(32), int(16), int(4));
+		initPoint(shiftPoint2, int(2), int(4), int(28));
+		initPoint(endPoint, int(38), int(28), int(48));
+		trajectoryElement.shift(shiftPoint1);
+		trajectoryElement.shift(shiftPoint2);
+		CPPUNIT_ASSERT_EQUAL(trajectoryElement.getPoint(), endPoint);
+	}
+
+	void testOperatorEq1(void)
+	{
+		CPPUNIT_ASSERT(trajectoryElement == trajectoryElement);
+
+		trajectoryElement.setFrameNumber(2);
+		CPPUNIT_ASSERT(trajectoryElement == trajectoryElement);
+
+		T point;
+		initPoint(point, int(10), int(20), int(30));
+		trajectoryElement.setPoint(point);
+		CPPUNIT_ASSERT(trajectoryElement == trajectoryElement);
+	}
+
+	void testOperatorEq2(void)
+	{
+		TrajectoryElement<T> trajectoryElement2(trajectoryElement);
+		CPPUNIT_ASSERT(trajectoryElement2 == trajectoryElement);
+	}
+
+	void testOperatorEq3(void)
+	{
+		TrajectoryElement<T> trajectoryElement2;
+		trajectoryElement2 = trajectoryElement;
+		CPPUNIT_ASSERT(trajectoryElement2 == trajectoryElement);
+	}
+
+	void testOperatorEq4(void)
+	{
+		const TrajectoryElement<T> trajectoryElement2(trajectoryElement);
+		trajectoryElement.setFrameNumber(16);
+		CPPUNIT_ASSERT(trajectoryElement != trajectoryElement2);
+	}
+
+	void testOperatorEq5(void)
+	{
+		const TrajectoryElement<T> trajectoryElement2(trajectoryElement);
+
+		T point;
+
+		initPoint(point, int(4), int(8), int(16));
+		trajectoryElement.setPoint(point);
+		CPPUNIT_ASSERT(trajectoryElement == trajectoryElement2);
+
+		initPoint(point, int(4 + 10), int(8), int(16));
+		trajectoryElement.setPoint(point);
+		CPPUNIT_ASSERT(trajectoryElement != trajectoryElement2);
+
+		initPoint(point, int(4), int(8 + 10), int(16));
+		trajectoryElement.setPoint(point);
+		CPPUNIT_ASSERT(trajectoryElement != trajectoryElement2);
+
+		initPoint(point, int(4), int(8), int(16 + 10));
+		trajectoryElement.setPoint(point);
+		if (dim(point) == 2)
+		{
+			CPPUNIT_ASSERT(trajectoryElement == trajectoryElement2);
+		}
+		else if (dim(point) == 3)
+		{
+			CPPUNIT_ASSERT(trajectoryElement != trajectoryElement2);
+		}
+	}
+
+	void testOperatorIn1(void)
+	{
+		stringstream ss;
+		ss << trajectoryElement;
+
+		string s("2 4 8");
+		if (dim(trajectoryElement.getPoint()) == 3)
+		{
+			s += string(" 16");
+		}
+
+		CPPUNIT_ASSERT_EQUAL(ss.str(), s);
+	}
+
+	void testOperatorIn2(void)
+	{
+		trajectoryElement.setFrameNumber(4);
+
+		T point;
+		initPoint(point, int(10), int(20), int(30));
+		trajectoryElement.setPoint(point);
+
+		stringstream ss;
+		ss << trajectoryElement;
+
+		string s("4 10 20");
+		if (dim(trajectoryElement.getPoint()) == 3)
+		{
+			s += string(" 30");
+		}
+
+		CPPUNIT_ASSERT_EQUAL(ss.str(), s);
+	}
+
+	void testOperatorOut1(void)
+	{
+		stringstream ss;
+		ss << trajectoryElement;
+
+		TrajectoryElement<T> trajectoryElement2;
+		istringstream is(ss.str());
+		is >> trajectoryElement2;
+
+		CPPUNIT_ASSERT_EQUAL(trajectoryElement, trajectoryElement2);
+	}
+
+	void testOperatorOut2(void)
+	{
+		trajectoryElement.setFrameNumber(4);
+
+		T point;
+		initPoint(point, int(10), int(20), int(30));
+		trajectoryElement.setPoint(point);
+
+		stringstream ss;
+		ss << trajectoryElement;
+
+		TrajectoryElement<T> trajectoryElement2;
+		istringstream is(ss.str());
+		is >> trajectoryElement2;
+
+		CPPUNIT_ASSERT_EQUAL(trajectoryElement, trajectoryElement2);
+	}
+
+private:
+	TrajectoryElement<T> trajectoryElement;
+};
+
+#endif /* TRAJECTORYELEMENTTEST_H_ */