Mercurial Hosting > traffic-intelligence
view trajectorymanagement/test/TrajectoryElementTest.h @ 1242:4cd8ace3552f
major update for classification, allowing the use of neural network classification
author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
---|---|
date | Wed, 07 Feb 2024 11:43:03 -0500 |
parents | e1e7acef8eab |
children |
line wrap: on
line source
#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_ */