python-ogn-client/tests/parser/test_parse_ogn_aircraft.py

71 wiersze
3.1 KiB
Python
Czysty Zwykły widok Historia

import unittest
from ogn.parser.utils import FPM_TO_MS, HPM_TO_DEGS
2017-10-05 08:36:53 +00:00
from ogn.parser.aprs_comment.ogn_parser import OgnParser
class TestStringMethods(unittest.TestCase):
def test_invalid_token(self):
2019-06-03 19:09:57 +00:00
self.assertEqual(OgnParser().parse_aircraft_beacon("notAValidToken"), None)
def test_basic(self):
2019-06-03 19:09:57 +00:00
message = OgnParser().parse_aircraft_beacon("id0ADDA5BA -454fpm -1.1rot 8.8dB 0e +51.2kHz gps4x5 hear1084 hearB597 hearB598")
2017-10-02 16:09:06 +00:00
self.assertEqual(message['address_type'], 2)
self.assertEqual(message['aircraft_type'], 2)
self.assertFalse(message['stealth'])
self.assertEqual(message['address'], "DDA5BA")
2018-04-30 19:00:08 +00:00
self.assertAlmostEqual(message['climb_rate'], -454 * FPM_TO_MS, 2)
self.assertEqual(message['turn_rate'], -1.1 * HPM_TO_DEGS)
2017-10-02 16:09:06 +00:00
self.assertEqual(message['signal_quality'], 8.8)
self.assertEqual(message['error_count'], 0)
self.assertEqual(message['frequency_offset'], 51.2)
2018-04-20 21:57:51 +00:00
self.assertEqual(message['gps_quality'], {'horizontal': 4, 'vertical': 5})
2017-10-02 16:09:06 +00:00
self.assertEqual(len(message['proximity']), 3)
self.assertEqual(message['proximity'][0], '1084')
self.assertEqual(message['proximity'][1], 'B597')
self.assertEqual(message['proximity'][2], 'B598')
def test_stealth(self):
2019-06-03 19:09:57 +00:00
message = OgnParser().parse_aircraft_beacon("id0ADD1234 -454fpm -1.1rot 8.8dB 0e +51.2kHz gps4x5 hear1084 hearB597 hearB598")
2017-10-02 16:09:06 +00:00
self.assertFalse(message['stealth'])
2019-06-03 19:09:57 +00:00
message = OgnParser().parse_aircraft_beacon("id8ADD1234 -454fpm -1.1rot 8.8dB 0e +51.2kHz gps4x5 hear1084 hearB597 hearB598")
2017-10-02 16:09:06 +00:00
self.assertTrue(message['stealth'])
def test_v024(self):
2019-06-03 19:09:57 +00:00
message = OgnParser().parse_aircraft_beacon("id21400EA9 -2454fpm +0.9rot 19.5dB 0e -6.6kHz gps1x1 s6.02 h0A rDF0C56")
2017-10-02 16:09:06 +00:00
self.assertEqual(message['software_version'], 6.02)
self.assertEqual(message['hardware_version'], 10)
self.assertEqual(message['real_address'], "DF0C56")
def test_v024_ogn_tracker(self):
2019-06-03 19:09:57 +00:00
message = OgnParser().parse_aircraft_beacon("id07353800 +020fpm -14.0rot FL004.43 38.5dB 0e -2.9kHz")
2017-10-02 16:09:06 +00:00
self.assertEqual(message['flightlevel'], 4.43)
def test_v025(self):
2019-06-03 19:09:57 +00:00
message = OgnParser().parse_aircraft_beacon("id06DDE28D +535fpm +3.8rot 11.5dB 0e -1.0kHz gps2x3 s6.01 h0C +7.4dBm")
2017-10-02 16:09:06 +00:00
self.assertEqual(message['signal_power'], 7.4)
2017-05-07 09:32:15 +00:00
def test_v026(self):
# from 0.2.6 it is sufficent we have only the ID, climb and turn rate or just the ID
2019-06-03 19:09:57 +00:00
message_triple = OgnParser().parse_aircraft_beacon("id093D0930 +000fpm +0.0rot")
message_single = OgnParser().parse_aircraft_beacon("id093D0930")
2017-05-07 09:32:15 +00:00
2017-10-02 16:09:06 +00:00
self.assertIsNotNone(message_triple)
self.assertIsNotNone(message_single)
2020-08-30 12:23:23 +00:00
def test_relevant_keys_only(self):
# return only keys where we got informations
message = OgnParser().parse_aircraft_beacon("id093D0930")
self.assertIsNotNone(message)
self.assertEqual(sorted(message.keys()), sorted(['address_type', 'aircraft_type', 'stealth', 'address']))
2017-06-05 08:07:04 +00:00
if __name__ == '__main__':
unittest.main()