Mercurial Hosting > traffic-intelligence
diff trajectorymanagement/test/TrajectoryTest.cpp @ 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/TrajectoryTest.cpp Mon Feb 22 22:09:35 2021 -0500 @@ -0,0 +1,203 @@ +#include "TrajectoryTest.h" + +void TrajectoryTest::setUp(void) +{ + sampleTrajectory = new Trajectory<CvPoint> (); + + const unsigned n = 100; + for (unsigned i = 0; i < n; ++i) + { + CvPoint point = cvPoint(int(i), int(i + 100)); + sampleTrajectory->add(i + 1, point); + } +} + +void TrajectoryTest::tearDown(void) +{ + delete sampleTrajectory; + sampleTrajectory = NULL; +} + +void TrajectoryTest::testTrajectory(void) +{ + Trajectory<CvPoint> trajectory(*sampleTrajectory); + CPPUNIT_ASSERT(equal(trajectory, *sampleTrajectory)); +} + +void TrajectoryTest::testAdd1(void) +{ + Trajectory<CvPoint> trajectory; + + for (unsigned i = 0; i < sampleTrajectory->size(); ++i) + { + CvPoint p1 = sampleTrajectory->getPosition(i); + trajectory.add(p1); + + const CvPoint p2 = trajectory.getPosition(i); + CPPUNIT_ASSERT (equal(p1,p2)); + + const unsigned frameNumber = trajectory.getFrameNumber(i); + CPPUNIT_ASSERT_EQUAL(frameNumber, i + 1); + } + + CPPUNIT_ASSERT(equal(trajectory, *sampleTrajectory)); +} + +void TrajectoryTest::testAdd2(void) +{ + Trajectory<CvPoint> trajectory; + + for (unsigned i = 0; i < sampleTrajectory->size(); ++i) + { + CvPoint p1 = sampleTrajectory->getPosition(i); + trajectory.add(i + 1, p1); + + const CvPoint p2 = trajectory.getPosition(i); + CPPUNIT_ASSERT (equal(p1,p2)); + + const unsigned frameNumber = trajectory.getFrameNumber(i); + CPPUNIT_ASSERT_EQUAL(frameNumber, i + 1); + } + + CPPUNIT_ASSERT(equal(trajectory, *sampleTrajectory)); +} + +void TrajectoryTest::testGet(void) +{ + for (unsigned i = 0; i < sampleTrajectory->size(); ++i) + { + CvPoint p1 = sampleTrajectory->getPosition(i); + CvPoint p2 = cvPoint(int(i), int(i + 100)); + CPPUNIT_ASSERT (equal(p1,p2)); + } +} + +void TrajectoryTest::testGetFrameNumber(void) +{ + for (unsigned i = 0; i < sampleTrajectory->size(); ++i) + { + unsigned frameNumber = sampleTrajectory->getFrameNumber(i); + CPPUNIT_ASSERT_EQUAL(frameNumber, i + 1); + } +} + +void TrajectoryTest::testGetTrajectoryElement(void) +{ + for (unsigned i = 0; i < sampleTrajectory->size(); ++i) + { + TrajectoryElement<CvPoint> e1 = sampleTrajectory->getTrajectoryElement(i); + + CvPoint p1 = e1.getPosition(); + CvPoint p2 = cvPoint(int(i), int(i + 100)); + CPPUNIT_ASSERT (equal(p1,p2)); + + unsigned frameNumber = e1.getFrameNumber(); + CPPUNIT_ASSERT_EQUAL(frameNumber, i + 1); + } +} + +void TrajectoryTest::testSetAndGetId(void) +{ + CPPUNIT_ASSERT_EQUAL(sampleTrajectory->getId(), unsigned(0)); + + unsigned newTrajectoryId = 10; + sampleTrajectory->setId(newTrajectoryId); + CPPUNIT_ASSERT_EQUAL(sampleTrajectory->getId(), newTrajectoryId); +} + +void TrajectoryTest::testSizeInc(void) +{ + Trajectory<CvPoint> *t = new Trajectory<CvPoint> (); + + for (unsigned i = 0; i < sampleTrajectory->size(); ++i) + { + CPPUNIT_ASSERT_EQUAL(t->size(), (unsigned int)i); + + CvPoint point = (*sampleTrajectory)[i]; + t->add(point); + } + + CPPUNIT_ASSERT_EQUAL(t->size(), sampleTrajectory->size()); +} + +void TrajectoryTest::testSizeDec(void) +{ + unsigned size = sampleTrajectory->size(); + + for (unsigned 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 TrajectoryTest::testSizeConstSize(void) +{ + CPPUNIT_ASSERT_EQUAL(sampleTrajectory->size(), (unsigned int)100); +} + +void TrajectoryTest::testSizeClear(void) +{ + sampleTrajectory->clear(); + CPPUNIT_ASSERT_EQUAL(sampleTrajectory->size(), (unsigned int)0); +} + +void TrajectoryTest::testShift(void) +{ + const int shiftX = 1000; + const int shiftY = 2000; + + const CvPoint shiftPoint = cvPoint(shiftX, shiftY); + sampleTrajectory->shift(shiftPoint); + + for (unsigned i = 0; i < sampleTrajectory->size(); ++i) + { + CvPoint p1 = sampleTrajectory->getPosition(i); + CvPoint p2 = cvPoint(int(i) + shiftX, int(i + 100) + shiftY); + CPPUNIT_ASSERT (equal(p1,p2)); + } +} + +bool TrajectoryTest::equal(const Trajectory<CvPoint>& t1, const Trajectory<CvPoint>& t2) const +{ + if (t1.getId() != t2.getId()) + { + CPPUNIT_ASSERT (t1.getId() == t2.getId()); + return false; + } + + if (t1.size() != t2.size()) + { + return false; + } + + for (unsigned i = 0; i < t1.size(); ++i) + { + const TrajectoryElement<CvPoint> e1 = t1.getTrajectoryElement(i); + const TrajectoryElement<CvPoint> e2 = t2.getTrajectoryElement(i); + if (e1 != e2) + { + return false; + } + } + + return true; +} + +bool TrajectoryTest::equal(const CvPoint& p1, const CvPoint& p2) const +{ + if (p1.x != p2.x) + { + return false; + } + + if (p1.y != p2.y) + { + return false; + } + + return true; +}