Mercurial Hosting > 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 } |