kopia lustrzana https://github.com/glidernet/python-ogn-client
45 wiersze
2.1 KiB
Python
45 wiersze
2.1 KiB
Python
import unittest
|
|
|
|
from ogn.parser.utils import ms2fpm
|
|
from ogn.parser.parse import parse_aprs, parse_ogn_aircraft_beacon
|
|
|
|
|
|
class TestStringMethods(unittest.TestCase):
|
|
def test_basic(self):
|
|
message = parse_aprs("NAV042121>OGNAVI,qAS,NAVITER:/140648h4550.36N/01314.85E'090/152/A=001086 !W47! id0440042121 +000fpm +0.5rot")
|
|
self.assertEqual(message['name'], "NAV042121")
|
|
self.assertEqual(message['dstcall'], "OGNAVI")
|
|
self.assertEqual(message['receiver_name'], "NAVITER")
|
|
# ... APRS format is tested enough
|
|
self.assertEqual(message['comment'], "id0440042121 +000fpm +0.5rot")
|
|
|
|
naviter_message = parse_ogn_aircraft_beacon(message['comment'], dstcall=message['dstcall'])
|
|
# NAVITER specific values
|
|
# id0440042121 == 0b0000 0100 0100 0000 0000 0100 0010 0001 0010 0001
|
|
# bit 0: stealth mode
|
|
# bit 1: do not track mode
|
|
# bits 2-5: aircraft type
|
|
# bits 6-11: address type (namespace is extended from 2 to 6 bits to avoid collisions with other tracking providers)
|
|
# bits 12-15: reserved for use at a later time
|
|
# bits 16-39: device id (24-bit device identifier, same as in APRS header)
|
|
self.assertEqual(naviter_message['stealth'], False)
|
|
self.assertEqual(naviter_message['do_not_track'], False)
|
|
self.assertEqual(naviter_message['aircraft_type'], 1)
|
|
self.assertEqual(naviter_message['address_type'], 4)
|
|
self.assertEqual(naviter_message['reserved'], 0)
|
|
self.assertEqual(naviter_message['address'], "042121")
|
|
|
|
self.assertAlmostEqual(naviter_message['climb_rate'] * ms2fpm, 0, 2)
|
|
self.assertEqual(naviter_message['turn_rate'], 0.5)
|
|
|
|
def test_relayed(self):
|
|
message = parse_aprs("FLRFFFFFF>OGNAVI,NAVABCDEF*,qAS,NAVITER:/092002h1000.00S/01000.00W'000/000/A=003281 !W00! id2820FFFFFF +300fpm +1.7rot")
|
|
|
|
self.assertEqual(message['name'], "FLRFFFFFF")
|
|
self.assertEqual(message['dstcall'], "OGNAVI")
|
|
self.assertEqual(message['relay_id'], "NAVABCDEF")
|
|
self.assertEqual(message['receiver_name'], "NAVITER")
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|