Mercurial > hg > nsaunier > traffic-intelligence
comparison 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 |
comparison
equal
deleted
inserted
replaced
| 1158:7eb972942f22 | 1159:e1e7acef8eab |
|---|---|
| 1 #include "TrajectoryTest.h" | |
| 2 | |
| 3 void TrajectoryTest::setUp(void) | |
| 4 { | |
| 5 sampleTrajectory = new Trajectory<CvPoint> (); | |
| 6 | |
| 7 const unsigned n = 100; | |
| 8 for (unsigned i = 0; i < n; ++i) | |
| 9 { | |
| 10 CvPoint point = cvPoint(int(i), int(i + 100)); | |
| 11 sampleTrajectory->add(i + 1, point); | |
| 12 } | |
| 13 } | |
| 14 | |
| 15 void TrajectoryTest::tearDown(void) | |
| 16 { | |
| 17 delete sampleTrajectory; | |
| 18 sampleTrajectory = NULL; | |
| 19 } | |
| 20 | |
| 21 void TrajectoryTest::testTrajectory(void) | |
| 22 { | |
| 23 Trajectory<CvPoint> trajectory(*sampleTrajectory); | |
| 24 CPPUNIT_ASSERT(equal(trajectory, *sampleTrajectory)); | |
| 25 } | |
| 26 | |
| 27 void TrajectoryTest::testAdd1(void) | |
| 28 { | |
| 29 Trajectory<CvPoint> trajectory; | |
| 30 | |
| 31 for (unsigned i = 0; i < sampleTrajectory->size(); ++i) | |
| 32 { | |
| 33 CvPoint p1 = sampleTrajectory->getPosition(i); | |
| 34 trajectory.add(p1); | |
| 35 | |
| 36 const CvPoint p2 = trajectory.getPosition(i); | |
| 37 CPPUNIT_ASSERT (equal(p1,p2)); | |
| 38 | |
| 39 const unsigned frameNumber = trajectory.getFrameNumber(i); | |
| 40 CPPUNIT_ASSERT_EQUAL(frameNumber, i + 1); | |
| 41 } | |
| 42 | |
| 43 CPPUNIT_ASSERT(equal(trajectory, *sampleTrajectory)); | |
| 44 } | |
| 45 | |
| 46 void TrajectoryTest::testAdd2(void) | |
| 47 { | |
| 48 Trajectory<CvPoint> trajectory; | |
| 49 | |
| 50 for (unsigned i = 0; i < sampleTrajectory->size(); ++i) | |
| 51 { | |
| 52 CvPoint p1 = sampleTrajectory->getPosition(i); | |
| 53 trajectory.add(i + 1, p1); | |
| 54 | |
| 55 const CvPoint p2 = trajectory.getPosition(i); | |
| 56 CPPUNIT_ASSERT (equal(p1,p2)); | |
| 57 | |
| 58 const unsigned frameNumber = trajectory.getFrameNumber(i); | |
| 59 CPPUNIT_ASSERT_EQUAL(frameNumber, i + 1); | |
| 60 } | |
| 61 | |
| 62 CPPUNIT_ASSERT(equal(trajectory, *sampleTrajectory)); | |
| 63 } | |
| 64 | |
| 65 void TrajectoryTest::testGet(void) | |
| 66 { | |
| 67 for (unsigned i = 0; i < sampleTrajectory->size(); ++i) | |
| 68 { | |
| 69 CvPoint p1 = sampleTrajectory->getPosition(i); | |
| 70 CvPoint p2 = cvPoint(int(i), int(i + 100)); | |
| 71 CPPUNIT_ASSERT (equal(p1,p2)); | |
| 72 } | |
| 73 } | |
| 74 | |
| 75 void TrajectoryTest::testGetFrameNumber(void) | |
| 76 { | |
| 77 for (unsigned i = 0; i < sampleTrajectory->size(); ++i) | |
| 78 { | |
| 79 unsigned frameNumber = sampleTrajectory->getFrameNumber(i); | |
| 80 CPPUNIT_ASSERT_EQUAL(frameNumber, i + 1); | |
| 81 } | |
| 82 } | |
| 83 | |
| 84 void TrajectoryTest::testGetTrajectoryElement(void) | |
| 85 { | |
| 86 for (unsigned i = 0; i < sampleTrajectory->size(); ++i) | |
| 87 { | |
| 88 TrajectoryElement<CvPoint> e1 = sampleTrajectory->getTrajectoryElement(i); | |
| 89 | |
| 90 CvPoint p1 = e1.getPosition(); | |
| 91 CvPoint p2 = cvPoint(int(i), int(i + 100)); | |
| 92 CPPUNIT_ASSERT (equal(p1,p2)); | |
| 93 | |
| 94 unsigned frameNumber = e1.getFrameNumber(); | |
| 95 CPPUNIT_ASSERT_EQUAL(frameNumber, i + 1); | |
| 96 } | |
| 97 } | |
| 98 | |
| 99 void TrajectoryTest::testSetAndGetId(void) | |
| 100 { | |
| 101 CPPUNIT_ASSERT_EQUAL(sampleTrajectory->getId(), unsigned(0)); | |
| 102 | |
| 103 unsigned newTrajectoryId = 10; | |
| 104 sampleTrajectory->setId(newTrajectoryId); | |
| 105 CPPUNIT_ASSERT_EQUAL(sampleTrajectory->getId(), newTrajectoryId); | |
| 106 } | |
| 107 | |
| 108 void TrajectoryTest::testSizeInc(void) | |
| 109 { | |
| 110 Trajectory<CvPoint> *t = new Trajectory<CvPoint> (); | |
| 111 | |
| 112 for (unsigned i = 0; i < sampleTrajectory->size(); ++i) | |
| 113 { | |
| 114 CPPUNIT_ASSERT_EQUAL(t->size(), (unsigned int)i); | |
| 115 | |
| 116 CvPoint point = (*sampleTrajectory)[i]; | |
| 117 t->add(point); | |
| 118 } | |
| 119 | |
| 120 CPPUNIT_ASSERT_EQUAL(t->size(), sampleTrajectory->size()); | |
| 121 } | |
| 122 | |
| 123 void TrajectoryTest::testSizeDec(void) | |
| 124 { | |
| 125 unsigned size = sampleTrajectory->size(); | |
| 126 | |
| 127 for (unsigned i = 0; i < size; ++i) | |
| 128 { | |
| 129 CPPUNIT_ASSERT_EQUAL(sampleTrajectory->size(), (unsigned int)(size - i)); | |
| 130 | |
| 131 sampleTrajectory->pop_back(); | |
| 132 } | |
| 133 | |
| 134 CPPUNIT_ASSERT_EQUAL(sampleTrajectory->size(), (unsigned int)0); | |
| 135 } | |
| 136 | |
| 137 void TrajectoryTest::testSizeConstSize(void) | |
| 138 { | |
| 139 CPPUNIT_ASSERT_EQUAL(sampleTrajectory->size(), (unsigned int)100); | |
| 140 } | |
| 141 | |
| 142 void TrajectoryTest::testSizeClear(void) | |
| 143 { | |
| 144 sampleTrajectory->clear(); | |
| 145 CPPUNIT_ASSERT_EQUAL(sampleTrajectory->size(), (unsigned int)0); | |
| 146 } | |
| 147 | |
| 148 void TrajectoryTest::testShift(void) | |
| 149 { | |
| 150 const int shiftX = 1000; | |
| 151 const int shiftY = 2000; | |
| 152 | |
| 153 const CvPoint shiftPoint = cvPoint(shiftX, shiftY); | |
| 154 sampleTrajectory->shift(shiftPoint); | |
| 155 | |
| 156 for (unsigned i = 0; i < sampleTrajectory->size(); ++i) | |
| 157 { | |
| 158 CvPoint p1 = sampleTrajectory->getPosition(i); | |
| 159 CvPoint p2 = cvPoint(int(i) + shiftX, int(i + 100) + shiftY); | |
| 160 CPPUNIT_ASSERT (equal(p1,p2)); | |
| 161 } | |
| 162 } | |
| 163 | |
| 164 bool TrajectoryTest::equal(const Trajectory<CvPoint>& t1, const Trajectory<CvPoint>& t2) const | |
| 165 { | |
| 166 if (t1.getId() != t2.getId()) | |
| 167 { | |
| 168 CPPUNIT_ASSERT (t1.getId() == t2.getId()); | |
| 169 return false; | |
| 170 } | |
| 171 | |
| 172 if (t1.size() != t2.size()) | |
| 173 { | |
| 174 return false; | |
| 175 } | |
| 176 | |
| 177 for (unsigned i = 0; i < t1.size(); ++i) | |
| 178 { | |
| 179 const TrajectoryElement<CvPoint> e1 = t1.getTrajectoryElement(i); | |
| 180 const TrajectoryElement<CvPoint> e2 = t2.getTrajectoryElement(i); | |
| 181 if (e1 != e2) | |
| 182 { | |
| 183 return false; | |
| 184 } | |
| 185 } | |
| 186 | |
| 187 return true; | |
| 188 } | |
| 189 | |
| 190 bool TrajectoryTest::equal(const CvPoint& p1, const CvPoint& p2) const | |
| 191 { | |
| 192 if (p1.x != p2.x) | |
| 193 { | |
| 194 return false; | |
| 195 } | |
| 196 | |
| 197 if (p1.y != p2.y) | |
| 198 { | |
| 199 return false; | |
| 200 } | |
| 201 | |
| 202 return true; | |
| 203 } |
