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 }