1 //==============================================================================
2 //
3 // This file is part of GPSTk, the GPS Toolkit.
4 //
5 // The GPSTk is free software; you can redistribute it and/or modify
6 // it under the terms of the GNU Lesser General Public License as published
7 // by the Free Software Foundation; either version 3.0 of the License, or
8 // any later version.
9 //
10 // The GPSTk is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 // GNU Lesser General Public License for more details.
14 //
15 // You should have received a copy of the GNU Lesser General Public
16 // License along with GPSTk; if not, write to the Free Software Foundation,
17 // Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
18 //
19 // This software was developed by Applied Research Laboratories at the
20 // University of Texas at Austin.
21 // Copyright 2004-2020, The Board of Regents of The University of Texas System
22 //
23 //==============================================================================
24
25 //==============================================================================
26 //
27 // This software was developed by Applied Research Laboratories at the
28 // University of Texas at Austin, under contract to an agency or agencies
29 // within the U.S. Department of Defense. The U.S. Government retains all
30 // rights to use, duplicate, distribute, disclose, or release this software.
31 //
32 // Pursuant to DoD Directive 523024
33 //
34 // DISTRIBUTION STATEMENT A: This software has been approved for public
35 // release, distribution is unlimited.
36 //
37 //==============================================================================
38
39
40 #include "ReferenceFrame.hpp"
41 #include "TestUtil.hpp"
42
43 using namespace std;
44 using namespace gpstk;
45
46 class ReferenceFrame_T
47 {
48 public:
asStringTest()49 unsigned asStringTest()
50 {
51 TUDEF("ReferenceFrame", "asString");
52
53 string pz("PZ90");
54 string wgs("WGS84");
55 string unk("Unknown");
56
57 ReferenceFrame rf1(ReferenceFrame::PZ90);
58 TUASSERTE(std::string, pz, gpstk::StringUtils::asString(rf1));
59
60 ReferenceFrame rf2(ReferenceFrame::WGS84);
61 TUASSERTE(std::string, wgs, gpstk::StringUtils::asString(rf2));
62
63 ReferenceFrame rf3(ReferenceFrame::Unknown);
64 TUASSERTE(std::string, unk, gpstk::StringUtils::asString(rf3));
65
66 TURETURN();
67 }
68
69
equalityTest()70 unsigned equalityTest()
71 {
72 TUDEF("ReferenceFrame", "operator==");
73
74 ReferenceFrame rf1(ReferenceFrame::PZ90);
75 ReferenceFrame rf2(ReferenceFrame::WGS84);
76 ReferenceFrame rf3(ReferenceFrame::Unknown);
77 ReferenceFrame rf4 = gpstk::StringUtils::asReferenceFrame("PZ90");
78 ReferenceFrame rf5 = gpstk::StringUtils::asReferenceFrame("WGS84");
79 ReferenceFrame rf6 = gpstk::StringUtils::asReferenceFrame("Junk");
80
81 //PZ90 Enum with...
82 TUASSERT( rf1 == rf1);
83 TUASSERT(!(rf1 == rf2) );
84 TUASSERT(!(rf1 == rf3) );
85 TUASSERT( rf1 == rf4);
86 TUASSERT(!(rf1 == rf5) );
87 TUASSERT(!(rf1 == rf6) );
88
89 //WGS84 Enum with...
90 TUASSERT(!(rf2 == rf1) );
91 TUASSERT( rf2 == rf2);
92 TUASSERT(!(rf2 == rf3) );
93 TUASSERT(!(rf2 == rf4) );
94 TUASSERT( rf2 == rf5);
95 TUASSERT(!(rf2 == rf6));
96
97 //Unknown Enum with... (Should fail every one)
98 TUASSERT(!(rf3 == rf1) );
99 TUASSERT(!(rf3 == rf2) );
100 TUASSERT( (rf3 == rf3) );
101 TUASSERT(!(rf3 == rf4) );
102 TUASSERT(!(rf3 == rf5) );
103 TUASSERT( (rf3 == rf6) );
104
105 TURETURN();
106 }
107
108
inequalityTest()109 unsigned inequalityTest()
110 {
111 TUDEF("ReferenceFrame", "operator!=");
112
113 ReferenceFrame rf1(ReferenceFrame::PZ90);
114 ReferenceFrame rf2(ReferenceFrame::WGS84);
115 ReferenceFrame rf3(ReferenceFrame::Unknown);
116 ReferenceFrame rf4 = gpstk::StringUtils::asReferenceFrame("PZ90");
117 ReferenceFrame rf5 = gpstk::StringUtils::asReferenceFrame("WGS84");
118 ReferenceFrame rf6 = gpstk::StringUtils::asReferenceFrame("Junk");
119
120 //PZ90 Enum with...
121 TUASSERT( !(rf1 != rf1) );
122 TUASSERT( (rf1 != rf2) );
123 TUASSERT( (rf1 != rf3) );
124 TUASSERT( !(rf1 != rf4) );
125 TUASSERT( (rf1 != rf5) );
126 TUASSERT( (rf1 != rf6) );
127
128 //WGS84 Enum with...
129 TUASSERT( (rf2 != rf1) );
130 TUASSERT( !(rf2 != rf2) );
131 TUASSERT( (rf2 != rf3) );
132 TUASSERT( (rf2 != rf4) );
133 TUASSERT( !(rf2 != rf5) );
134 TUASSERT( (rf2 != rf6) );
135
136 //Unknown Enum with...
137 TUASSERT( (rf3 != rf1) );
138 TUASSERT( (rf3 != rf2) );
139 TUASSERT( !(rf3 != rf3) );
140 TUASSERT( (rf3 != rf4) );
141 TUASSERT( (rf3 != rf5) );
142 TUASSERT( !(rf3 != rf6) );
143
144 TURETURN();
145 }
146
147
greaterThanTest()148 unsigned greaterThanTest()
149 {
150 TUDEF("ReferenceFrame", "operator>");
151
152 ReferenceFrame rf1(ReferenceFrame::Unknown);
153 ReferenceFrame rf2(ReferenceFrame::WGS84);
154 ReferenceFrame rf3(ReferenceFrame::PZ90);
155 ReferenceFrame rf4 = gpstk::StringUtils::asReferenceFrame("Junk");
156 ReferenceFrame rf5 = gpstk::StringUtils::asReferenceFrame("WGS84");
157 ReferenceFrame rf6 = gpstk::StringUtils::asReferenceFrame("PZ90");
158
159 TUASSERT( !(rf1 > rf1) );
160 TUASSERT( !(rf1 > rf2) );
161 TUASSERT( !(rf1 > rf3) );
162 TUASSERT( !(rf1 > rf4) );
163 TUASSERT( !(rf1 > rf5) );
164 TUASSERT( !(rf1 > rf6) );
165
166 TUASSERT( (rf2 > rf1) );
167 TUASSERT( !(rf2 > rf2) );
168 TUASSERT( !(rf2 > rf3) );
169 TUASSERT( (rf2 > rf4) );
170 TUASSERT( !(rf2 > rf5) );
171 TUASSERT( !(rf2 > rf6) );
172
173 TUASSERT( (rf3 > rf1) );
174 TUASSERT( (rf3 > rf2) );
175 TUASSERT( !(rf3 > rf3) );
176 TUASSERT( (rf3 > rf4) );
177 TUASSERT( (rf3 > rf5) );
178 TUASSERT( !(rf3 > rf6) );
179
180 TURETURN();
181 }
182
183
lessThanTest()184 unsigned lessThanTest()
185 {
186 TUDEF("ReferenceFrame", "operator<");
187
188 ReferenceFrame rf1(ReferenceFrame::Unknown);
189 ReferenceFrame rf2(ReferenceFrame::WGS84);
190 ReferenceFrame rf3(ReferenceFrame::PZ90);
191 ReferenceFrame rf6 = gpstk::StringUtils::asReferenceFrame("PZ90");
192 ReferenceFrame rf5 = gpstk::StringUtils::asReferenceFrame("WGS84");
193 ReferenceFrame rf4 = gpstk::StringUtils::asReferenceFrame("Junk");
194
195 TUASSERT( !(rf1 < rf1) );
196 TUASSERT( rf1 < rf2 );
197 TUASSERT( rf1 < rf3 );
198 TUASSERT( !(rf1 < rf4) );
199 TUASSERT( rf1 < rf5 );
200 TUASSERT( rf1 < rf6 );
201
202 TUASSERT( !(rf2 < rf1) );
203 TUASSERT( !(rf2 < rf2) );
204 TUASSERT( (rf2 < rf3) );
205 TUASSERT( !(rf2 < rf4) );
206 TUASSERT( !(rf2 < rf5) );
207 TUASSERT( (rf2 < rf6) );
208
209 TUASSERT( !(rf3 < rf1) );
210 TUASSERT( !(rf3 < rf2) );
211 TUASSERT( !(rf3 < rf3) );
212 TUASSERT( !(rf3 < rf4) );
213 TUASSERT( !(rf3 < rf5) );
214 TUASSERT( !(rf3 < rf6) );
215
216 TURETURN();
217 }
218
219
greaterThanOrEqualToTest()220 unsigned greaterThanOrEqualToTest()
221 {
222 TUDEF("ReferenceFrame", "operator>=");
223
224 ReferenceFrame rf1(ReferenceFrame::Unknown);
225 ReferenceFrame rf2(ReferenceFrame::WGS84);
226 ReferenceFrame rf3(ReferenceFrame::PZ90);
227 ReferenceFrame rf6 = gpstk::StringUtils::asReferenceFrame("PZ90");
228 ReferenceFrame rf5 = gpstk::StringUtils::asReferenceFrame("WGS84");
229 ReferenceFrame rf4 = gpstk::StringUtils::asReferenceFrame("Junk");
230
231 //Unknown with...
232 TUASSERT( rf1 >= rf1 );
233 TUASSERT( !(rf1 >= rf2) );
234 TUASSERT( !(rf1 >= rf3) );
235 TUASSERT( rf1 >= rf4 );
236 TUASSERT( !(rf1 >= rf5) );
237 TUASSERT( !(rf1 >= rf6) );
238
239 TUASSERT( rf2 >= rf1 );
240 TUASSERT( rf2 >= rf2 );
241 TUASSERT( !(rf2 >= rf3) );
242 TUASSERT( rf2 >= rf4 );
243 TUASSERT( rf2 >= rf5 );
244 TUASSERT( !(rf2 >= rf6) );
245
246 TUASSERT( rf3 >= rf1 );
247 TUASSERT( rf3 >= rf2 );
248 TUASSERT( rf3 >= rf3 );
249 TUASSERT( rf3 >= rf4 );
250 TUASSERT( rf3 >= rf5 );
251 TUASSERT( rf3 >= rf6 );
252
253 TURETURN();
254 }
255
256
lesserThanOrEqualToTest()257 unsigned lesserThanOrEqualToTest()
258 {
259 TUDEF("ReferenceFrame", "operator<=");
260
261 ReferenceFrame rf1(ReferenceFrame::Unknown);
262 ReferenceFrame rf2(ReferenceFrame::WGS84);
263 ReferenceFrame rf3(ReferenceFrame::PZ90);
264 ReferenceFrame rf6 = gpstk::StringUtils::asReferenceFrame("PZ90");
265 ReferenceFrame rf5 = gpstk::StringUtils::asReferenceFrame("WGS84");
266 ReferenceFrame rf4 = gpstk::StringUtils::asReferenceFrame("Junk");
267
268 TUASSERT( rf1 <= rf1 );
269 TUASSERT( rf1 <= rf2 );
270 TUASSERT( rf1 <= rf3 );
271 TUASSERT( rf1 <= rf4 );
272 TUASSERT( rf1 <= rf5 );
273 TUASSERT( rf1 <= rf6 );
274
275 TUASSERT( !(rf2 <= rf1) );
276 TUASSERT( rf2 <= rf2 );
277 TUASSERT( rf2 <= rf3 );
278 TUASSERT( !(rf2 <= rf4) );
279 TUASSERT( rf2 <= rf5 );
280 TUASSERT( rf2 <= rf6 );
281
282 TUASSERT( !(rf3 <= rf1) );
283 TUASSERT( !(rf3 <= rf2) );
284 TUASSERT( rf3 <= rf3 );
285 TUASSERT( !(rf3 <= rf4) );
286 TUASSERT( !(rf3 <= rf5) );
287 TUASSERT( rf3 <= rf6 );
288
289 TURETURN();
290 }
291
292
setReferenceFrameTest()293 unsigned setReferenceFrameTest()
294 {
295 TUDEF("ReferenceFrame", "ReferenceFrame");
296
297 ReferenceFrame rf1(ReferenceFrame::Unknown);
298 ReferenceFrame rf2(ReferenceFrame::WGS84);
299 ReferenceFrame rf3(ReferenceFrame::PZ90);
300
301 ReferenceFrame frame(ReferenceFrame::Unknown);
302 TUASSERT(frame == rf1);
303 TUASSERT(frame != rf2);
304 TUASSERT(frame != rf3);
305
306 frame = ReferenceFrame((ReferenceFrame)0);
307 TUASSERT(frame == rf1);
308 TUASSERT(frame != rf2);
309 TUASSERT(frame != rf3);
310
311 frame = gpstk::StringUtils::asReferenceFrame("Unknown");
312 TUASSERT(frame == rf1);
313 TUASSERT(frame != rf2);
314 TUASSERT(frame != rf3);
315
316 frame = gpstk::StringUtils::asReferenceFrame("Junk");
317 TUASSERT(frame == rf1);
318 TUASSERT(frame != rf2);
319 TUASSERT(frame != rf3);
320
321 frame = ReferenceFrame((ReferenceFrame)-1);
322 TUASSERT(frame != rf1);
323 TUASSERT(frame != rf2);
324 TUASSERT(frame != rf3);
325
326 frame = ReferenceFrame(ReferenceFrame::WGS84);
327 TUASSERT(frame != rf1);
328 TUASSERT(frame == rf2);
329 TUASSERT(frame != rf3);
330
331 frame = gpstk::StringUtils::asReferenceFrame("WGS84");
332 TUASSERT(frame != rf1);
333 TUASSERT(frame == rf2);
334 TUASSERT(frame != rf3);
335
336 frame = ReferenceFrame((ReferenceFrame)1);
337 TUASSERT(frame != rf1);
338 TUASSERT(frame == rf2);
339 TUASSERT(frame != rf3);
340
341 frame = ReferenceFrame(ReferenceFrame::PZ90);
342 TUASSERT(frame != rf1);
343 TUASSERT(frame != rf2);
344 TUASSERT(frame == rf3);
345
346 frame = gpstk::StringUtils::asReferenceFrame("PZ90");
347 TUASSERT(frame != rf1);
348 TUASSERT(frame != rf2);
349 TUASSERT(frame == rf3);
350
351 frame = ReferenceFrame((ReferenceFrame)6);
352 TUASSERT(frame != rf1);
353 TUASSERT(frame != rf2);
354 TUASSERT(frame == rf3);
355
356 TURETURN();
357 }
358 };
359
360
main()361 int main()
362 {
363 ReferenceFrame_T testClass;
364 unsigned errorTotal = 0;
365
366 errorTotal += testClass.asStringTest();
367 errorTotal += testClass.equalityTest();
368 errorTotal += testClass.inequalityTest();
369 errorTotal += testClass.greaterThanTest();
370 errorTotal += testClass.lessThanTest();
371 errorTotal += testClass.greaterThanOrEqualToTest();
372 errorTotal += testClass.lesserThanOrEqualToTest();
373 errorTotal += testClass.setReferenceFrameTest();
374 std::cout << "Total Failures for " << __FILE__ << ": " << errorTotal
375 << std::endl;
376
377 return errorTotal;
378 }
379
380