2016-02-28 11:11:16 +00:00
|
|
|
import unittest
|
2020-09-11 18:16:10 +00:00
|
|
|
from datetime import datetime, timezone
|
2016-02-28 11:11:16 +00:00
|
|
|
|
2020-10-13 20:21:16 +00:00
|
|
|
from ogn.parser.utils import parseAngle, createTimestamp, CheapRuler, normalized_quality
|
2016-02-28 11:11:16 +00:00
|
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
2017-10-01 12:29:45 +00:00
|
|
|
def proceed_test_data(self, test_data={}):
|
2016-03-09 11:02:03 +00:00
|
|
|
for test in test_data:
|
2018-05-01 09:21:28 +00:00
|
|
|
timestamp = createTimestamp(test[0], reference_timestamp=test[1])
|
|
|
|
self.assertEqual(timestamp, test[2])
|
2016-02-28 11:11:16 +00:00
|
|
|
|
2017-09-30 16:25:02 +00:00
|
|
|
def test_createTimestamp_hhmmss(self):
|
|
|
|
test_data = [
|
2018-05-01 09:21:28 +00:00
|
|
|
('000001h', datetime(2015, 1, 10, 0, 0, 1), datetime(2015, 1, 10, 0, 0, 1)), # packet from current day (on the tick)
|
|
|
|
('235959h', datetime(2015, 1, 10, 0, 0, 1), datetime(2015, 1, 9, 23, 59, 59)), # packet from previous day (2 seconds old)
|
|
|
|
('110000h', datetime(2015, 1, 10, 0, 0, 1), datetime(2015, 1, 10, 11, 0, 0)), # packet 11 hours from future or 13 hours old
|
|
|
|
('123500h', datetime(2015, 1, 10, 23, 50, 0), datetime(2015, 1, 10, 12, 35, 0)), # packet from current day (11 hours old)
|
|
|
|
('000001h', datetime(2015, 1, 10, 23, 50, 0), datetime(2015, 1, 11, 0, 0, 1)), # packet from next day (11 minutes from future)
|
2017-09-30 16:25:02 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
self.proceed_test_data(test_data)
|
|
|
|
|
|
|
|
def test_createTimestamp_ddhhmm(self):
|
|
|
|
test_data = [
|
2018-05-01 09:21:28 +00:00
|
|
|
('011212z', datetime(2017, 9, 28, 0, 0, 1), datetime(2017, 10, 1, 12, 12, 0)), # packet from 1st of month, received on september 28th,
|
|
|
|
('281313z', datetime(2017, 10, 1, 0, 0, 1), datetime(2017, 9, 28, 13, 13, 0)), # packet from 28th of month, received on october 1st,
|
|
|
|
('281414z', datetime(2017, 1, 1, 0, 0, 1), datetime(2016, 12, 28, 14, 14, 0)), # packet from 28th of month, received on january 1st,
|
2017-09-30 16:25:02 +00:00
|
|
|
]
|
|
|
|
|
|
|
|
self.proceed_test_data(test_data)
|
|
|
|
|
2020-09-11 18:16:10 +00:00
|
|
|
def test_createTimestamp_tzinfo(self):
|
|
|
|
test_data = [
|
|
|
|
('000001h', datetime(2020, 9, 10, 0, 0, 1, tzinfo=timezone.utc), (datetime(2020, 9, 10, 0, 0, 1, tzinfo=timezone.utc)))
|
|
|
|
]
|
|
|
|
|
|
|
|
self.proceed_test_data(test_data)
|
|
|
|
|
2020-10-12 17:59:41 +00:00
|
|
|
def test_cheap_ruler_distance(self):
|
2020-10-10 19:37:35 +00:00
|
|
|
koenigsdf = (11.465353, 47.829825)
|
|
|
|
hochkoenig = (13.062405, 47.420516)
|
|
|
|
|
|
|
|
cheap_ruler = CheapRuler((koenigsdf[1] + hochkoenig[1]) / 2)
|
|
|
|
distance = cheap_ruler.distance(koenigsdf, hochkoenig)
|
2020-10-11 12:52:27 +00:00
|
|
|
self.assertAlmostEqual(distance, 128381.47612138899)
|
2020-10-10 19:37:35 +00:00
|
|
|
|
2020-10-12 17:59:41 +00:00
|
|
|
def test_cheap_ruler_bearing(self):
|
|
|
|
koenigsdf = (11.465353, 47.829825)
|
|
|
|
hochkoenig = (13.062405, 47.420516)
|
|
|
|
|
|
|
|
cheap_ruler = CheapRuler((koenigsdf[1] + hochkoenig[1]) / 2)
|
|
|
|
bearing = cheap_ruler.bearing(koenigsdf, hochkoenig)
|
|
|
|
self.assertAlmostEqual(bearing, 110.761300063515)
|
|
|
|
|
2020-10-13 20:21:16 +00:00
|
|
|
def test_normalized_quality(self):
|
|
|
|
self.assertAlmostEqual(normalized_quality(10000, 1), 1)
|
|
|
|
self.assertAlmostEqual(normalized_quality(20000, 10), 16.020599913279625)
|
|
|
|
self.assertAlmostEqual(normalized_quality(5000, 5), -1.0205999132796242)
|
|
|
|
|
2017-06-05 08:07:04 +00:00
|
|
|
|
2016-02-28 11:11:16 +00:00
|
|
|
if __name__ == '__main__':
|
|
|
|
unittest.main()
|