separate cleanly cython and python, bds05, bds06, modulo issues
This commit is contained in:
95
tests/test_c_adsb.py
Normal file
95
tests/test_c_adsb.py
Normal file
@@ -0,0 +1,95 @@
|
||||
from pyModeS.c_decoder import adsb
|
||||
|
||||
# === TEST ADS-B package ===
|
||||
|
||||
|
||||
def test_adsb_icao():
|
||||
assert adsb.icao(b"8D406B902015A678D4D220AA4BDA") == "406B90"
|
||||
|
||||
|
||||
def test_adsb_category():
|
||||
assert adsb.category(b"8D406B902015A678D4D220AA4BDA") == 0
|
||||
|
||||
|
||||
def test_adsb_callsign():
|
||||
assert adsb.callsign(b"8D406B902015A678D4D220AA4BDA") == "EZY85MH_"
|
||||
|
||||
|
||||
def test_adsb_position():
|
||||
pos = adsb.position(
|
||||
b"8D40058B58C901375147EFD09357",
|
||||
b"8D40058B58C904A87F402D3B8C59",
|
||||
1446332400,
|
||||
1446332405,
|
||||
)
|
||||
assert pos == (49.81755, 6.08442)
|
||||
|
||||
|
||||
def test_adsb_position_swap_odd_even():
|
||||
pos = adsb.position(
|
||||
b"8D40058B58C904A87F402D3B8C59",
|
||||
b"8D40058B58C901375147EFD09357",
|
||||
1446332405,
|
||||
1446332400,
|
||||
)
|
||||
assert pos == (49.81755, 6.08442)
|
||||
|
||||
|
||||
def test_adsb_position_with_ref():
|
||||
pos = adsb.position_with_ref(b"8D40058B58C901375147EFD09357", 49.0, 6.0)
|
||||
assert pos == (49.82410, 6.06785)
|
||||
pos = adsb.position_with_ref(b"8FC8200A3AB8F5F893096B000000", -43.5, 172.5)
|
||||
assert pos == (-43.48564, 172.53942)
|
||||
|
||||
|
||||
def test_adsb_airborne_position_with_ref():
|
||||
pos = adsb.airborne_position_with_ref(b"8D40058B58C901375147EFD09357", 49.0, 6.0)
|
||||
assert pos == (49.82410, 6.06785)
|
||||
pos = adsb.airborne_position_with_ref(b"8D40058B58C904A87F402D3B8C59", 49.0, 6.0)
|
||||
assert pos == (49.81755, 6.08442)
|
||||
|
||||
|
||||
def test_adsb_surface_position_with_ref():
|
||||
pos = adsb.surface_position_with_ref(b"8FC8200A3AB8F5F893096B000000", -43.5, 172.5)
|
||||
assert pos == (-43.48564, 172.53942)
|
||||
|
||||
|
||||
def test_adsb_surface_position():
|
||||
pos = adsb.surface_position(
|
||||
b"8CC8200A3AC8F009BCDEF2000000",
|
||||
b"8FC8200A3AB8F5F893096B000000",
|
||||
0,
|
||||
2,
|
||||
-43.496,
|
||||
172.558,
|
||||
)
|
||||
assert pos == (-43.48564, 172.53942)
|
||||
|
||||
|
||||
def test_adsb_alt():
|
||||
assert adsb.altitude(b"8D40058B58C901375147EFD09357") == 39000
|
||||
|
||||
|
||||
def test_adsb_velocity():
|
||||
vgs = adsb.velocity(b"8D485020994409940838175B284F")
|
||||
vas = adsb.velocity(b"8DA05F219B06B6AF189400CBC33F")
|
||||
vgs_surface = adsb.velocity(b"8FC8200A3AB8F5F893096B000000")
|
||||
assert vgs == (159, 182.88, -832, "GS")
|
||||
assert vas == (375, 243.98, -2304, "TAS")
|
||||
assert vgs_surface == (19.0, 42.2, 0, "GS")
|
||||
assert adsb.altitude_diff(b"8D485020994409940838175B284F") == 550
|
||||
|
||||
|
||||
# def test_nic():
|
||||
# assert adsb.nic('8D3C70A390AB11F55B8C57F65FE6') == 0
|
||||
# assert adsb.nic('8DE1C9738A4A430B427D219C8225') == 1
|
||||
# assert adsb.nic('8D44058880B50006B1773DC2A7E9') == 2
|
||||
# assert adsb.nic('8D44058881B50006B1773DC2A7E9') == 3
|
||||
# assert adsb.nic('8D4AB42A78000640000000FA0D0A') == 4
|
||||
# assert adsb.nic('8D4405887099F5D9772F37F86CB6') == 5
|
||||
# assert adsb.nic('8D4841A86841528E72D9B472DAC2') == 6
|
||||
# assert adsb.nic('8D44057560B9760C0B840A51C89F') == 7
|
||||
# assert adsb.nic('8D40621D58C382D690C8AC2863A7') == 8
|
||||
# assert adsb.nic('8F48511C598D04F12CCF82451642') == 9
|
||||
# assert adsb.nic('8DA4D53A50DBF8C6330F3B35458F') == 10
|
||||
# assert adsb.nic('8D3C4ACF4859F1736F8E8ADF4D67') == 11
|
||||
61
tests/test_c_common.py
Normal file
61
tests/test_c_common.py
Normal file
@@ -0,0 +1,61 @@
|
||||
from pyModeS.c_decoder import common
|
||||
|
||||
|
||||
def test_conversions():
|
||||
assert common.hex2bin(b"6E406B") == bytearray(b"011011100100000001101011")
|
||||
|
||||
|
||||
def test_crc_decode():
|
||||
|
||||
assert common.crc(b"8D406B902015A678D4D220AA4BDA") == 0
|
||||
assert common.crc(b"8d8960ed58bf053cf11bc5932b7d") == 0
|
||||
assert common.crc(b"8d45cab390c39509496ca9a32912") == 0
|
||||
assert common.crc(b"8d49d3d4e1089d00000000744c3b") == 0
|
||||
assert common.crc(b"8d74802958c904e6ef4ba0184d5c") == 0
|
||||
assert common.crc(b"8d4400cd9b0000b4f87000e71a10") == 0
|
||||
assert common.crc(b"8d4065de58a1054a7ef0218e226a") == 0
|
||||
|
||||
assert common.crc(b"c80b2dca34aa21dd821a04cb64d4") == 10719924
|
||||
assert common.crc(b"a800089d8094e33a6004e4b8a522") == 4805588
|
||||
assert common.crc(b"a8000614a50b6d32bed000bbe0ed") == 5659991
|
||||
assert common.crc(b"a0000410bc900010a40000f5f477") == 11727682
|
||||
assert common.crc(b"8d4ca251204994b1c36e60a5343d") == 16
|
||||
assert common.crc(b"b0001718c65632b0a82040715b65") == 353333
|
||||
|
||||
|
||||
def test_crc_encode():
|
||||
parity = common.crc(b"8D406B902015A678D4D220AA4BDA", encode=True)
|
||||
assert parity == 11160538
|
||||
|
||||
|
||||
def test_icao():
|
||||
assert common.icao(b"8D406B902015A678D4D220AA4BDA") == "406B90"
|
||||
assert common.icao(b"A0001839CA3800315800007448D9") == "400940"
|
||||
assert common.icao(b"A000139381951536E024D4CCF6B5") == "3C4DD2"
|
||||
assert common.icao(b"A000029CFFBAA11E2004727281F1") == "4243D0"
|
||||
|
||||
|
||||
def test_modes_altcode():
|
||||
assert common.altcode(b"A02014B400000000000000F9D514") == 32300
|
||||
|
||||
|
||||
def test_modes_idcode():
|
||||
assert common.idcode(b"A800292DFFBBA9383FFCEB903D01") == "1346"
|
||||
|
||||
|
||||
def test_graycode_to_altitude():
|
||||
assert common.gray2alt(bytearray(b"00000000010")) == -1000
|
||||
assert common.gray2alt(bytearray(b"00000001010")) == -500
|
||||
assert common.gray2alt(bytearray(b"00000011011")) == -100
|
||||
assert common.gray2alt(bytearray(b"00000011010")) == 0
|
||||
assert common.gray2alt(bytearray(b"00000011110")) == 100
|
||||
assert common.gray2alt(bytearray(b"00000010011")) == 600
|
||||
assert common.gray2alt(bytearray(b"00000110010")) == 1000
|
||||
assert common.gray2alt(bytearray(b"00001001001")) == 5800
|
||||
assert common.gray2alt(bytearray(b"00011100100")) == 10300
|
||||
assert common.gray2alt(bytearray(b"01100011010")) == 32000
|
||||
assert common.gray2alt(bytearray(b"01110000100")) == 46300
|
||||
assert common.gray2alt(bytearray(b"01010101100")) == 50200
|
||||
assert common.gray2alt(bytearray(b"11011110100")) == 73200
|
||||
assert common.gray2alt(bytearray(b"10000000011")) == 126600
|
||||
assert common.gray2alt(bytearray(b"10000000001")) == 126700
|
||||
Reference in New Issue
Block a user