3 import unittest, sys, os
5 from collections.abc
import Hashable
8 from collections
import Hashable
10 sys.path.insert(0, os.path.abspath(
".."))
11 from gnsstk.test_utils
import args, run_unit_tests
16 Overkill? Maybe... but it does catch swig errors related to Enumeration passing.
20 with self.assertRaises(TypeError):
22 self.fail(
"No default constructor")
25 self.assertEqual(
gnsstk.SatelliteSystem(gnsstk.SatelliteSystem.GPS), gnsstk.SatelliteSystem.GPS, msg=
'gnsstk enum GPS')
26 self.assertEqual(
gnsstk.SatelliteSystem(gnsstk.SatelliteSystem.Galileo), gnsstk.SatelliteSystem.Galileo, msg=
'gnsstk enum Galileo')
27 self.assertEqual(gnsstk.asSatelliteSystem(
'GPS'), gnsstk.SatelliteSystem.GPS, msg=
'str GPS')
28 self.assertEqual(gnsstk.asSatelliteSystem(
'Galileo'), gnsstk.SatelliteSystem.Galileo, msg=
'str Galileo')
33 with self.assertRaises(TypeError):
35 self.fail(
"No default constructor")
38 self.assertEqual(
gnsstk.CarrierBand(gnsstk.CarrierBand.L2), gnsstk.CarrierBand.L2, msg=
'gnsstk enum GPS')
39 self.assertEqual(
gnsstk.CarrierBand(gnsstk.CarrierBand.L1L2), gnsstk.CarrierBand.L1L2, msg=
'gnsstk enum L1L2')
40 self.assertEqual(gnsstk.asCarrierBand(
'L2'), gnsstk.CarrierBand.L2, msg=
'str GPS')
45 with self.assertRaises(TypeError):
47 self.fail(
"No default constructor")
50 self.assertEqual(
gnsstk.TrackingCode(gnsstk.TrackingCode.Y), gnsstk.TrackingCode.Y, msg=
'gnsstk enum Y')
51 self.assertEqual(
gnsstk.TrackingCode(gnsstk.TrackingCode.CA), gnsstk.TrackingCode.CA, msg=
'gnsstk enum CA')
52 self.assertEqual(gnsstk.asTrackingCode(
'Y'), gnsstk.TrackingCode.Y, msg=
'str Y')
53 self.assertEqual(gnsstk.asTrackingCode(
'CA'), gnsstk.TrackingCode.CA, msg=
'str CA')
58 with self.assertRaises(TypeError):
60 self.fail(
"No default constructor")
63 self.assertEqual(
gnsstk.ObservationType(gnsstk.ObservationType.Range), gnsstk.ObservationType.Range, msg=
'gnsstk enum Range')
64 self.assertEqual(
gnsstk.ObservationType(gnsstk.ObservationType.Doppler), gnsstk.ObservationType.Doppler, msg=
'gnsstk enum Doppler')
65 self.assertEqual(gnsstk.asObservationType(
'Range'), gnsstk.ObservationType.Range, msg=
'str Range')
66 self.assertEqual(gnsstk.asObservationType(
'Doppler'), gnsstk.ObservationType.Doppler, msg=
'str Doppler')
71 with self.assertRaises(TypeError):
73 self.fail(
"No default constructor")
74 self.assertEqual(
gnsstk.NavType(6), gnsstk.NavType.GPSMNAV, msg=
'int GPSMNAV')
75 self.assertEqual(
gnsstk.NavType(4), gnsstk.NavType.GPSCNAVL5, msg=
'int GPS')
76 self.assertEqual(
gnsstk.NavType(gnsstk.NavType.GPSCNAVL5), gnsstk.NavType.GPSCNAVL5, msg=
'gnsstk enum GPSCNAVL5')
77 self.assertEqual(
gnsstk.NavType(gnsstk.NavType.GPSMNAV), gnsstk.NavType.GPSMNAV, msg=
'gnsstk enum GPSMNAV')
79 self.assertEqual(gnsstk.asNavType(
'GPS_CNAV_L5'), gnsstk.NavType.GPSCNAVL5, msg=
'str GPSCNAVL5')
80 self.assertEqual(gnsstk.asNavType(
'GPS_MNAV'), gnsstk.NavType.GPSMNAV, msg=
'str GPSMNAV')
85 with self.assertRaises(TypeError):
87 self.fail(
"No default constructor")
90 self.assertEqual(
gnsstk.TimeSystem(gnsstk.TimeSystem.GPS), gnsstk.TimeSystem.GPS, msg=
'gnsstk enum GPS')
91 self.assertEqual(
gnsstk.TimeSystem(gnsstk.TimeSystem.GAL), gnsstk.TimeSystem.GAL, msg=
'gnsstk enum GAL')
92 self.assertEqual(gnsstk.asTimeSystem(
'GPS'), gnsstk.TimeSystem.GPS, msg=
'str GPS')
93 self.assertEqual(gnsstk.asTimeSystem(
'GAL'), gnsstk.TimeSystem.GAL, msg=
'str GAL')
98 with self.assertRaises(TypeError):
100 self.fail(
"No default constructor")
103 self.assertEqual(
gnsstk.ReferenceFrame(gnsstk.ReferenceFrame.WGS84G1150), gnsstk.ReferenceFrame.WGS84G1150, msg=
'gnsstk enum WGS84G1150')
104 self.assertEqual(
gnsstk.ReferenceFrame(gnsstk.ReferenceFrame.WGS84G730), gnsstk.ReferenceFrame.WGS84G730, msg=
'gnsstk enum WGS84G730')
105 self.assertEqual(gnsstk.asReferenceFrame(
'WGS84(G1150)'), gnsstk.ReferenceFrame.WGS84G1150, msg=
'str WGS84G1150')
106 self.assertEqual(gnsstk.asReferenceFrame(
'WGS84(G730)'), gnsstk.ReferenceFrame.WGS84G730, msg=
'str WGS84G730')
114 self.assertTrue(s.isValid())
118 self.assertFalse(s.isValid())
122 self.assertEqual(
'GLONASS 3', str(a))
125 self.assertEqual(
'LEO 1', str(b))
128 self.assertEqual(
'* 4', str(c))
138 self.assertTrue(isinstance(a, Hashable))
139 self.assertTrue(isinstance(b, Hashable))
140 self.assertTrue(isinstance(c, Hashable))
141 self.assertTrue(isinstance(d, Hashable))
142 self.assertTrue(isinstance(e, Hashable))
150 self.assertTrue(t == u)
151 self.assertTrue(u == v)
155 self.assertEqual(1.5, t[0])
156 self.assertEqual(2.0, t[1])
157 self.assertEqual(-3.0, t[2])
164 self.assertEqual(c, a + b)
169 self.assertEqual(15.25, t.dot(t))
172 self.assertEqual(expected,
gnsstk.Triple(2.0, 3.0, 4.0).scale(2.0))
174 self.assertAlmostEqual(3.905124837953327, t.mag())
175 self.assertAlmostEqual(5.345455469884399, t.elvAngle(u))
176 self.assertAlmostEqual(0.42837471052408865, t.cosVector(u))
183 self.assertAlmostEqual(5.348831648126533,
gnsstk.range(p1, p2))
189 self.assertAlmostEqual(45.0, q[0], places=4)
190 self.assertAlmostEqual(30.0, q[1], places=4)
191 self.assertAlmostEqual(12.0, q[2], places=4)
199 self.assertAlmostEqual(25.33498527029081, p[0], places=4)
200 self.assertAlmostEqual(11.30993247402015, p[1], places=4)
201 self.assertAlmostEqual(-6269217.08416736, p[2], places=4)
202 self.assertAlmostEqual(99999.26269737557, q[0], places=4)
203 self.assertAlmostEqual(19999.85253947465, q[1], places=4)
204 self.assertAlmostEqual(29999.83821484564, q[2], places=4)
212 self.assertAlmostEqual(44.90696703221949, p[0], places=4)
213 self.assertAlmostEqual(100.0, p[1], places=4)
214 self.assertAlmostEqual(-6118405.153409380, p[2], places=4)
215 self.assertAlmostEqual(40.00000265961031, q[0], places=4)
216 self.assertAlmostEqual(100.0, q[1], places=4)
217 self.assertAlmostEqual(249998.49546297366, q[2], places=4)
223 self.assertAlmostEqual(47.54984445710891, p[0], places=4)
224 self.assertAlmostEqual(51.34019174590962, p[1], places=4)
225 self.assertAlmostEqual(9486.832980505136, p[2], places=4)
226 self.assertAlmostEqual(orig[0], q[0], places=4)
227 self.assertAlmostEqual(orig[1], q[1], places=4)
228 self.assertAlmostEqual(orig[2], q[2], places=4)
231 system = gnsstk.Position.Cartesian
236 self.assertAlmostEqual(1.32756277187, q.elevation(p))
237 self.assertAlmostEqual(86.18592516570916, p.getPhi())
238 self.assertAlmostEqual(57.5141089193572, p.geodeticLatitude())
239 self.assertAlmostEqual(10000.0, p.X())
242 p = gnsstk.cartesian(100, 200, 300)
243 self.assertEqual(gnsstk.Position.Cartesian, p.getCoordinateSystem())
245 self.assertEqual(gnsstk.Position.Spherical, p.getCoordinateSystem())
247 self.assertEqual(gnsstk.Position.Geodetic, p.getCoordinateSystem())
248 p = gnsstk.geocentric(latitude=60, radius=10000)
249 self.assertEqual(gnsstk.Position.Geocentric, p.getCoordinateSystem())
254 self.assertEqual(15, gnsstk.SV_ACCURACY_GPS_MAX_INDEX_VALUE)
256 self.assertEqual(0.0, gnsstk.sv_accuracy_gps_min_index(0))
257 self.assertEqual(2.4, gnsstk.sv_accuracy_gps_min_index(1))
258 self.assertRaises(gnsstk.IndexOutOfBoundsException, gnsstk.sv_accuracy_gps_min_index, 16)
263 o1 =
gnsstk.ObsID(gnsstk.ObservationType.Range, gnsstk.CarrierBand.Any, gnsstk.TrackingCode.E1A)
264 self.assertEqual(
'AnyBand GALA pseudorange', str(o1))
269 v = gnsstk.std_vector_int()
273 self.assertEqual(5, v[0])
274 self.assertEqual(3, v[1])
275 self.assertEqual(10, v[2])
276 v = gnsstk.std_vector_double()
279 self.assertEqual(1.5, v[0])
280 self.assertEqual(2.5, v[1])
281 self.assertEqual(2, len(v))
284 v = gnsstk.std_vector_int()
290 self.assertEqual(v[i], x)
294 def same_seq(seq1, seq2):
295 self.assertEqual(len(seq1), len(seq2))
296 for i
in range(len(seq1)):
297 self.assertEqual(seq1[i], seq2[i])
299 list = [1.1, 2.2, 3.3]
300 v = gnsstk.seqToVector(list)
301 self.assertIsInstance(v, gnsstk.std_vector_double)
304 list = [1.1, 2.2, 3.3]
305 v = gnsstk.seqToVector(list, outtype=
'std_vector_double')
306 self.assertIsInstance(v, gnsstk.std_vector_double)
309 list = [
'bar!',
'foo?']
310 v = gnsstk.seqToVector(list)
311 self.assertIsInstance(v, gnsstk.std_vector_string)
314 v = gnsstk.std_vector_int()
317 list = gnsstk.vectorToSeq(v)
320 list = [1.1, 2.2, 3.3]
321 self.assertRaises(TypeError, gnsstk.seqToVector, list,
'vector_doesnotexist')
324 self.assertRaises(TypeError, gnsstk.seqToVector, list)
327 map = gnsstk.std_map_int_char()
330 self.assertEqual(
'A', map[1])
331 self.assertEqual(
'z', map[100])
332 map = gnsstk.std_map_string_int()
335 self.assertEqual(123, map[
'key1'])
336 self.assertEqual(321, map[
'key2'])
339 map = gnsstk.std_map_int_string()
345 self.assertEqual([5,6], sorted(list))
348 map = gnsstk.std_map_int_string()
351 self.assertEqual(2, len(map))
355 self.assertEqual(len(a), len(b))
357 self.assertEqual(a[x], b[x])
359 d = {1:
'A', 2:
'B', 3:
'C'}
360 m = gnsstk.dictToMap(d)
362 self.assertIsInstance(m, gnsstk.std_map_int_string)
363 same(d, gnsstk.mapToDict(m))
365 d = {
'A': 1.1,
'B': 2.2,
'C': 3.3}
366 m = gnsstk.dictToMap(d)
368 self.assertIsInstance(m, gnsstk.std_map_string_double)
369 same(d, gnsstk.mapToDict(m))
371 d = {
'A': 1,
'B': 1.1}
372 self.assertRaises(TypeError, gnsstk.dictToMap, d)
387 data.clkbias = 0.0001
391 self.assertAlmostEqual(0.0001, data.getClockBias())
393 expected = 1.446445072869704e-11
394 self.assertAlmostEqual(expected, data.computeRelativityCorrection())
396 expected = (
'x:(1000, 2000, 1500), v:(50, 25, -500), clk bias:0.0001, '
397 'clk drift:0.05, relcorr:1.44645e-11')
398 self.assertEqual(expected, str(data))
406 trip = gnsstk.poleTides(t, p, x, y)
407 self.assertAlmostEqual(-0.03128457731297798, trip[0])
412 self.assertAlmostEqual(2.0, e.evaluate())
415 self.assertAlmostEqual(2.128, e.evaluate())
419 self.assertAlmostEqual(12.0, e.evaluate())
423 self.assertAlmostEqual(2803020000.0, e.evaluate())
426 self.assertAlmostEqual(2.0, gnsstk.eval(
'1 + 1'))
427 self.assertAlmostEqual(2.128, gnsstk.eval(
'1.12*(4.0/2.0 - 0.1)'))
428 self.assertAlmostEqual(12.0, gnsstk.eval(
'1 + 2*x', x=5.5))
429 self.assertAlmostEqual(2803020000.0, gnsstk.eval(
'L1 + L2'))
432 self.assertAlmostEqual(12.0, gnsstk.eval(e, x=5.5))
436 if __name__ ==
'__main__':