GLONASSTime_T.cpp
Go to the documentation of this file.
1 //==============================================================================
2 //
3 // This file is part of GNSSTk, the ARL:UT GNSS Toolkit.
4 //
5 // The GNSSTk 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 GNSSTk 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 GNSSTk; 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-2022, 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 #include "GLONASSTime.hpp"
40 #include "TimeTag.hpp"
41 #include "TimeString.hpp"
42 #include "CivilTime.hpp"
43 #include "TestUtil.hpp"
44 #include <iostream>
45 #include <fstream>
46 
47 
49 {
50 public:
51  unsigned constructorTest();
52  unsigned convertTest();
53  unsigned compareTest();
54  unsigned resetTest();
55  unsigned diffTest();
56 };
57 
58 
59 unsigned GLONASSTime_T ::
61 {
62  TUDEF("GLONASSTime", "GLONASSTime()");
64  TUASSERTE(unsigned, 0, uut1.epoch);
65  TUASSERTE(unsigned, 0, uut1.day);
66  TUASSERTFE(0., uut1.sod);
68  TUCSM("GLONASSTime(...)");
69  gnsstk::GLONASSTime uut2(23, 32, 1234., gnsstk::TimeSystem::UTC);
70  TUASSERTE(unsigned, 23, uut2.epoch);
71  TUASSERTE(unsigned, 32, uut2.day);
72  TUASSERTFE(1234., uut2.sod);
74  TUCSM("GLONASSTime(GLONASSTime)");
75  gnsstk::GLONASSTime uut3(uut2);
76  TUASSERTE(unsigned, 23, uut3.epoch);
77  TUASSERTE(unsigned, 32, uut3.day);
78  TUASSERTFE(1234., uut3.sod);
80  TURETURN();
81 }
82 
83 
84 unsigned GLONASSTime_T ::
86 {
87  TUDEF("GLONASSTime", "convertToCommonTime");
90  gnsstk::GLONASSTime uut1(5,251,0);
91  gnsstk::CommonTime exp(gnsstk::CivilTime(2012, 9, 7, 0, 0, 0,
93  TUASSERTE(gnsstk::CommonTime, exp, uut1);
94 
95  TUCSM("convertFromCommonTime");
97  TUCATCH(uut2.convertFromCommonTime(exp));
98  TUASSERTE(unsigned, 5, uut2.epoch);
99  TUASSERTE(unsigned, 251, uut2.day);
100  TUASSERTFE(0., uut2.sod);
102 
103  // round trip tests.
104  TUCSM("convertFrom/ToCommonTime");
105  gnsstk::GLONASSTime uut3(7, 367, 12345);
106  gnsstk::CommonTime uut3ct(uut3);
107  gnsstk::GLONASSTime uut3b(uut3ct);
108  TUASSERTE(unsigned, uut3.epoch, uut3b.epoch);
109  TUASSERTE(unsigned, uut3.day, uut3b.day);
110  TUASSERTFE(uut3.sod, uut3b.sod);
111 
112  gnsstk::GLONASSTime uut4(7, 732, 12345);
113  gnsstk::CommonTime uut4ct(uut4);
114  gnsstk::GLONASSTime uut4b(uut4ct);
115  TUASSERTE(unsigned, uut4.epoch, uut4b.epoch);
116  TUASSERTE(unsigned, uut4.day, uut4b.day);
117  TUASSERTFE(uut4.sod, uut4b.sod);
118 
119  gnsstk::GLONASSTime uut5(7, 1097, 12345);
120  gnsstk::CommonTime uut5ct(uut5);
121  gnsstk::GLONASSTime uut5b(uut5ct);
122  TUASSERTE(unsigned, uut5.epoch, uut5b.epoch);
123  TUASSERTE(unsigned, uut5.day, uut5b.day);
124  TUASSERTFE(uut5.sod, uut5b.sod);
125 
126  // make sure it works for the year 2100.
127  gnsstk::GLONASSTime uut6(27, 3, 12345);
128  gnsstk::CommonTime uut6ct(uut6);
129  gnsstk::GLONASSTime uut6b(uut6ct);
130  TUASSERTE(unsigned, uut6.epoch, uut6b.epoch);
131  TUASSERTE(unsigned, uut6.day, uut6b.day);
132  TUASSERTFE(uut6.sod, uut6b.sod);
133 
134  gnsstk::GLONASSTime uut7(27, 367, 12345);
135  gnsstk::CommonTime uut7ct(uut7);
136  gnsstk::GLONASSTime uut7b(uut7ct);
137  TUASSERTE(unsigned, uut7.epoch, uut7b.epoch);
138  TUASSERTE(unsigned, uut7.day, uut7b.day);
139  TUASSERTFE(uut7.sod, uut7b.sod);
140 
141  gnsstk::GLONASSTime uut8(27, 731, 12345);
142  gnsstk::CommonTime uut8ct(uut8);
143  gnsstk::GLONASSTime uut8b(uut8ct);
144  TUASSERTE(unsigned, uut8.epoch, uut8b.epoch);
145  TUASSERTE(unsigned, uut8.day, uut8b.day);
146  TUASSERTFE(uut8.sod, uut8b.sod);
147 
148  gnsstk::GLONASSTime uut9(27, 1096, 12345);
149  gnsstk::CommonTime uut9ct(uut9);
150  gnsstk::GLONASSTime uut9b(uut9ct);
151  TUASSERTE(unsigned, uut9.epoch, uut9b.epoch);
152  TUASSERTE(unsigned, uut9.day, uut9b.day);
153  TUASSERTFE(uut9.sod, uut9b.sod);
154  TURETURN();
155 }
156 
157 
158 unsigned GLONASSTime_T ::
160 {
161  TUDEF("GLONASSTime", "operator==");
162  gnsstk::GLONASSTime uut1(5, 251, 60., gnsstk::TimeSystem::GLO);
163  gnsstk::GLONASSTime uut2(5, 251, 60., gnsstk::TimeSystem::GLO);
164  gnsstk::GLONASSTime uut3(4, 251, 60., gnsstk::TimeSystem::GLO);
165  gnsstk::GLONASSTime uut4(6, 251, 60., gnsstk::TimeSystem::GLO);
166  gnsstk::GLONASSTime uut5(5, 250, 60., gnsstk::TimeSystem::GLO);
167  gnsstk::GLONASSTime uut6(5, 252, 60., gnsstk::TimeSystem::GLO);
168  gnsstk::GLONASSTime uut7(5, 251, 59., gnsstk::TimeSystem::GLO);
169  gnsstk::GLONASSTime uut8(5, 251, 61., gnsstk::TimeSystem::GLO);
170 
171  TUASSERTE(bool, true, uut1 == uut2);
172  TUASSERTE(bool, false, uut1 == uut3);
173  TUASSERTE(bool, false, uut1 == uut4);
174  TUASSERTE(bool, false, uut1 == uut5);
175  TUASSERTE(bool, false, uut1 == uut6);
176  TUASSERTE(bool, false, uut1 == uut7);
177  TUASSERTE(bool, false, uut1 == uut8);
178 
179  TUCSM("operator!=");
180  TUASSERTE(bool, false, uut1 != uut2);
181  TUASSERTE(bool, true, uut1 != uut3);
182  TUASSERTE(bool, true, uut1 != uut4);
183  TUASSERTE(bool, true, uut1 != uut5);
184  TUASSERTE(bool, true, uut1 != uut6);
185  TUASSERTE(bool, true, uut1 != uut7);
186  TUASSERTE(bool, true, uut1 != uut8);
187 
188  TUCSM("operator<");
189  TUASSERTE(bool, false, uut1 < uut2);
190  TUASSERTE(bool, false, uut1 < uut3);
191  TUASSERTE(bool, true, uut1 < uut4);
192  TUASSERTE(bool, false, uut1 < uut5);
193  TUASSERTE(bool, true, uut1 < uut6);
194  TUASSERTE(bool, false, uut1 < uut7);
195  TUASSERTE(bool, true, uut1 < uut8);
196 
197  TUCSM("operator>");
198  TUASSERTE(bool, false, uut1 > uut2);
199  TUASSERTE(bool, true, uut1 > uut3);
200  TUASSERTE(bool, false, uut1 > uut4);
201  TUASSERTE(bool, true, uut1 > uut5);
202  TUASSERTE(bool, false, uut1 > uut6);
203  TUASSERTE(bool, true, uut1 > uut7);
204  TUASSERTE(bool, false, uut1 > uut8);
205 
206  TUCSM("operator<=");
207  TUASSERTE(bool, true, uut1 <= uut2);
208  TUASSERTE(bool, false, uut1 <= uut3);
209  TUASSERTE(bool, true, uut1 <= uut4);
210  TUASSERTE(bool, false, uut1 <= uut5);
211  TUASSERTE(bool, true, uut1 <= uut6);
212  TUASSERTE(bool, false, uut1 <= uut7);
213  TUASSERTE(bool, true, uut1 <= uut8);
214 
215  TUCSM("operator>=");
216  TUASSERTE(bool, true, uut1 >= uut2);
217  TUASSERTE(bool, true, uut1 >= uut3);
218  TUASSERTE(bool, false, uut1 >= uut4);
219  TUASSERTE(bool, true, uut1 >= uut5);
220  TUASSERTE(bool, false, uut1 >= uut6);
221  TUASSERTE(bool, true, uut1 >= uut7);
222  TUASSERTE(bool, false, uut1 >= uut8);
223 
224  TURETURN();
225 }
226 
227 
228 unsigned GLONASSTime_T ::
230 {
231  TUDEF("GLONASSTime", "reset");
232  gnsstk::GLONASSTime uut(23, 32, 1234., gnsstk::TimeSystem::UTC);
233  TUASSERTE(unsigned, 23, uut.epoch);
234  TUASSERTE(unsigned, 32, uut.day);
235  TUASSERTFE(1234., uut.sod);
237  TUCATCH(uut.reset());
238  TUASSERTE(unsigned, 0, uut.epoch);
239  TUASSERTE(unsigned, 0, uut.day);
240  TUASSERTFE(0., uut.sod);
242  TURETURN();
243 }
244 
245 
246 unsigned GLONASSTime_T ::
248 {
249  TUDEF("GLONASSTime", "convertToCommonTime");
250  // GLONASSTime doesn't have its own operator-, but we want to
251  // make sure that the difference corresponds to the test data
252  // in, e.g. ICD GLONASS CDMA General Description, appendix M2
253  gnsstk::GLONASSTime almTime(0,1452,33571.625);
254  gnsstk::GLONASSTime intTime(0,1453, 51300.0);
255  gnsstk::CommonTime almTimeCT(almTime);
256  gnsstk::CommonTime intTimeCT(intTime);
257  double diff = intTimeCT - almTimeCT;
258  TUASSERTFE(104128.375, diff);
259  TURETURN();
260 }
261 
262 
263 int main()
264 {
265  unsigned errorTotal = 0;
266  GLONASSTime_T testClass;
267 
268  errorTotal += testClass.constructorTest();
269  errorTotal += testClass.convertTest();
270  errorTotal += testClass.compareTest();
271  errorTotal += testClass.resetTest();
272  errorTotal += testClass.diffTest();
273 
274  std::cout << "Total Failures for " << __FILE__ << ": " << errorTotal
275  << std::endl;
276 
277  return errorTotal;
278 }
TUCSM
#define TUCSM(METHOD)
Definition: TestUtil.hpp:59
gnsstk::GLONASSTime::epoch
unsigned epoch
Number of leap years since 1996 (aka N4).
Definition: GLONASSTime.hpp:164
TUCATCH
#define TUCATCH(STATEMENT)
Definition: TestUtil.hpp:193
GLONASSTime_T::diffTest
unsigned diffTest()
Definition: GLONASSTime_T.cpp:247
TUASSERTE
#define TUASSERTE(TYPE, EXP, GOT)
Definition: TestUtil.hpp:81
GLONASSTime_T::compareTest
unsigned compareTest()
Definition: GLONASSTime_T.cpp:159
gnsstk::GLONASSTime::day
unsigned day
Definition: GLONASSTime.hpp:167
gnsstk::GLONASSTime::convertFromCommonTime
void convertFromCommonTime(const CommonTime &ct) override
As it says, convert from a CommonTime object.
Definition: GLONASSTime.cpp:110
gnsstk::GLONASSTime
Definition: GLONASSTime.hpp:59
TestUtil.hpp
TURETURN
#define TURETURN()
Definition: TestUtil.hpp:232
GLONASSTime_T
Definition: GLONASSTime_T.cpp:48
GLONASSTime_T::convertTest
unsigned convertTest()
Definition: GLONASSTime_T.cpp:85
gnsstk::CommonTime
Definition: CommonTime.hpp:84
gnsstk::GLONASSTime::reset
void reset() override
Reset this object to the default state.
Definition: GLONASSTime.cpp:221
gnsstk::TimeSystem
TimeSystem
Definition of various time systems.
Definition: TimeSystem.hpp:51
CivilTime.hpp
TimeTag.hpp
TUDEF
#define TUDEF(CLASS, METHOD)
Definition: TestUtil.hpp:56
gnsstk::TimeSystem::GLO
@ GLO
GLONASS system time (aka UTC(SU))
gnsstk::TimeSystem::UTC
@ UTC
Coordinated Universal Time (e.g., from NTP)
GLONASSTime.hpp
GLONASSTime_T::constructorTest
unsigned constructorTest()
Definition: GLONASSTime_T.cpp:60
gnsstk::CivilTime
Definition: CivilTime.hpp:55
GLONASSTime_T::resetTest
unsigned resetTest()
Definition: GLONASSTime_T.cpp:229
main
int main()
Definition: GLONASSTime_T.cpp:263
TUASSERTFE
#define TUASSERTFE(EXP, GOT)
Definition: TestUtil.hpp:103
gnsstk::GLONASSTime::sod
double sod
Time of day (seconds of day, aka tb).
Definition: GLONASSTime.hpp:169
gnsstk::TimeTag::getTimeSystem
TimeSystem getTimeSystem() const
Obtain time system info (enum).
Definition: TimeTag.hpp:169
TimeString.hpp


gnsstk
Author(s):
autogenerated on Wed Oct 25 2023 02:40:39