test_time.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 time
8 from gnsstk import CommonTime, SystemTime, CivilTime, BDSWeekSecond, GPSWeekSecond, GPSWeekZcount, TimeSystem
9 from gnsstk import JulianDate, MJD, UnixTime, YDSTime
10 import gnsstk
11 
12 class TestTimeHandling(unittest.TestCase):
13 
14  def test_TimeConstants(self):
15  a = gnsstk.MJD_TO_JD
16  b = gnsstk.FULLWEEK
17  c = gnsstk.SEC_PER_DAY
18  self.assertIsNotNone(a)
19  self.assertIsNotNone(b)
20  self.assertIsNotNone(c)
21 
22  def test_CommonTime(self):
23  a = gnsstk.CommonTime(gnsstk.TimeSystem.GPS)
24  self.assertIsInstance(a, gnsstk.CommonTime)
25  self.assertEqual(str(a.getTimeSystem()), "GPS")
26 
27  def test_ANSITime(self):
28  a = gnsstk.ANSITime()
29  self.assertIsInstance(a, gnsstk.ANSITime)
30 
31 class TestSystemTime(unittest.TestCase):
32  def test_SystemTime(self):
33  t0 = SystemTime()
34  self.assertIsInstance(t0, gnsstk.SystemTime)
35 
36 class TestTimeTags(unittest.TestCase):
37  def test_CivilTime(self):
38  t0 = CivilTime(1980, 1, 6, 0, 0, 0, TimeSystem.GPS)
39  self.assertEqual(str(t0), '01/06/1980 00:00:00 GPS')
40  ct = t0.toCommonTime()
41  self.assertEqual(str(ct), '2444245 00000000 0.000000000000000 GPS')
42  t1 = CivilTime(ct)
43  self.assertEqual(str(t1), str(t0))
44 
45  def test_BDSWeekSecond(self):
46  t0 = BDSWeekSecond( 0, 0)
47  self.assertEqual(str(t0), "0 0.000000 BDT")
48  t1 = CivilTime(t0.toCommonTime())
49  self.assertEqual(str(t1), "01/01/2006 00:00:00 BDT")
50  t2 = BDSWeekSecond(t1.toCommonTime())
51  self.assertEqual(str(t2), str(t0))
52 
53  def test_GPSWeekSecond(self):
54  t0 = GPSWeekSecond(1023, 86400*7-1)
55  self.assertEqual(str(t0), "1023 604799.000000 GPS")
56  t1 = GPSWeekSecond(t0.toCommonTime())
57  self.assertEqual(str(t1), "1023 604799.000000 GPS")
58  t3 = GPSWeekSecond(t0.toCommonTime()+1)
59  self.assertEqual(str(t3), "1024 0.000000 GPS")
60  t4 = CivilTime(t3.toCommonTime())
61  self.assertEqual(str(t4), "08/22/1999 00:00:00 GPS")
62 
63  def test_GPSWeekZcount(self):
64  t0 = GPSWeekZcount(1023, (2*86400//3)*7-1)
65  self.assertEqual(str(t0), "1023 403199 GPS")
66  t1 = GPSWeekZcount(t0.toCommonTime())
67  self.assertEqual(str(t1), "1023 403199 GPS")
68  t2 = GPSWeekZcount(t0.toCommonTime()+1.5)
69  self.assertEqual(str(t2), "1024 000000 GPS")
70  t3 = CivilTime(t2.toCommonTime())
71  self.assertEqual(str(t3), "08/22/1999 00:00:00 GPS")
72 
73  def test_JulianDate(self):
74  t0 = JulianDate(0.0)
75  self.assertEqual(str(t0), "0.000000 UNK")
76  t1 = CivilTime(t0.toCommonTime())
77  # See http://aa.usno.navy.mil/data/docs/JulianDate.php
78  self.assertEqual(str(t1), "01/01/-4713 12:00:00 UNK")
79  t2 = JulianDate(2444244.5)
80  t3 = CivilTime(t2.toCommonTime())
81  self.assertEqual(str(t3), "01/06/1980 00:00:00 UNK")
82 
83  def test_MJD(self):
84  t0 = MJD(50449)
85  t1 = CivilTime(t0.toCommonTime())
86  self.assertEqual(str(t1), "01/01/1997 00:00:00 UNK")
87 
88  def test_UnixTime(self):
89  t0 = UnixTime(315964800)
90  t1 = CivilTime(t0.toCommonTime())
91  self.assertEqual(str(t1), "01/06/1980 00:00:00 UNK")
92  t2 = CivilTime(2038, 1, 19, 3, 14, 7.999999)
93  t3 = UnixTime(t2.toCommonTime())
94  self.assertEqual(str(t3), "2147483647 999999 UNK")
95 
96  def test_YDSTime(self):
97  t0 = YDSTime(1980, 6, 0.0)
98  t1 = CivilTime(t0.toCommonTime())
99  self.assertEqual(str(t1), "01/06/1980 00:00:00 UNK")
100 
101 class CommonTime_Tests(unittest.TestCase):
102  def test(self):
103  a = gnsstk.CommonTime()
104  a.addDays(1234)
105  b = gnsstk.CommonTime(a)
106  b.addSeconds(123.4)
107  c = b - a
108  self.assertAlmostEqual(1234.0, a.getDays())
109  self.assertEqual('0001234 00000000 0.000000000000000 UNK', str(a))
110  self.assertAlmostEqual(1234.0014282407408, b.getDays())
111  self.assertEqual('0001234 00123400 0.000000000000000 UNK', str(b))
112  self.assertAlmostEqual(123.4, c)
113  self.assertEqual(gnsstk.TimeSystem.Unknown, b.getTimeSystem())
114  self.assertEqual(str(b.getTimeSystem()), 'Unknown', msg='default time system should be Unknown')
115 
116  def test_exception(self):
117  # subtracting 2 CommonTimes throws an InvalidRequest
118  a = gnsstk.CommonTime(gnsstk.TimeSystem.GPS)
119  b = gnsstk.CommonTime(gnsstk.TimeSystem.GLO)
120  self.assertRaises(gnsstk.InvalidRequest, a.__sub__, b)
121  self.assertEqual(str(a.getTimeSystem()), 'GPS', msg='TimeSystem enum should properly cast to string.')
122  self.assertEqual(str(b.getTimeSystem()), 'GLO', msg='TimeSystem enum should properly cast to string')
123 
124  def test_times_gen(self):
125  start = gnsstk.CommonTime()
126  start.addSeconds(100.0)
127  end = gnsstk.CommonTime()
128  end.addSeconds(900.0)
129  times = gnsstk.times(start, end, seconds=200.0)
130  self.assertEqual(100.0, next(times).getSecondOfDay())
131  self.assertEqual(300.0, next(times).getSecondOfDay())
132  self.assertEqual(500.0, next(times).getSecondOfDay())
133  self.assertEqual(700.0, next(times).getSecondOfDay())
134  self.assertEqual(900.0, next(times).getSecondOfDay())
135  if sys.version_info[0] < 3:
136  self.assertRaises(StopIteration, times.next)
137  else:
138  self.assertRaises(StopIteration, times.__next__)
139 
140  def test_times_list(self):
141  start = gnsstk.CommonTime()
142  start.addSeconds(100.0)
143  end = gnsstk.CommonTime()
144  end.addSeconds(900.0)
145  times = list(gnsstk.times(start, end, seconds=200.0))
146  self.assertEqual(100.0, times[0].getSecondOfDay())
147  self.assertEqual(300.0, times[1].getSecondOfDay())
148  self.assertEqual(500.0, times[2].getSecondOfDay())
149  self.assertEqual(700.0, times[3].getSecondOfDay())
150  self.assertEqual(900.0, times[4].getSecondOfDay())
151 
152  times = list(gnsstk.times(start, end))
153  self.assertEqual(2, len(times))
154  self.assertEqual(times[0], start)
155  self.assertEqual(times[1], end)
156 
157 
158 class ScanTimes(unittest.TestCase):
159  def test_scanTime(self):
160  def test(instr, fmt, expected='', raises=None):
161  if raises is not None:
162  self.assertRaises(raises, gnsstk.scanTime, instr, fmt)
163  else:
164  self.assertEqual(expected, str(gnsstk.scanTime(instr, fmt)))
165 
166  # ANSI
167  test('10000', '%K', '2440588 10000000 0.000000000000000 UNK')
168  test('100000000', '%x', raises=gnsstk.InvalidRequest) # bad format
169 
170 if __name__ == '__main__':
tests.test_time.TestTimeHandling.test_CommonTime
def test_CommonTime(self)
Definition: test_time.py:22
tests.test_time.TestTimeTags.test_YDSTime
def test_YDSTime(self)
Definition: test_time.py:96
gnsstk::YDSTime
Definition: YDSTime.hpp:58
tests.test_time.TestTimeTags
Definition: test_time.py:36
tests.test_time.TestTimeTags.test_BDSWeekSecond
def test_BDSWeekSecond(self)
Definition: test_time.py:45
gnsstk::scanTime
void scanTime(CommonTime &t, const std::string &str, const std::string &fmt)
tests.test_time.TestTimeTags.test_GPSWeekZcount
def test_GPSWeekZcount(self)
Definition: test_time.py:63
gnsstk::JulianDate
Definition: JulianDate.hpp:89
gnsstk::GPSWeekSecond
Definition: GPSWeekSecond.hpp:56
tests.test_time.CommonTime_Tests.test_times_list
def test_times_list(self)
Definition: test_time.py:140
tests.test_time.TestSystemTime
Definition: test_time.py:31
tests.test_time.TestTimeTags.test_MJD
def test_MJD(self)
Definition: test_time.py:83
tests.test_time.TestTimeHandling.test_TimeConstants
def test_TimeConstants(self)
Definition: test_time.py:14
tests.test_time.CommonTime_Tests
Definition: test_time.py:101
gnsstk::SystemTime
Definition: SystemTime.hpp:54
gnsstk::CommonTime
Definition: CommonTime.hpp:84
tests.test_time.TestTimeTags.test_JulianDate
def test_JulianDate(self)
Definition: test_time.py:73
tests.test_time.TestTimeTags.test_CivilTime
def test_CivilTime(self)
Definition: test_time.py:37
tests.test_time.TestTimeHandling.test_ANSITime
def test_ANSITime(self)
Definition: test_time.py:27
tests.test_time.TestTimeTags.test_UnixTime
def test_UnixTime(self)
Definition: test_time.py:88
gnsstk::UnixTime
Definition: UnixTime.hpp:67
gnsstk::GPSWeekZcount
Definition: GPSWeekZcount.hpp:55
gnsstk::CivilTime
Definition: CivilTime.hpp:55
tests.test_time.ScanTimes.test_scanTime
def test_scanTime(self)
Definition: test_time.py:159
gnsstk::ANSITime
Definition: ANSITime.hpp:56
tests.test_time.CommonTime_Tests.test_exception
def test_exception(self)
Definition: test_time.py:116
tests.test_time.TestTimeTags.test_GPSWeekSecond
def test_GPSWeekSecond(self)
Definition: test_time.py:53
tests.test_time.CommonTime_Tests.test_times_gen
def test_times_gen(self)
Definition: test_time.py:124
tests.test_time.TestSystemTime.test_SystemTime
def test_SystemTime(self)
Definition: test_time.py:32
gnsstk::MJD
Definition: MJD.hpp:54
gnsstk::BDSWeekSecond
Definition: BDSWeekSecond.hpp:56
tests.test_time.CommonTime_Tests.test
def test(self)
Definition: test_time.py:102
tests.test_time.TestTimeHandling
Definition: test_time.py:12
test_utils.run_unit_tests
def run_unit_tests()
Definition: test_utils.py:51
tests.test_time.ScanTimes
Definition: test_time.py:158


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