Mercurial Hosting > traffic-intelligence
view trajectorymanagement/test/TrajectoryTest.cpp @ 1192:606817bc31e8
bug correction
author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
---|---|
date | Wed, 29 Jun 2022 23:02:47 +0200 |
parents | e1e7acef8eab |
children |
line wrap: on
line source
#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; }