Mercurial Hosting > traffic-intelligence
view trajectorymanagement/test/TrajectoryTest.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 source
#ifndef TRAJECTORYTEST_H_ #define TRAJECTORYTEST_H_ #include "../src/Trajectory.h" #include <cppunit/extensions/HelperMacros.h> using namespace std; template<class T> class TrajectoryTest: public CPPUNIT_NS::TestCase { CPPUNIT_TEST_SUITE(TrajectoryTest); CPPUNIT_TEST(testTrajectory1); CPPUNIT_TEST(testTrajectory2); CPPUNIT_TEST(testTrajectory3); CPPUNIT_TEST(testSetId); CPPUNIT_TEST(testGetTrajectoryElement); CPPUNIT_TEST(testAdd1); CPPUNIT_TEST(testAdd2); CPPUNIT_TEST(testAdd3); CPPUNIT_TEST(testAdd4); CPPUNIT_TEST(testAdd5); CPPUNIT_TEST(testAdd6); CPPUNIT_TEST(testAdd7); CPPUNIT_TEST(testAdd8); CPPUNIT_TEST(testAdd9); CPPUNIT_TEST(testAdd10); CPPUNIT_TEST(testAdd11); CPPUNIT_TEST(testAdd12); CPPUNIT_TEST(testAdd13); CPPUNIT_TEST(testAdd14); CPPUNIT_TEST(testAdd15); CPPUNIT_TEST(testAdd16); CPPUNIT_TEST(testAdd17); CPPUNIT_TEST(testAdd18); CPPUNIT_TEST(testAdd19); CPPUNIT_TEST(testAdd20); CPPUNIT_TEST(testAdd21); CPPUNIT_TEST(testAdd22); CPPUNIT_TEST(testAdd23); CPPUNIT_TEST(testAdd24); CPPUNIT_TEST(testAdd25); CPPUNIT_TEST(testAdd26); CPPUNIT_TEST(testAdd27); CPPUNIT_TEST(testAdd28); CPPUNIT_TEST(testAdd29); CPPUNIT_TEST(testAdd30); CPPUNIT_TEST(testAdd31); CPPUNIT_TEST(testAdd32); CPPUNIT_TEST(testAdd33); CPPUNIT_TEST(testAdd34); CPPUNIT_TEST(testAdd35); CPPUNIT_TEST(testAdd36); CPPUNIT_TEST(testAdd37); CPPUNIT_TEST(testAdd38); CPPUNIT_TEST(testAdd39); CPPUNIT_TEST(testGetFrameNumber); CPPUNIT_TEST(testGetPoint); CPPUNIT_TEST(testGetCheckAscFrameNumber1); CPPUNIT_TEST(testGetCheckAscFrameNumber2); CPPUNIT_TEST(testSetCheckAscFrameNumber1); CPPUNIT_TEST(testSetCheckAscFrameNumber2); CPPUNIT_TEST(testSetCheckAscFrameNumber3); CPPUNIT_TEST(testSetCheckAscFrameNumber4); CPPUNIT_TEST(testSetCheckAscFrameNumber5); CPPUNIT_TEST(testSetCheckAscFrameNumber6); CPPUNIT_TEST(testSetCheckAscFrameNumber7); CPPUNIT_TEST(testSetCheckAscFrameNumber8); CPPUNIT_TEST(testSetCheckAscFrameNumber9); CPPUNIT_TEST(testSetCheckAscFrameNumber10); CPPUNIT_TEST(testSize1); CPPUNIT_TEST(testSize2); CPPUNIT_TEST(testSizeInc); CPPUNIT_TEST(testSizeDec); CPPUNIT_TEST(testSizeClear); CPPUNIT_TEST(testEmptySizeInc); CPPUNIT_TEST(testEmptySizeDec); CPPUNIT_TEST(testInsert1); CPPUNIT_TEST(testInsert2); CPPUNIT_TEST(testInsert3); CPPUNIT_TEST(testInsert4); CPPUNIT_TEST(testInsert5); CPPUNIT_TEST(testInsert6); CPPUNIT_TEST(testInsert7); CPPUNIT_TEST(testInsert8); CPPUNIT_TEST(testInsert9); CPPUNIT_TEST(testErase1); CPPUNIT_TEST(testErase2); CPPUNIT_TEST(testErase3); CPPUNIT_TEST(testErase4); CPPUNIT_TEST(testErase5); CPPUNIT_TEST(testErase6); CPPUNIT_TEST(testErase7); CPPUNIT_TEST(testErase8); CPPUNIT_TEST(testErase9); CPPUNIT_TEST(testErase10); CPPUNIT_TEST(testErase11); CPPUNIT_TEST(testErase12); CPPUNIT_TEST(testErase13); CPPUNIT_TEST(testErase14); CPPUNIT_TEST(testPop_back1); CPPUNIT_TEST(testPop_back2); CPPUNIT_TEST(testPop_back3); CPPUNIT_TEST(testPop_back4); CPPUNIT_TEST(testOperatorGet); CPPUNIT_TEST(testAt1); CPPUNIT_TEST(testAt2); CPPUNIT_TEST(testAt3); CPPUNIT_TEST(testAt4); CPPUNIT_TEST(testAt5); CPPUNIT_TEST(testAt6); CPPUNIT_TEST(testAt7); CPPUNIT_TEST(testShift1); CPPUNIT_TEST(testShift2); CPPUNIT_TEST(testOperatorEq1); CPPUNIT_TEST(testOperatorEq2); CPPUNIT_TEST(testOperatorEq3); CPPUNIT_TEST(testOperatorEq4); CPPUNIT_TEST(testOperatorEq5); CPPUNIT_TEST(testOperatorEq6); CPPUNIT_TEST(testOperatorEq7); CPPUNIT_TEST(testOperatorEq8); CPPUNIT_TEST(testOperatorAdd1); CPPUNIT_TEST(testOperatorAdd2); // CPPUNIT_TEST(testOperatorIn1); // CPPUNIT_TEST(testOperatorIn2); // CPPUNIT_TEST(testOperatorIn3); // CPPUNIT_TEST(testOperatorOut1); // CPPUNIT_TEST(testOperatorOut2); // CPPUNIT_TEST(testOperatorOut3); CPPUNIT_TEST(testMin1); CPPUNIT_TEST(testMin2); CPPUNIT_TEST(testMin3); CPPUNIT_TEST(testMin4); CPPUNIT_TEST(testMax1); CPPUNIT_TEST(testMax2); CPPUNIT_TEST(testMax3); CPPUNIT_TEST(testMax4); CPPUNIT_TEST_SUITE_END(); public: void setUp(void) { sampleTrajectory.setId(1); const unsigned int n = 100; for (unsigned int i = 0; i < n; ++i) { T point; initPoint(point, int(i), int(i + 10), int(i + 20)); sampleTrajectory.add(i + 1, point); } } void tearDown(void) { sampleTrajectory.clear(); } protected: void testTrajectory1(void) { Trajectory<T> trajectory; CPPUNIT_ASSERT_EQUAL(trajectory.getId(), (unsigned int) 0); } void testTrajectory2(void) { Trajectory<T> trajectory; CPPUNIT_ASSERT_EQUAL(trajectory.getCheckAscFrameNumber(), false); } void testTrajectory3(void) { Trajectory<T> trajectory(sampleTrajectory); CPPUNIT_ASSERT_EQUAL(trajectory, sampleTrajectory); } void testSetId(void) { const unsigned int id = 123; sampleTrajectory.setId(id); CPPUNIT_ASSERT_EQUAL(sampleTrajectory.getId(), id); } void testGetTrajectoryElement(void) { for (unsigned int i = 0; i < sampleTrajectory.size(); ++i) { TrajectoryElement<T> trajectoryElement1 = sampleTrajectory.getTrajectoryElement(i); T point; initPoint(point, int(i), int(i + 10), int(i + 20)); TrajectoryElement<T> trajectoryElement2(i + 1, point); CPPUNIT_ASSERT_EQUAL(trajectoryElement1, trajectoryElement2); } } void testAdd1(void) { Trajectory<T> trajectory; trajectory.setId(1); for (unsigned int i = 0; i < sampleTrajectory.size(); ++i) { const unsigned int frameNumber = sampleTrajectory.getFrameNumber(i); const T point = sampleTrajectory.getPoint(i); trajectory.add(frameNumber, point); TrajectoryElement<T> trajectoryElement1 = trajectory.getTrajectoryElement(i); TrajectoryElement<T> trajectoryElement2(frameNumber, point); CPPUNIT_ASSERT_EQUAL(trajectoryElement1, trajectoryElement2); } CPPUNIT_ASSERT_EQUAL(trajectory, sampleTrajectory); } void testAdd2(void) { Trajectory<T> trajectory; trajectory.setId(1); for (unsigned int i = 0; i < sampleTrajectory.size(); ++i) { const unsigned int frameNumber = sampleTrajectory.getFrameNumber(i); const T point = sampleTrajectory.getPoint(i); //trajectory.add(point); trajectory.add(frameNumber, point); const TrajectoryElement<T> trajectoryElement1(frameNumber, point); const TrajectoryElement<T> trajectoryElement2 = trajectory.getTrajectoryElement(i); CPPUNIT_ASSERT_EQUAL(trajectoryElement1, trajectoryElement2); } CPPUNIT_ASSERT_EQUAL(trajectory, sampleTrajectory); } void testAdd3(void) { Trajectory<T> trajectory; trajectory.setId(1); for (unsigned int i = 0; i < sampleTrajectory.size(); ++i) { const unsigned int frameNumber = sampleTrajectory.getFrameNumber(i); const T point = sampleTrajectory.getPoint(i); const TrajectoryElement<T> trajectoryElement1(frameNumber, point); trajectory.add(trajectoryElement1); const TrajectoryElement<T> trajectoryElement2 = trajectory.getTrajectoryElement(i); CPPUNIT_ASSERT_EQUAL(trajectoryElement1, trajectoryElement2); } CPPUNIT_ASSERT_EQUAL(trajectory, sampleTrajectory); } void testAdd4(void) { const T point = sampleTrajectory.getPoint(0); Trajectory<T> trajectory; trajectory.setCheckAscFrameNumber(true); CPPUNIT_ASSERT_NO_THROW(trajectory.add(0, point)); } void testAdd5(void) { const T point = sampleTrajectory.getPoint(0); Trajectory<T> trajectory; trajectory.setCheckAscFrameNumber(false); CPPUNIT_ASSERT_NO_THROW(trajectory.add(0, point)); } void testAdd6(void) { const T point = sampleTrajectory.getPoint(0); Trajectory<T> trajectory; trajectory.setCheckAscFrameNumber(true); CPPUNIT_ASSERT_NO_THROW(trajectory.add(0, point)); CPPUNIT_ASSERT_THROW(trajectory.add(0, point), TrajectoryFrameNumberErrorException); } void testAdd7(void) { const T point = sampleTrajectory.getPoint(0); Trajectory<T> trajectory; trajectory.setCheckAscFrameNumber(false); CPPUNIT_ASSERT_NO_THROW(trajectory.add(0, point)); CPPUNIT_ASSERT_NO_THROW(trajectory.add(0, point)); } void testAdd8(void) { const T point = sampleTrajectory.getPoint(0); Trajectory<T> trajectory; trajectory.setCheckAscFrameNumber(true); CPPUNIT_ASSERT_NO_THROW(trajectory.add(0, point)); CPPUNIT_ASSERT_NO_THROW(trajectory.add(1, point)); } void testAdd9(void) { const T point = sampleTrajectory.getPoint(0); Trajectory<T> trajectory; trajectory.setCheckAscFrameNumber(false); CPPUNIT_ASSERT_NO_THROW(trajectory.add(0, point)); CPPUNIT_ASSERT_NO_THROW(trajectory.add(1, point)); } void testAdd10(void) { const T point = sampleTrajectory.getPoint(0); Trajectory<T> trajectory; trajectory.setCheckAscFrameNumber(true); CPPUNIT_ASSERT_NO_THROW(trajectory.add(2, point)); } void testAdd11(void) { const T point = sampleTrajectory.getPoint(0); Trajectory<T> trajectory; trajectory.setCheckAscFrameNumber(false); CPPUNIT_ASSERT_NO_THROW(trajectory.add(2, point)); } void testAdd12(void) { const T point = sampleTrajectory.getPoint(0); Trajectory<T> trajectory; trajectory.setCheckAscFrameNumber(true); CPPUNIT_ASSERT_NO_THROW(trajectory.add(2, point)); CPPUNIT_ASSERT_THROW(trajectory.add(2, point), TrajectoryFrameNumberErrorException); } void testAdd13(void) { const T point = sampleTrajectory.getPoint(0); Trajectory<T> trajectory; trajectory.setCheckAscFrameNumber(false); CPPUNIT_ASSERT_NO_THROW(trajectory.add(2, point)); CPPUNIT_ASSERT_NO_THROW(trajectory.add(2, point)); } void testAdd14(void) { const T point = sampleTrajectory.getPoint(0); Trajectory<T> trajectory; trajectory.setCheckAscFrameNumber(true); CPPUNIT_ASSERT_NO_THROW(trajectory.add(2, point)); CPPUNIT_ASSERT_NO_THROW(trajectory.add(3, point)); } void testAdd15(void) { const T point = sampleTrajectory.getPoint(0); Trajectory<T> trajectory; trajectory.setCheckAscFrameNumber(false); CPPUNIT_ASSERT_NO_THROW(trajectory.add(2, point)); CPPUNIT_ASSERT_NO_THROW(trajectory.add(3, point)); } void testAdd16(void) { const T point = sampleTrajectory.getPoint(0); Trajectory<T> trajectory; trajectory.setCheckAscFrameNumber(true); CPPUNIT_ASSERT_NO_THROW(trajectory.add(2, point)); CPPUNIT_ASSERT_NO_THROW(trajectory.add(4, point)); } void testAdd17(void) { const T point = sampleTrajectory.getPoint(0); Trajectory<T> trajectory; trajectory.setCheckAscFrameNumber(false); CPPUNIT_ASSERT_NO_THROW(trajectory.add(2, point)); CPPUNIT_ASSERT_NO_THROW(trajectory.add(4, point)); } void testAdd18(void) { const T point = sampleTrajectory.getPoint(0); Trajectory<T> trajectory; trajectory.setCheckAscFrameNumber(true); trajectory.add(10, point); for (unsigned int i = 0; i < sampleTrajectory.size(); ++i) { CPPUNIT_ASSERT_THROW(trajectory.add(10 + i - 1, point), TrajectoryFrameNumberErrorException); CPPUNIT_ASSERT_THROW(trajectory.add(10 + i, point), TrajectoryFrameNumberErrorException); CPPUNIT_ASSERT_NO_THROW(trajectory.add(10 + i + 1, point)); } CPPUNIT_ASSERT_EQUAL(trajectory.size(), (unsigned int) (sampleTrajectory.size() + 1)); } void testAdd19(void) { const T point = sampleTrajectory.getPoint(0); Trajectory<T> trajectory; trajectory.setCheckAscFrameNumber(false); trajectory.add(10, point); for (unsigned int i = 0; i < sampleTrajectory.size(); ++i) { CPPUNIT_ASSERT_NO_THROW(trajectory.add(10 + i - 1, point)); CPPUNIT_ASSERT_NO_THROW(trajectory.add(10 + i, point)); CPPUNIT_ASSERT_NO_THROW(trajectory.add(10 + i + 1, point)); } CPPUNIT_ASSERT_EQUAL(trajectory.size(), (unsigned int) (3 * sampleTrajectory.size() + 1)); } void testAdd20(void) { sampleTrajectory.setCheckAscFrameNumber(true); const unsigned int frameNumber = sampleTrajectory.getFrameNumber(sampleTrajectory.size() - 1); const T point = sampleTrajectory.getPoint(sampleTrajectory.size() - 1); for (unsigned int i = 0; i <= frameNumber; ++i) { CPPUNIT_ASSERT_THROW(sampleTrajectory.add(i, point), TrajectoryFrameNumberErrorException); } CPPUNIT_ASSERT_NO_THROW(sampleTrajectory.add(frameNumber + 1, point)); CPPUNIT_ASSERT_EQUAL(sampleTrajectory.size(), (unsigned int) 101); } void testAdd21(void) { sampleTrajectory.setCheckAscFrameNumber(false); const unsigned int frameNumber = sampleTrajectory.getFrameNumber(sampleTrajectory.size() - 1); const T point = sampleTrajectory.getPoint(sampleTrajectory.size() - 1); for (unsigned int i = 0; i <= frameNumber; ++i) { CPPUNIT_ASSERT_NO_THROW(sampleTrajectory.add(i, point)); } CPPUNIT_ASSERT_NO_THROW(sampleTrajectory.add(frameNumber + 1, point)); CPPUNIT_ASSERT_EQUAL(sampleTrajectory.size(), (unsigned int) 202); } void testAdd22(void) { const T point = sampleTrajectory.getPoint(0); Trajectory<T> trajectory; trajectory.setCheckAscFrameNumber(true); const TrajectoryElement<T> trajectoryElement(0, point); CPPUNIT_ASSERT_NO_THROW(trajectory.add(trajectoryElement)); } void testAdd23(void) { const T point = sampleTrajectory.getPoint(0); Trajectory<T> trajectory; trajectory.setCheckAscFrameNumber(false); const TrajectoryElement<T> trajectoryElement(0, point); CPPUNIT_ASSERT_NO_THROW(trajectory.add(trajectoryElement)); } void testAdd24(void) { const T point = sampleTrajectory.getPoint(0); Trajectory<T> trajectory; trajectory.setCheckAscFrameNumber(true); const TrajectoryElement<T> trajectoryElement(0, point); CPPUNIT_ASSERT_NO_THROW(trajectory.add(trajectoryElement)); CPPUNIT_ASSERT_THROW(trajectory.add(trajectoryElement), TrajectoryFrameNumberErrorException); } void testAdd25(void) { const T point = sampleTrajectory.getPoint(0); Trajectory<T> trajectory; trajectory.setCheckAscFrameNumber(false); const TrajectoryElement<T> trajectoryElement(0, point); CPPUNIT_ASSERT_NO_THROW(trajectory.add(trajectoryElement)); CPPUNIT_ASSERT_NO_THROW(trajectory.add(trajectoryElement)); } void testAdd26(void) { const T point = sampleTrajectory.getPoint(0); Trajectory<T> trajectory; trajectory.setCheckAscFrameNumber(true); const TrajectoryElement<T> trajectoryElement1(0, point); const TrajectoryElement<T> trajectoryElement2(1, point); CPPUNIT_ASSERT_NO_THROW(trajectory.add(trajectoryElement1)); CPPUNIT_ASSERT_NO_THROW(trajectory.add(trajectoryElement2)); } void testAdd27(void) { const T point = sampleTrajectory.getPoint(0); Trajectory<T> trajectory; trajectory.setCheckAscFrameNumber(false); const TrajectoryElement<T> trajectoryElement1(0, point); const TrajectoryElement<T> trajectoryElement2(1, point); CPPUNIT_ASSERT_NO_THROW(trajectory.add(trajectoryElement1)); CPPUNIT_ASSERT_NO_THROW(trajectory.add(trajectoryElement2)); } void testAdd28(void) { const T point = sampleTrajectory.getPoint(0); Trajectory<T> trajectory; trajectory.setCheckAscFrameNumber(true); const TrajectoryElement<T> trajectoryElement(2, point); CPPUNIT_ASSERT_NO_THROW(trajectory.add(trajectoryElement)); } void testAdd29(void) { const T point = sampleTrajectory.getPoint(0); Trajectory<T> trajectory; trajectory.setCheckAscFrameNumber(false); const TrajectoryElement<T> trajectoryElement(2, point); CPPUNIT_ASSERT_NO_THROW(trajectory.add(trajectoryElement)); } void testAdd30(void) { const T point = sampleTrajectory.getPoint(0); Trajectory<T> trajectory; trajectory.setCheckAscFrameNumber(true); const TrajectoryElement<T> trajectoryElement(2, point); CPPUNIT_ASSERT_NO_THROW(trajectory.add(trajectoryElement)); CPPUNIT_ASSERT_THROW(trajectory.add(trajectoryElement), TrajectoryFrameNumberErrorException); } void testAdd31(void) { const T point = sampleTrajectory.getPoint(0); Trajectory<T> trajectory; trajectory.setCheckAscFrameNumber(false); const TrajectoryElement<T> trajectoryElement(2, point); CPPUNIT_ASSERT_NO_THROW(trajectory.add(trajectoryElement)); CPPUNIT_ASSERT_NO_THROW(trajectory.add(trajectoryElement)); } void testAdd32(void) { const T point = sampleTrajectory.getPoint(0); Trajectory<T> trajectory; trajectory.setCheckAscFrameNumber(true); const TrajectoryElement<T> trajectoryElement1(2, point); const TrajectoryElement<T> trajectoryElement2(3, point); CPPUNIT_ASSERT_NO_THROW(trajectory.add(trajectoryElement1) ); CPPUNIT_ASSERT_NO_THROW(trajectory.add(trajectoryElement2)); } void testAdd33(void) { const T point = sampleTrajectory.getPoint(0); Trajectory<T> trajectory; trajectory.setCheckAscFrameNumber(false); const TrajectoryElement<T> trajectoryElement1(2, point); const TrajectoryElement<T> trajectoryElement2(3, point); CPPUNIT_ASSERT_NO_THROW(trajectory.add(trajectoryElement1)); CPPUNIT_ASSERT_NO_THROW(trajectory.add(trajectoryElement2)); } void testAdd34(void) { const T point = sampleTrajectory.getPoint(0); Trajectory<T> trajectory; trajectory.setCheckAscFrameNumber(true); const TrajectoryElement<T> trajectoryElement1(2, point); const TrajectoryElement<T> trajectoryElement2(4, point); CPPUNIT_ASSERT_NO_THROW(trajectory.add(trajectoryElement1)); CPPUNIT_ASSERT_NO_THROW(trajectory.add(trajectoryElement2)); } void testAdd35(void) { const T point = sampleTrajectory.getPoint(0); Trajectory<T> trajectory; trajectory.setCheckAscFrameNumber(false); const TrajectoryElement<T> trajectoryElement1(2, point); const TrajectoryElement<T> trajectoryElement2(4, point); CPPUNIT_ASSERT_NO_THROW(trajectory.add(trajectoryElement1)); CPPUNIT_ASSERT_NO_THROW(trajectory.add(trajectoryElement2)); } void testAdd36(void) { const T point = sampleTrajectory.getPoint(0); Trajectory<T> trajectory; trajectory.setCheckAscFrameNumber(true); const TrajectoryElement<T> trajectoryElement1(10, point); CPPUNIT_ASSERT_NO_THROW(trajectory.add(trajectoryElement1)); for (unsigned int i = 0; i < sampleTrajectory.size(); ++i) { const TrajectoryElement<T> trajectoryElement2(10 + i - 1, point); const TrajectoryElement<T> trajectoryElement3(10 + i, point); const TrajectoryElement<T> trajectoryElement4(10 + i + 1, point); CPPUNIT_ASSERT_THROW(trajectory.add(trajectoryElement2), TrajectoryFrameNumberErrorException); CPPUNIT_ASSERT_THROW(trajectory.add(trajectoryElement3), TrajectoryFrameNumberErrorException); CPPUNIT_ASSERT_NO_THROW(trajectory.add(trajectoryElement4)); } CPPUNIT_ASSERT_EQUAL(trajectory.size(), (unsigned int) (sampleTrajectory.size() + 1)); } void testAdd37(void) { const T point = sampleTrajectory.getPoint(0); Trajectory<T> trajectory; trajectory.setCheckAscFrameNumber(false); const TrajectoryElement<T> trajectoryElement1(10, point); CPPUNIT_ASSERT_NO_THROW(trajectory.add(trajectoryElement1)); for (unsigned int i = 0; i < sampleTrajectory.size(); ++i) { const TrajectoryElement<T> trajectoryElement2(10 + i - 1, point); const TrajectoryElement<T> trajectoryElement3(10 + i, point); const TrajectoryElement<T> trajectoryElement4(10 + i + 1, point); CPPUNIT_ASSERT_NO_THROW(trajectory.add(trajectoryElement2)); CPPUNIT_ASSERT_NO_THROW(trajectory.add(trajectoryElement3)); CPPUNIT_ASSERT_NO_THROW(trajectory.add(trajectoryElement4)); } CPPUNIT_ASSERT_EQUAL(trajectory.size(), (unsigned int) (3 * sampleTrajectory.size() + 1)); } void testAdd38(void) { sampleTrajectory.setCheckAscFrameNumber(true); const unsigned int frameNumber = sampleTrajectory.getFrameNumber(sampleTrajectory.size() - 1); const T point = sampleTrajectory.getPoint(sampleTrajectory.size() - 1); for (unsigned int i = 0; i <= frameNumber; ++i) { const TrajectoryElement<T> trajectoryElement(i, point); CPPUNIT_ASSERT_THROW(sampleTrajectory.add(trajectoryElement), TrajectoryFrameNumberErrorException); } const TrajectoryElement<T> trajectoryElement(frameNumber + 1, point); CPPUNIT_ASSERT_NO_THROW(sampleTrajectory.add(trajectoryElement)); CPPUNIT_ASSERT_EQUAL(sampleTrajectory.size(), (unsigned int) 101); } void testAdd39(void) { sampleTrajectory.setCheckAscFrameNumber(false); const unsigned int frameNumber = sampleTrajectory.getFrameNumber(sampleTrajectory.size() - 1); const T point = sampleTrajectory.getPoint(sampleTrajectory.size() - 1); for (unsigned int i = 0; i <= frameNumber; ++i) { const TrajectoryElement<T> trajectoryElement(i, point); CPPUNIT_ASSERT_NO_THROW(sampleTrajectory.add(trajectoryElement)); } const TrajectoryElement<T> trajectoryElement(frameNumber + 1, point); CPPUNIT_ASSERT_NO_THROW(sampleTrajectory.add(trajectoryElement)); CPPUNIT_ASSERT_EQUAL(sampleTrajectory.size(), (unsigned int) 202); } void testGetFrameNumber(void) { for (unsigned int i = 0; i < sampleTrajectory.size(); ++i) { unsigned int frameNumber = sampleTrajectory.getFrameNumber(i); CPPUNIT_ASSERT_EQUAL(frameNumber, i + 1); } } void testGetPoint(void) { for (unsigned int i = 0; i < sampleTrajectory.size(); ++i) { T point1 = sampleTrajectory.getPoint(i); T point2; initPoint(point2, int(i), int(i + 10), int(i + 20)); CPPUNIT_ASSERT_EQUAL(point1, point2); } } void testGetCheckAscFrameNumber1(void) { sampleTrajectory.setCheckAscFrameNumber(false); CPPUNIT_ASSERT_EQUAL(sampleTrajectory.getCheckAscFrameNumber(), false); } void testGetCheckAscFrameNumber2(void) { sampleTrajectory.setCheckAscFrameNumber(true); CPPUNIT_ASSERT_EQUAL(sampleTrajectory.getCheckAscFrameNumber(), true); } void testSetCheckAscFrameNumber1(void) { Trajectory<T> trajectory; CPPUNIT_ASSERT_NO_THROW(trajectory.setCheckAscFrameNumber(false)); CPPUNIT_ASSERT_NO_THROW(trajectory.setCheckAscFrameNumber(true)); } void testSetCheckAscFrameNumber2(void) { T point; initPoint(point, int(10), int(20), int(30)); Trajectory<T> trajectory; trajectory.add(0, point); CPPUNIT_ASSERT_NO_THROW(trajectory.setCheckAscFrameNumber(false)); CPPUNIT_ASSERT_NO_THROW(trajectory.setCheckAscFrameNumber(true)); } void testSetCheckAscFrameNumber3(void) { T point; initPoint(point, int(10), int(20), int(30)); Trajectory<T> trajectory; trajectory.add(1, point); CPPUNIT_ASSERT_NO_THROW(trajectory.setCheckAscFrameNumber(false)); CPPUNIT_ASSERT_NO_THROW(trajectory.setCheckAscFrameNumber(true)); } void testSetCheckAscFrameNumber4(void) { T point; initPoint(point, int(10), int(20), int(30)); Trajectory<T> trajectory; trajectory.add(1, point); trajectory.add(2, point); CPPUNIT_ASSERT_NO_THROW(trajectory.setCheckAscFrameNumber(false)); CPPUNIT_ASSERT_NO_THROW(trajectory.setCheckAscFrameNumber(true)); } void testSetCheckAscFrameNumber5(void) { T point; initPoint(point, int(10), int(20), int(30)); Trajectory<T> trajectory; trajectory.add(1, point); trajectory.add(1, point); CPPUNIT_ASSERT_NO_THROW(trajectory.setCheckAscFrameNumber(false)); CPPUNIT_ASSERT_THROW(trajectory.setCheckAscFrameNumber(true), TrajectoryFrameNumberErrorException); } void testSetCheckAscFrameNumber6(void) { T point; initPoint(point, int(10), int(20), int(30)); Trajectory<T> trajectory; trajectory.add(2, point); trajectory.add(1, point); CPPUNIT_ASSERT_NO_THROW(trajectory.setCheckAscFrameNumber(false)); CPPUNIT_ASSERT_THROW(trajectory.setCheckAscFrameNumber(true), TrajectoryFrameNumberErrorException); } void testSetCheckAscFrameNumber7(void) { T point; initPoint(point, int(10), int(20), int(30)); Trajectory<T> trajectory; trajectory.add(1, point); trajectory.add(2, point); trajectory.add(2, point); trajectory.add(3, point); CPPUNIT_ASSERT_NO_THROW(trajectory.setCheckAscFrameNumber(false)); CPPUNIT_ASSERT_THROW(trajectory.setCheckAscFrameNumber(true), TrajectoryFrameNumberErrorException); } void testSetCheckAscFrameNumber8(void) { CPPUNIT_ASSERT_NO_THROW(sampleTrajectory.setCheckAscFrameNumber(false)); CPPUNIT_ASSERT_NO_THROW(sampleTrajectory.setCheckAscFrameNumber(true)); } void testSetCheckAscFrameNumber9(void) { T point; initPoint(point, int(10), int(20), int(30)); sampleTrajectory.add(100, point); CPPUNIT_ASSERT_NO_THROW(sampleTrajectory.setCheckAscFrameNumber(false)); CPPUNIT_ASSERT_THROW(sampleTrajectory.setCheckAscFrameNumber(true), TrajectoryFrameNumberErrorException); } void testSetCheckAscFrameNumber10(void) { T point; initPoint(point, int(10), int(20), int(30)); sampleTrajectory.add(101, point); CPPUNIT_ASSERT_NO_THROW(sampleTrajectory.setCheckAscFrameNumber(false)); CPPUNIT_ASSERT_NO_THROW(sampleTrajectory.setCheckAscFrameNumber(true)); } void testSize1(void) { Trajectory<T> trajectory; CPPUNIT_ASSERT_EQUAL(trajectory.size(), (unsigned int) 0); } void testSize2(void) { Trajectory<T> trajectory; trajectory = sampleTrajectory; CPPUNIT_ASSERT_EQUAL(trajectory.size(), (unsigned int) 100); } void testSizeInc(void) { Trajectory<T> trajectory; for (unsigned int i = 0; i < sampleTrajectory.size(); ++i) { CPPUNIT_ASSERT_EQUAL(trajectory.size(), (unsigned int) i); T point = (sampleTrajectory)[i]; trajectory.add(point); } CPPUNIT_ASSERT_EQUAL(trajectory.size(), sampleTrajectory.size()); } void testSizeDec(void) { unsigned int size = sampleTrajectory.size(); for (unsigned int i = 0; i < size; ++i) { CPPUNIT_ASSERT_EQUAL(sampleTrajectory.size(), (unsigned int)(size - i)); sampleTrajectory.pop_back(); } CPPUNIT_ASSERT_EQUAL(sampleTrajectory.size(), (unsigned int) 0); } void testSizeClear(void) { sampleTrajectory.clear(); CPPUNIT_ASSERT_EQUAL(sampleTrajectory.size(), (unsigned int) 0); } void testEmptySizeInc(void) { Trajectory<T> trajectory; CPPUNIT_ASSERT_EQUAL(trajectory.empty(), true); for (unsigned int i = 0; i < sampleTrajectory.size(); ++i) { const TrajectoryElement<T> trajectoryElement = sampleTrajectory.getTrajectoryElement(i); trajectory.add(trajectoryElement); CPPUNIT_ASSERT_EQUAL(trajectory.empty(), false); } } void testEmptySizeDec(void) { Trajectory<T> trajectory; CPPUNIT_ASSERT_EQUAL(trajectory.empty(), true); trajectory = sampleTrajectory; for (unsigned int i = 0; i < sampleTrajectory.size(); ++i) { CPPUNIT_ASSERT_EQUAL(trajectory.empty(), false); trajectory.pop_back(); } CPPUNIT_ASSERT_EQUAL(trajectory.empty(), true); } void testInsert1(void) { T point; initPoint(point, int(10), int(40), int(80)); Trajectory<T> trajectory; CPPUNIT_ASSERT_THROW(trajectory.insert(1, 4, point), TrajectoryOutOfRangeErrorException); } void testInsert2(void) { T point; initPoint(point, int(10), int(40), int(80)); Trajectory<T> trajectory; CPPUNIT_ASSERT_NO_THROW(trajectory.insert(0, 4, point)); CPPUNIT_ASSERT_EQUAL(trajectory.size(), (unsigned int) 1); const TrajectoryElement<T> trajectoryElement1 = trajectory.getTrajectoryElement(0); const TrajectoryElement<T> trajectoryElement2(4, point); CPPUNIT_ASSERT_EQUAL(trajectoryElement1, trajectoryElement2); } void testInsert3(void) { T point; initPoint(point, int(10), int(40), int(80)); Trajectory<T> trajectory; CPPUNIT_ASSERT_NO_THROW(sampleTrajectory.insert(sampleTrajectory.size(), 4, point)); } void testInsert4(void) { T point; initPoint(point, int(10), int(40), int(80)); Trajectory<T> trajectory; CPPUNIT_ASSERT_THROW(sampleTrajectory.insert(sampleTrajectory.size() + 1, 4, point), TrajectoryOutOfRangeErrorException); } void testInsert5(void) { T point; initPoint(point, int(10), int(40), int(80)); CPPUNIT_ASSERT_NO_THROW(sampleTrajectory.insert(sampleTrajectory.size() - 1, 20, point)); const TrajectoryElement<T> trajectoryElement1 = sampleTrajectory.getTrajectoryElement(sampleTrajectory.size() - 1); const TrajectoryElement<T> trajectoryElement2(20, point); CPPUNIT_ASSERT (trajectoryElement1 != trajectoryElement2); } void testInsert6(void) { T point; initPoint(point, int(10), int(40), int(80)); CPPUNIT_ASSERT_NO_THROW(sampleTrajectory.insert(sampleTrajectory.size(), 20, point)); const TrajectoryElement<T> trajectoryElement1 = sampleTrajectory.getTrajectoryElement(sampleTrajectory.size()); const TrajectoryElement<T> trajectoryElement2(20, point); CPPUNIT_ASSERT(trajectoryElement1 != trajectoryElement2); } void testInsert7(void) { T point; initPoint(point, int(10), int(40), int(80)); CPPUNIT_ASSERT_NO_THROW(sampleTrajectory.insert(10, 20, point)); const TrajectoryElement<T> trajectoryElement1 = sampleTrajectory.getTrajectoryElement(10); const TrajectoryElement<T> trajectoryElement2(20, point); CPPUNIT_ASSERT_EQUAL(trajectoryElement1, trajectoryElement2); } void testInsert8(void) { sampleTrajectory.setCheckAscFrameNumber(true); T point; initPoint(point, int(10), int(40), int(80)); CPPUNIT_ASSERT_THROW(sampleTrajectory.insert(sampleTrajectory.size() + 1, 100, point), TrajectoryOutOfRangeErrorException); CPPUNIT_ASSERT_THROW(sampleTrajectory.insert(sampleTrajectory.size(), 100, point), TrajectoryFrameNumberErrorException); CPPUNIT_ASSERT_NO_THROW(sampleTrajectory.insert(sampleTrajectory.size(), 101, point)); } void testInsert9(void) { sampleTrajectory.setCheckAscFrameNumber(true); T point; initPoint(point, int(10), int(40), int(80)); for (unsigned int i = 0; i < sampleTrajectory.size() - 1; ++i) { CPPUNIT_ASSERT_THROW(sampleTrajectory.insert(i, 20, point), TrajectoryFrameNumberErrorException); CPPUNIT_ASSERT_THROW(sampleTrajectory.insert(i, 200, point), TrajectoryFrameNumberErrorException); } } void testErase1(void) { Trajectory<T> trajectory; CPPUNIT_ASSERT_THROW(trajectory.erase(0), TrajectoryOutOfRangeErrorException); } void testErase2(void) { Trajectory<T> trajectory; CPPUNIT_ASSERT_THROW(trajectory.erase(1), TrajectoryOutOfRangeErrorException); } void testErase3(void) { const T point = sampleTrajectory.getPoint(0); Trajectory<T> trajectory; trajectory.add(point); CPPUNIT_ASSERT_NO_THROW(trajectory.erase(0)); Trajectory<T> emptyTrajectory; CPPUNIT_ASSERT_EQUAL(trajectory, emptyTrajectory); } void testErase4(void) { const T point = sampleTrajectory.getPoint(0); Trajectory<T> trajectory; trajectory.add(point); CPPUNIT_ASSERT_THROW(trajectory.erase(1), TrajectoryOutOfRangeErrorException); } void testErase5(void) { CPPUNIT_ASSERT_NO_THROW(sampleTrajectory.erase(0)); CPPUNIT_ASSERT_EQUAL(sampleTrajectory.size(), (unsigned int) 99); } void testErase6(void) { CPPUNIT_ASSERT_NO_THROW(sampleTrajectory.erase(1)); CPPUNIT_ASSERT_EQUAL(sampleTrajectory.size(), (unsigned int) 99); } void testErase7(void) { CPPUNIT_ASSERT_NO_THROW(sampleTrajectory.erase(0)); CPPUNIT_ASSERT_NO_THROW(sampleTrajectory.erase(0)); CPPUNIT_ASSERT_EQUAL(sampleTrajectory.size(), (unsigned int) 98); } void testErase8(void) { CPPUNIT_ASSERT_NO_THROW(sampleTrajectory.erase(sampleTrajectory.size() - 1)); CPPUNIT_ASSERT_NO_THROW(sampleTrajectory.erase(sampleTrajectory.size() - 1)); CPPUNIT_ASSERT_EQUAL(sampleTrajectory.size(), (unsigned int) 98); } void testErase9(void) { CPPUNIT_ASSERT_THROW(sampleTrajectory.erase(sampleTrajectory.size()), TrajectoryOutOfRangeErrorException); } void testErase10(void) { CPPUNIT_ASSERT_THROW(sampleTrajectory.erase(sampleTrajectory.size() + 1), TrajectoryOutOfRangeErrorException); } void testErase11(void) { for (unsigned int i = 0; i < 100; ++i) { CPPUNIT_ASSERT_NO_THROW(sampleTrajectory.erase(0)); CPPUNIT_ASSERT_EQUAL(sampleTrajectory.size(), 100 - i - 1); } CPPUNIT_ASSERT_EQUAL(sampleTrajectory.size(), (unsigned int) 0); CPPUNIT_ASSERT_THROW(sampleTrajectory.erase(0), TrajectoryOutOfRangeErrorException); } void testErase12(void) { for (unsigned int i = 0; i < 100; ++i) { CPPUNIT_ASSERT_NO_THROW(sampleTrajectory.erase(sampleTrajectory.size() - 1)); } CPPUNIT_ASSERT_EQUAL(sampleTrajectory.size(), (unsigned int) 0); CPPUNIT_ASSERT_THROW(sampleTrajectory.erase(0), TrajectoryOutOfRangeErrorException); } void testErase13(void) { T point; initPoint(point, int(10), int(40), int(80)); Trajectory<T> trajectory = sampleTrajectory; CPPUNIT_ASSERT_EQUAL(trajectory, sampleTrajectory); trajectory.insert(20, 20, point); CPPUNIT_ASSERT(trajectory != sampleTrajectory); trajectory.erase(20); CPPUNIT_ASSERT_EQUAL(trajectory, sampleTrajectory); } void testErase14(void) { T point; initPoint(point, int(10), int(40), int(80)); Trajectory<T> trajectory = sampleTrajectory; CPPUNIT_ASSERT_EQUAL(trajectory, sampleTrajectory); trajectory.insert(20, 20, point); CPPUNIT_ASSERT(trajectory != sampleTrajectory); trajectory.erase(10); CPPUNIT_ASSERT(trajectory != sampleTrajectory); } void testPop_back1(void) { Trajectory<T> trajectory; CPPUNIT_ASSERT_THROW(trajectory.pop_back(), TrajectoryLengthErrorException); } void testPop_back2(void) { CPPUNIT_ASSERT_EQUAL(sampleTrajectory.size(), (unsigned int) 100); for (int i = 100; i > 0; --i) { CPPUNIT_ASSERT_NO_THROW(sampleTrajectory.pop_back()); CPPUNIT_ASSERT_EQUAL(sampleTrajectory.size(), (unsigned int)(i - 1)); } CPPUNIT_ASSERT_THROW(sampleTrajectory.pop_back(), TrajectoryLengthErrorException); } void testPop_back3(void) { T point; initPoint(point, int(10), int(40), int(80)); Trajectory<T> trajectory = sampleTrajectory; CPPUNIT_ASSERT_EQUAL(trajectory, sampleTrajectory); trajectory.add(point); CPPUNIT_ASSERT(trajectory != sampleTrajectory); trajectory.pop_back(); CPPUNIT_ASSERT_EQUAL(trajectory, sampleTrajectory); } void testPop_back4(void) { T point; initPoint(point, int(10), int(40), int(80)); Trajectory<T> trajectory = sampleTrajectory; CPPUNIT_ASSERT_EQUAL(trajectory, sampleTrajectory); trajectory.insert(trajectory.size(), 20, point); CPPUNIT_ASSERT(trajectory != sampleTrajectory); trajectory.pop_back(); CPPUNIT_ASSERT_EQUAL(trajectory, sampleTrajectory); } void testOperatorGet(void) { for (unsigned int i = 0; i < sampleTrajectory.size(); ++i) { T point1 = sampleTrajectory[i]; T point2; initPoint(point2, int(i), int(i + 10), int(i + 20)); CPPUNIT_ASSERT_EQUAL(point1, point2); } } void testAt1(void) { Trajectory<T> trajectory; CPPUNIT_ASSERT_THROW(trajectory.at(0), TrajectoryOutOfRangeErrorException); CPPUNIT_ASSERT_THROW(trajectory.at(1), TrajectoryOutOfRangeErrorException); CPPUNIT_ASSERT_THROW(trajectory.at(2), TrajectoryOutOfRangeErrorException); } void testAt2(void) { const T point = sampleTrajectory.getPoint(0); Trajectory<T> trajectory; trajectory.add(point); CPPUNIT_ASSERT_NO_THROW(trajectory.at(0)); CPPUNIT_ASSERT_THROW(trajectory.at(1), TrajectoryOutOfRangeErrorException); CPPUNIT_ASSERT_THROW(trajectory.at(2), TrajectoryOutOfRangeErrorException); } void testAt3(void) { const T point = sampleTrajectory.getPoint(0); Trajectory<T> trajectory; trajectory.add(point); trajectory.add(point); CPPUNIT_ASSERT_NO_THROW(trajectory.at(0)); CPPUNIT_ASSERT_NO_THROW(trajectory.at(1)); CPPUNIT_ASSERT_THROW(trajectory.at(2), TrajectoryOutOfRangeErrorException); } void testAt4(void) { for (unsigned int i = 0; i < sampleTrajectory.size(); ++i) { T point1; CPPUNIT_ASSERT_NO_THROW(point1 = sampleTrajectory.at(i)); T point2; initPoint(point2, int(i), int(i + 10), int(i + 20)); CPPUNIT_ASSERT_EQUAL(point1, point2); } } void testAt5(void) { CPPUNIT_ASSERT_NO_THROW(sampleTrajectory.at(sampleTrajectory.size() - 1)); } void testAt6(void) { CPPUNIT_ASSERT_THROW(sampleTrajectory.at(sampleTrajectory.size()), TrajectoryOutOfRangeErrorException); } void testAt7(void) { CPPUNIT_ASSERT_THROW(sampleTrajectory.at(sampleTrajectory.size() + 1), TrajectoryOutOfRangeErrorException); } void testShift1(void) { const int shiftX = 8; const int shiftY = 4; const int shiftZ = 2; T shiftPoint; initPoint(shiftPoint, shiftX, shiftY, shiftZ); sampleTrajectory.shift(shiftPoint); for (unsigned int i = 0; i < sampleTrajectory.size(); ++i) { const T p1 = sampleTrajectory.getPoint(i); T p2; initPoint(p2, int(i) + shiftX, int(i + 10) + shiftY, int(i + 20) + shiftZ); CPPUNIT_ASSERT_EQUAL(p1, p2); } } void testShift2(void) { const int shiftX1 = 1; const int shiftX2 = 10; const int shiftY1 = 2; const int shiftY2 = 20; const int shiftZ1 = 3; const int shiftZ2 = 30; T shiftPoint1; T shiftPoint2; T shiftPoint3; initPoint(shiftPoint1, shiftX1, shiftY1, shiftZ1); initPoint(shiftPoint2, shiftX2, shiftY2, shiftZ2); initPoint(shiftPoint3, shiftX1 + shiftX2, shiftY1 + shiftY2, shiftZ1 + shiftZ2); Trajectory<T> trajectory = sampleTrajectory; trajectory.shift(shiftPoint1); trajectory.shift(shiftPoint2); sampleTrajectory.shift(shiftPoint3); CPPUNIT_ASSERT_EQUAL(trajectory, sampleTrajectory); } void testOperatorEq1(void) { CPPUNIT_ASSERT(sampleTrajectory == sampleTrajectory); } void testOperatorEq2(void) { Trajectory<T> trajectory = sampleTrajectory; CPPUNIT_ASSERT(trajectory == sampleTrajectory); } void testOperatorEq3(void) { Trajectory<T> trajectory = sampleTrajectory; trajectory.pop_back(); CPPUNIT_ASSERT(trajectory != sampleTrajectory); } void testOperatorEq4(void) { Trajectory<T> trajectory = sampleTrajectory; trajectory.setId(2); CPPUNIT_ASSERT(trajectory != sampleTrajectory); } void testOperatorEq5(void) { Trajectory<T> trajectory = sampleTrajectory; trajectory.setCheckAscFrameNumber(true); CPPUNIT_ASSERT(trajectory != sampleTrajectory); } void testOperatorEq6(void) { Trajectory<T> trajectory = sampleTrajectory; trajectory.pop_back(); const TrajectoryElement<T> trajectoryElement = sampleTrajectory.getTrajectoryElement(sampleTrajectory.size() - 1); trajectory.add(trajectoryElement); CPPUNIT_ASSERT(trajectory == sampleTrajectory); } void testOperatorEq7(void) { Trajectory<T> trajectory = sampleTrajectory; trajectory.pop_back(); TrajectoryElement<T> trajectoryElement = sampleTrajectory.getTrajectoryElement(sampleTrajectory.size() - 1); trajectoryElement.setFrameNumber(2); trajectory.add(trajectoryElement); CPPUNIT_ASSERT(trajectory != sampleTrajectory); } void testOperatorEq8(void) { const Trajectory<T> trajectory = sampleTrajectory; T point; initPoint(point, int(99), int(99 + 10), int(99 + 20)); sampleTrajectory.pop_back(); sampleTrajectory.add(100, point); CPPUNIT_ASSERT(sampleTrajectory == trajectory); initPoint(point, int(99 + 1), int(99 + 10), int(99 + 20)); sampleTrajectory.pop_back(); sampleTrajectory.add(100, point); CPPUNIT_ASSERT(sampleTrajectory != trajectory); initPoint(point, int(99), int(99 + 10 + 1), int(99 + 20)); sampleTrajectory.pop_back(); sampleTrajectory.add(100, point); CPPUNIT_ASSERT(sampleTrajectory != trajectory); initPoint(point, int(99), int(99 + 10), int(99 + 20 + 1)); sampleTrajectory.pop_back(); sampleTrajectory.add(100, point); if (dim(point) == 2) { CPPUNIT_ASSERT(sampleTrajectory == trajectory); } else if (dim(point) == 3) { CPPUNIT_ASSERT(sampleTrajectory != trajectory); } } void testOperatorAdd1(void) { Trajectory<T> trajectory; trajectory.setId(1); for (unsigned int i = 0; i < sampleTrajectory.size(); ++i) { const unsigned int frameNumber = sampleTrajectory.getFrameNumber(i); const T point = sampleTrajectory.getPoint(i); trajectory += point; const TrajectoryElement<T> trajectoryElement1(frameNumber, point); const TrajectoryElement<T> trajectoryElement2 = trajectory.getTrajectoryElement(i); CPPUNIT_ASSERT_EQUAL(trajectoryElement1, trajectoryElement2); } CPPUNIT_ASSERT_EQUAL(trajectory, sampleTrajectory); } void testOperatorAdd2(void) { Trajectory<T> trajectory; trajectory.setId(1); for (unsigned int i = 0; i < sampleTrajectory.size(); ++i) { const unsigned int frameNumber = sampleTrajectory.getFrameNumber(i); const T point = sampleTrajectory.getPoint(i); const TrajectoryElement<T> trajectoryElement1(frameNumber, point); trajectory += trajectoryElement1; const TrajectoryElement<T> trajectoryElement2 = trajectory.getTrajectoryElement(i); CPPUNIT_ASSERT_EQUAL(trajectoryElement1, trajectoryElement2); } CPPUNIT_ASSERT_EQUAL(trajectory, sampleTrajectory); } void testOperatorIn1(void) { Trajectory<T> trajectory; stringstream ss; ss << trajectory; CPPUNIT_ASSERT_EQUAL(ss.str(), string("0")); } void testOperatorIn2(void) { T point; initPoint(point, int(10), int(20), int(30)); Trajectory<T> trajectory; trajectory.setId(2); trajectory.add(4, point); string s("2 4 10 20"); if (dim(point) == 3) { s += string(" 30"); } stringstream ss; ss << trajectory; CPPUNIT_ASSERT_EQUAL(ss.str(), s); } void testOperatorIn3(void) { sampleTrajectory.setId(20); string s("20"); for (unsigned int i = 0; i < sampleTrajectory.size(); ++i) { stringstream ss; ss << string(" ") << i + 1 << string(" ") << i << string(" ") << i + 10; if (dim(sampleTrajectory.getPoint(0)) == 3) { ss << string(" ") << i + 20; } s += ss.str(); } stringstream ss; ss << sampleTrajectory; CPPUNIT_ASSERT_EQUAL(ss.str(), s); } void testOperatorOut1(void) { Trajectory<T> trajectory1; stringstream ss; ss << trajectory1; Trajectory<T> trajectory2; istringstream is(ss.str()); is >> trajectory2; CPPUNIT_ASSERT_EQUAL(trajectory1, trajectory2); } void testOperatorOut2(void) { T point; initPoint(point, int(10), int(20), int(30)); Trajectory<T> trajectory1; trajectory1.setId(2); trajectory1.add(4, point); string s("2 4 10 20"); if (dim(point) == 3) { s += " 30"; } stringstream ss; ss << trajectory1; Trajectory<T> trajectory2; istringstream is(ss.str()); is >> trajectory2; CPPUNIT_ASSERT_EQUAL(trajectory1, trajectory2); } void testOperatorOut3(void) { sampleTrajectory.setId(20); string s("20"); for (unsigned int i = 0; i < sampleTrajectory.size(); ++i) { stringstream ss; ss << " " << i + 1 << " " << i << " " << i + 10; if (dim(sampleTrajectory.getPoint(0)) == 3) { ss << " " << i + 20; } s += ss.str(); } stringstream ss; ss << sampleTrajectory; Trajectory<T> trajectory; istringstream is(ss.str()); is >> trajectory; CPPUNIT_ASSERT_EQUAL(trajectory, sampleTrajectory); } void testMin1(void) { T point1; initPoint(point1, 0, 10, 20); T point2; CPPUNIT_ASSERT_NO_THROW(point2 = min(sampleTrajectory)); CPPUNIT_ASSERT_EQUAL(point1, point2); } void testMin2(void) { Trajectory<T> trajectory; T point1; for (unsigned int i = 0; i < 100; ++i) { initPoint(point1, i + 4, 104 - i, i % 24 + 1); trajectory += point1; } initPoint(point1, 4, 5, 1); T point2; CPPUNIT_ASSERT_NO_THROW(point2 = min(trajectory)); CPPUNIT_ASSERT_EQUAL(point1, point2); } void testMin3(void) { Trajectory<T> trajectory; CPPUNIT_ASSERT_THROW(min(trajectory), TrajectoryLengthErrorException); } void testMin4(void) { Trajectory<T> trajectory; T point1, point2; initPoint(point1, 8, 4, 2); trajectory.add(point1); CPPUNIT_ASSERT_NO_THROW(point2 = min(trajectory)); CPPUNIT_ASSERT_EQUAL(point1, point2); } void testMax1(void) { T point1; initPoint(point1, int(99), int(109), int(119)); T point2; CPPUNIT_ASSERT_NO_THROW(point2 = max(sampleTrajectory)); CPPUNIT_ASSERT_EQUAL(point1, point2); } void testMax2(void) { Trajectory<T> trajectory; T point1; for (unsigned int i = 0; i < 100; ++i) { initPoint(point1, int(i + 4), int(104 - i), int(i % 24 + 1)); trajectory += point1; } initPoint(point1, 103, 104, 24); T point2; CPPUNIT_ASSERT_NO_THROW(point2 = max(trajectory)); CPPUNIT_ASSERT_EQUAL(point1, point2); } void testMax3(void) { Trajectory<T> trajectory; CPPUNIT_ASSERT_THROW(max(trajectory), TrajectoryLengthErrorException); } void testMax4(void) { Trajectory<T> trajectory; T point1, point2; initPoint(point1, 8, 4, 2); trajectory.add(point1); CPPUNIT_ASSERT_NO_THROW(point2 = max(trajectory)); CPPUNIT_ASSERT_EQUAL(point1, point2); } private: Trajectory<T> sampleTrajectory; }; #endif /* TRAJECTORYTEST_H_ */