2016-02-28 11:11:16 +00:00
|
|
|
import unittest
|
2016-09-23 21:49:56 +00:00
|
|
|
from datetime import date, time, datetime
|
2016-02-28 11:11:16 +00:00
|
|
|
|
2016-09-01 11:01:44 +00:00
|
|
|
from ogn.parser.utils import parseAngle, createTimestamp
|
2016-02-28 11:11:16 +00:00
|
|
|
from ogn.parser.exceptions import AmbigousTimeError
|
|
|
|
|
|
|
|
|
|
|
|
class TestStringMethods(unittest.TestCase):
|
2016-09-01 11:01:44 +00:00
|
|
|
def test_parseAngle(self):
|
|
|
|
self.assertAlmostEqual(parseAngle('05048.30'), 50.805, 5)
|
2016-02-28 11:11:16 +00:00
|
|
|
|
2016-03-09 11:02:03 +00:00
|
|
|
def test_createTimestamp(self):
|
|
|
|
test_data = [
|
2016-09-23 21:49:56 +00:00
|
|
|
('000001', date(2015, 1, 10), time(0, 0, 1), datetime(2015, 1, 10, 0, 0, 1)), # packet from current day (on the tick)
|
|
|
|
('235959', date(2015, 1, 10), time(0, 0, 1), datetime(2015, 1, 9, 23, 59, 59)), # packet from previous day (2 seconds old)
|
|
|
|
('110000', date(2015, 1, 10), time(0, 0, 1), None), # packet 11 hours from future or 13 hours old
|
|
|
|
('123500', date(2015, 1, 10), time(23, 50, 0), datetime(2015, 1, 10, 12, 35, 0)), # packet from current day (11 hours old)
|
|
|
|
('000001', date(2015, 1, 10), time(23, 50, 0), datetime(2015, 1, 11, 0, 0, 1)), # packet from next day (11 minutes from future)
|
|
|
|
('000001', date(2015, 1, 10), None, datetime(2015, 1, 10, 0, 0, 1)), # first packet of a specific day
|
|
|
|
('235959', date(2015, 1, 10), None, datetime(2015, 1, 10, 23, 59, 59)), # last packet of a specific day
|
2016-03-09 11:02:03 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
for test in test_data:
|
2016-09-23 21:49:56 +00:00
|
|
|
if test[3]:
|
|
|
|
timestamp = createTimestamp(test[0], reference_date=test[1], reference_time=test[2])
|
|
|
|
self.assertEqual(timestamp, test[3])
|
2016-03-09 11:02:03 +00:00
|
|
|
else:
|
|
|
|
with self.assertRaises(AmbigousTimeError):
|
2016-09-23 21:49:56 +00:00
|
|
|
createTimestamp(test[0], reference_date=test[1], reference_time=test[2])
|
2016-02-28 11:11:16 +00:00
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
unittest.main()
|