test_NavLibrary.py
Go to the documentation of this file.
1 #!/usr/env python
2 
3 import unittest, sys, os
4 sys.path.insert(0, os.path.abspath(".."))
5 from gnsstk.test_utils import args,run_unit_tests
6 
7 import gnsstk
8 
9 class TestNavLibrary(unittest.TestCase):
10  def test_getXvt(self):
11  navLib = gnsstk.NavLibrary()
13  navLib.addFactory(ndf)
14  ndf.addDataSource(args.input_dir+'/arlm2000.15n')
15  sat = gnsstk.NavSatelliteID(5, 5, gnsstk.SatelliteSystem.GPS,
16  gnsstk.CarrierBand.L1,
17  gnsstk.TrackingCode.CA, gnsstk.NavType.GPSLNAV)
18  ct = gnsstk.CivilTime(2015,7,19,2,0,35,
19  gnsstk.TimeSystem.GPS).toCommonTime()
20  # test getXvt (first signature)
21  xvt = gnsstk.Xvt()
22  rv = navLib.getXvt(sat, ct, xvt, False)
23  self.assertEqual(True, rv)
24  self.assertEqual( 9345531.5274733770639, xvt.x[0])
25  self.assertEqual(-12408177.088141856715, xvt.x[1])
26  self.assertEqual( 21486320.848036296666, xvt.x[2])
27  self.assertEqual(2081.276961058104007, xvt.v[0])
28  self.assertEqual(1792.4445008638492709, xvt.v[1])
29  self.assertEqual( 148.29209115082824155, xvt.v[2])
30  self.assertEqual(-0.00021641018042870913346, xvt.clkbias)
31  self.assertEqual(4.3200998334200003381e-12, xvt.clkdrift)
32  self.assertEqual(-8.8197758101551758427e-09, xvt.relcorr)
33  self.assertEqual(gnsstk.Xvt.Healthy, xvt.health)
34  # test getXvt (second signature)
35  xvt2 = gnsstk.Xvt()
36  rv = navLib.getXvt(sat, ct, xvt2, gnsstk.SVHealth.Any)
37  self.assertEqual(True, rv)
38  self.assertEqual( 9345531.5274733770639, xvt.x[0])
39  self.assertEqual(-12408177.088141856715, xvt.x[1])
40  self.assertEqual( 21486320.848036296666, xvt.x[2])
41  self.assertEqual(2081.276961058104007, xvt.v[0])
42  self.assertEqual(1792.4445008638492709, xvt.v[1])
43  self.assertEqual( 148.29209115082824155, xvt.v[2])
44  self.assertEqual(-0.00021641018042870913346, xvt.clkbias)
45  self.assertEqual(4.3200998334200003381e-12, xvt.clkdrift)
46  self.assertEqual(-8.8197758101551758427e-09, xvt.relcorr)
47  self.assertEqual(gnsstk.Xvt.Healthy, xvt.health)
48 
49  def test_getHealth(self):
50  navLib = gnsstk.NavLibrary()
52  navLib.addFactory(ndf)
53  ndf.addDataSource(args.input_dir+'/arlm2000.15n')
54  sat = gnsstk.NavSatelliteID(10, 10, gnsstk.SatelliteSystem.GPS,
55  gnsstk.CarrierBand.L1,
56  gnsstk.TrackingCode.CA, gnsstk.NavType.GPSLNAV)
57  ct = gnsstk.CivilTime(2015,7,19,2,0,35,
58  gnsstk.TimeSystem.GPS).toCommonTime()
59  rv,health = navLib.getHealth(sat, ct, gnsstk.SVHealth.Any)
60  self.assertEqual(False, rv)
61  ct = gnsstk.CivilTime(2015,7,19,12,35,35,
62  gnsstk.TimeSystem.GPS).toCommonTime()
63  rv,health = navLib.getHealth(sat, ct, gnsstk.SVHealth.Any)
64  self.assertEqual(False, rv)
65  ct = gnsstk.CivilTime(2015,7,19,12,35,36,
66  gnsstk.TimeSystem.GPS).toCommonTime()
67  rv,health = navLib.getHealth(sat, ct, gnsstk.SVHealth.Any)
68  self.assertEqual(True, rv)
69  self.assertEqual(gnsstk.SVHealth.Unhealthy, health)
70  sat = gnsstk.NavSatelliteID(2, 2, gnsstk.SatelliteSystem.GPS,
71  gnsstk.CarrierBand.L1,
72  gnsstk.TrackingCode.CA, gnsstk.NavType.GPSLNAV)
73  ct = gnsstk.CivilTime(2015,7,19,2,0,0,
74  gnsstk.TimeSystem.GPS).toCommonTime()
75  rv,health = navLib.getHealth(sat, ct, gnsstk.SVHealth.Any)
76  self.assertEqual(True, rv)
77  self.assertEqual(gnsstk.SVHealth.Healthy, health)
78 
79  def test_getOffset(self):
80  navLib = gnsstk.NavLibrary()
82  navLib.addFactory(ndf)
83  ndf.addDataSource(args.input_dir+
84  '/test_input_rinex_nav_RinexNavExample.99n')
85  self.assertEqual(9, ndf.size())
86  ct = gnsstk.GPSWeekSecond(1025, 410500).toCommonTime()
87  # test getOffset with NavDataPtr
88  rv,nd = navLib.getOffset(gnsstk.TimeSystem.GPS, gnsstk.TimeSystem.UTC, ct)
89  # time range of ct is going to fail to find the time offset
90  self.assertEqual(False, rv)
91  ct2 = gnsstk.GPSWeekSecond(1025,552970).toCommonTime()
92  rv,nd = navLib.getOffset(gnsstk.TimeSystem.GPS,gnsstk.TimeSystem.UTC,ct2)
93  self.assertEqual(True, rv)
94  self.assertEqual(13.0, nd.deltatLS)
95 
96  def test_find(self):
97  navLib = gnsstk.NavLibrary()
99  navLib.addFactory(ndf)
100  ndf.addDataSource(args.input_dir+'/arlm2000.15n')
101  sat = gnsstk.NavSatelliteID(10, 10, gnsstk.SatelliteSystem.GPS,
102  gnsstk.CarrierBand.L1,
103  gnsstk.TrackingCode.CA, gnsstk.NavType.GPSLNAV)
104  ct = gnsstk.CivilTime(2015,7,19,2,0,35,
105  gnsstk.TimeSystem.GPS).toCommonTime()
106  nmide = gnsstk.NavMessageID(sat, gnsstk.NavMessageType.Ephemeris)
107  nmida = gnsstk.NavMessageID(sat, gnsstk.NavMessageType.Almanac)
108  rv,nd = navLib.find(nmide, ct, gnsstk.SVHealth.Any,
109  gnsstk.NavValidityType.ValidOnly,
110  gnsstk.NavSearchOrder.User)
111  self.assertEqual(False, rv)
112  ct = gnsstk.CivilTime(2015,7,19,12,35,48,
113  gnsstk.TimeSystem.GPS).toCommonTime()
114  rv,nd = navLib.find(nmide, ct, gnsstk.SVHealth.Any,
115  gnsstk.NavValidityType.ValidOnly,
116  gnsstk.NavSearchOrder.User)
117  self.assertEqual(True, rv)
118  self.assertEqual(64, nd.iode)
119  rv,nd = navLib.find(nmida, ct, gnsstk.SVHealth.Any,
120  gnsstk.NavValidityType.ValidOnly,
121  gnsstk.NavSearchOrder.User)
122  self.assertEqual(False, rv)
123  sat = gnsstk.NavSatelliteID(2, 2, gnsstk.SatelliteSystem.GPS,
124  gnsstk.CarrierBand.L1,
125  gnsstk.TrackingCode.CA, gnsstk.NavType.GPSLNAV)
126  nmide = gnsstk.NavMessageID(sat, gnsstk.NavMessageType.Ephemeris)
127  ct = gnsstk.CivilTime(2015,7,19,2,0,0,
128  gnsstk.TimeSystem.GPS).toCommonTime()
129  rv,nd = navLib.find(nmide, ct, gnsstk.SVHealth.Any,
130  gnsstk.NavValidityType.ValidOnly,
131  gnsstk.NavSearchOrder.User)
132  self.assertEqual(True, rv)
133  self.assertEqual(7, nd.iode)
134 
136  navLib = gnsstk.NavLibrary()
138  navLib.addFactory(ndf)
139  # rudimentary test of setValidityFilter, just make sure it doesn't die
140  navLib.setValidityFilter(gnsstk.NavValidityType.ValidOnly)
141 
143  navLib = gnsstk.NavLibrary()
145  navLib.addFactory(ndf)
146  # rudimentary test of setTypeFilter
147  nmts = gnsstk.NavMessageTypeSet()
148  nmts.add(gnsstk.NavMessageType.Almanac)
149  navLib.setTypeFilter(nmts)
150  nmts = ndf.getTypeFilter()
151  self.assertEqual(1, len(nmts))
152 
153  # we can test addTypeFilter and clearTypeFilter up to a point, we can't
154  # actually verify the contents without causing the same sort of errors
155  # experienced by setTypeFilter() (meaning, the set of unknown objects)
157  navLib = gnsstk.NavLibrary()
159  navLib.addFactory(ndf)
160  navLib.clearTypeFilter();
161  nmts = ndf.getTypeFilter()
162  self.assertEqual(0, len(nmts))
163  navLib.addTypeFilter(gnsstk.NavMessageType.Almanac)
164  nmts = ndf.getTypeFilter()
165  self.assertFalse(len(nmts) == 0)
166  # The above filter should result in an empty store (no alms in RINEX)
167  ndf.addDataSource(args.input_dir+'/arlm2000.15n')
168  satset = navLib.getAvailableSats(gnsstk.CommonTime.BEGINNING_OF_TIME,
169  gnsstk.CommonTime.END_OF_TIME)
170  self.assertEqual(0, len(satset))
171  # Try again, this time with only ephemerides, which RINEX has.
172  navLib.clear()
173  navLib.clearTypeFilter()
174  navLib.addTypeFilter(gnsstk.NavMessageType.Ephemeris)
175  ndf.addDataSource(args.input_dir+'/arlm2000.15n')
176  satset = navLib.getAvailableSats(gnsstk.CommonTime.BEGINNING_OF_TIME,
177  gnsstk.CommonTime.END_OF_TIME)
178  self.assertEqual(31, len(satset))
179 
180  def test_getTime(self):
181  navLib = gnsstk.NavLibrary()
183  navLib.addFactory(ndf)
184  ndf.addDataSource(args.input_dir+'/arlm2000.15n')
185  expIni = gnsstk.CivilTime(2015,7,19,0,0,0,
186  gnsstk.TimeSystem.GPS).toCommonTime()
187  expFin = gnsstk.CivilTime(2015,7,20,2,0,0,
188  gnsstk.TimeSystem.GPS).toCommonTime()
189  self.assertEqual(expIni, navLib.getInitialTime())
190  self.assertEqual(expFin, navLib.getFinalTime())
191 
192  def test_editClear(self):
193  navLib = gnsstk.NavLibrary()
195  navLib.addFactory(ndf)
196  ndf.addDataSource(args.input_dir+'/arlm2000.15n')
197  self.assertEqual(507, ndf.size())
198  navLib.clear()
199  self.assertEqual(0, ndf.size())
200  ndf.addDataSource(args.input_dir+'/arlm2000.15n')
201  self.assertEqual(507, ndf.size())
202  navLib.edit(gnsstk.GPSWeekSecond(0,0).toCommonTime(),
203  gnsstk.GPSWeekSecond(1854,28700).toCommonTime())
204  self.assertEqual(343, ndf.size())
205  sat = gnsstk.NavSatelliteID(1, 1, gnsstk.SatelliteSystem.GPS,
206  gnsstk.CarrierBand.L1,
207  gnsstk.TrackingCode.CA, gnsstk.NavType.GPSLNAV)
208  navLib.clear()
209  self.assertEqual(0, ndf.size())
210  ndf.addDataSource(args.input_dir+'/arlm2000.15n')
211  self.assertEqual(507, ndf.size())
212  navLib.edit(gnsstk.GPSWeekSecond(0,0).toCommonTime(),
213  gnsstk.GPSWeekSecond(1854,28700).toCommonTime(), sat)
214  self.assertEqual(504, ndf.size())
215  navLib.clear()
216  self.assertEqual(0, ndf.size())
217  ndf.addDataSource(args.input_dir+'/arlm2000.15n')
218  self.assertEqual(507, ndf.size())
219  sig = gnsstk.NavSignalID(gnsstk.SatelliteSystem.GPS, gnsstk.CarrierBand.L1,
220  gnsstk.TrackingCode.Y, gnsstk.NavType.GPSLNAV)
221  navLib.edit(gnsstk.GPSWeekSecond(0,0).toCommonTime(),
222  gnsstk.GPSWeekSecond(1854,28700).toCommonTime(), sig)
223  self.assertEqual(507, ndf.size())
224  sig = gnsstk.NavSignalID(gnsstk.SatelliteSystem.GPS, gnsstk.CarrierBand.L1,
225  gnsstk.TrackingCode.CA, gnsstk.NavType.GPSLNAV)
226  navLib.edit(gnsstk.GPSWeekSecond(0,0).toCommonTime(),
227  gnsstk.GPSWeekSecond(1854,28700).toCommonTime(), sig)
228  self.assertEqual(343, ndf.size())
229 
231  navLib = gnsstk.NavLibrary()
233  navLib.addFactory(ndf)
234  ndf.addDataSource(args.input_dir+'/arlm2000.15n')
235  satid = gnsstk.SatID(23,gnsstk.SatelliteSystem.GPS)
236  sat1 = gnsstk.NavSatelliteID(satid)
237  satset = navLib.getAvailableSats(gnsstk.CommonTime.BEGINNING_OF_TIME,
238  gnsstk.CommonTime.END_OF_TIME)
239  self.assertEqual(33, len(satset))
240  t1 = gnsstk.CivilTime(2020,4,12,0,56,0,gnsstk.TimeSystem.GPS).toCommonTime()
241  t2 = gnsstk.CivilTime(2020,4,12,0,57,0,gnsstk.TimeSystem.GPS).toCommonTime()
242  satset = navLib.getAvailableSats(t1, t2)
243  self.assertEqual(0, len(satset))
244 
245  def test_isPresent(self):
246  navLib = gnsstk.NavLibrary()
248  navLib.addFactory(ndf)
249  ndf.addDataSource(args.input_dir+'/arlm2000.15n')
250  satid = gnsstk.SatID(23,gnsstk.SatelliteSystem.GPS)
251  sat1 = gnsstk.NavSatelliteID(satid)
252  nmid1e = gnsstk.NavMessageID(sat1, gnsstk.NavMessageType.Ephemeris)
253  nmid1a = gnsstk.NavMessageID(sat1, gnsstk.NavMessageType.Almanac)
254  t1 = gnsstk.CivilTime(2015,7,19,10,0,0,gnsstk.TimeSystem.GPS).toCommonTime()
255  t2 = gnsstk.CivilTime(2015,7,19,11,0,0,gnsstk.TimeSystem.GPS).toCommonTime()
256  rv = navLib.isPresent(nmid1e, t1, t2)
257  self.assertEqual(True, rv)
258  rv = navLib.isPresent(nmid1a, t1, t2)
259  self.assertEqual(False, rv)
260 
262  navLib = gnsstk.NavLibrary()
264  navLib.addFactory(ndf)
265  ndf.addDataSource(args.input_dir+'/arlm2000.15n')
266  satid = gnsstk.SatID(23,gnsstk.SatelliteSystem.GPS)
267  sat1 = gnsstk.NavSatelliteID(satid)
268  t1 = gnsstk.CivilTime(2015,7,19,10,0,0,gnsstk.TimeSystem.GPS).toCommonTime()
269  t2 = gnsstk.CivilTime(2015,7,19,11,0,0,gnsstk.TimeSystem.GPS).toCommonTime()
270  rv = navLib.isTypePresent(gnsstk.NavMessageType.Ephemeris, sat1, t1, t2)
271  self.assertEqual(True, rv)
272  rv = navLib.isTypePresent(gnsstk.NavMessageType.Almanac, sat1, t1, t2)
273  self.assertEqual(False, rv)
274 
275 if __name__ == '__main__':
gnsstk::NavMessageTypeSet
std::set< NavMessageType > NavMessageTypeSet
Set of message types, used by NavLibrary and NavDataFactory.
Definition: NavMessageType.hpp:76
gnsstk::NavMessageID
Class used to identify/categorize navigation message data.
Definition: NavMessageID.hpp:52
tests.test_NavLibrary.TestNavLibrary.test_editClear
def test_editClear(self)
Definition: test_NavLibrary.py:192
tests.test_NavLibrary.TestNavLibrary.test_getXvt
def test_getXvt(self)
Definition: test_NavLibrary.py:10
gnsstk::NavSatelliteID
Definition: NavSatelliteID.hpp:57
gnsstk::SatID
Definition: SatID.hpp:89
gnsstk::GPSWeekSecond
Definition: GPSWeekSecond.hpp:56
tests.test_NavLibrary.TestNavLibrary.test_getHealth
def test_getHealth(self)
Definition: test_NavLibrary.py:49
tests.test_NavLibrary.TestNavLibrary.test_getOffset
def test_getOffset(self)
Definition: test_NavLibrary.py:79
tests.test_NavLibrary.TestNavLibrary.test_getAvailableSats
def test_getAvailableSats(self)
Definition: test_NavLibrary.py:230
gnsstk::NavLibrary
Definition: NavLibrary.hpp:944
tests.test_NavLibrary.TestNavLibrary.test_setValidityFilter
def test_setValidityFilter(self)
Definition: test_NavLibrary.py:135
tests.test_NavLibrary.TestNavLibrary.test_isPresent
def test_isPresent(self)
Definition: test_NavLibrary.py:245
gnsstk::Xvt
Definition: Xvt.hpp:60
gnsstk::CivilTime
Definition: CivilTime.hpp:55
tests.test_NavLibrary.TestNavLibrary.test_getTime
def test_getTime(self)
Definition: test_NavLibrary.py:180
gnsstk::NavSignalID
Class used to identify navigation data signal types.
Definition: NavSignalID.hpp:54
gnsstk::RinexNavDataFactory
Definition: RinexNavDataFactory.hpp:57
tests.test_NavLibrary.TestNavLibrary.test_addTypeFilter
def test_addTypeFilter(self)
Definition: test_NavLibrary.py:156
tests.test_NavLibrary.TestNavLibrary.test_setTypeFilter
def test_setTypeFilter(self)
Definition: test_NavLibrary.py:142
tests.test_NavLibrary.TestNavLibrary.test_find
def test_find(self)
Definition: test_NavLibrary.py:96
tests.test_NavLibrary.TestNavLibrary.test_isTypePresent
def test_isTypePresent(self)
Definition: test_NavLibrary.py:261
test_utils.run_unit_tests
def run_unit_tests()
Definition: test_utils.py:51
tests.test_NavLibrary.TestNavLibrary
Definition: test_NavLibrary.py:9


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