pyhamtools/test/test_locator_distances.py

65 lines
2.7 KiB
Python
Raw Permalink Normal View History

import pytest
from pyhamtools.locator import calculate_distance, calculate_distance_longpath, calculate_heading, calculate_heading_longpath
from pyhamtools.consts import LookupConventions as const
class Test_calculate_distance():
def test_calculate_distance_edge_cases(self):
2018-01-27 19:52:27 +01:00
assert calculate_distance("JN48QM", "JN48QM") == 0
assert calculate_distance("JN48", "JN48") == 0
assert abs(calculate_distance("AA00AA", "rr00xx") - 19009) < 1
2018-01-27 19:52:27 +01:00
def test_calculate_distance_normal_case(self):
assert abs(calculate_distance("JN48QM", "FN44AB") - 5965) < 1
assert abs(calculate_distance("FN44AB", "JN48QM") - 5965) < 1
assert abs(calculate_distance("JN48QM", "QF67BF") - 16467) < 1
assert abs(calculate_distance("JN48QM84", "QF67BF84") - 16467) < 1
assert abs(calculate_distance("JN48QM84", "QF67BF") - 16464) < 1
assert abs(calculate_distance("JN48QM84", "QF67") - 16506) < 1
assert abs(calculate_distance("JN48QM", "QF67") - 16508) < 1
assert abs(calculate_distance("JN48", "QF67") - 16535) < 1
def test_calculate_distance_invalid_inputs(self):
with pytest.raises(AttributeError):
calculate_distance(5, 12)
2018-01-27 19:52:27 +01:00
with pytest.raises(ValueError):
calculate_distance("XX0XX", "ZZ0Z")
2018-01-27 19:52:27 +01:00
def test_calculate_distance_longpath_normal_case(self):
2018-01-27 19:52:27 +01:00
assert abs(calculate_distance_longpath("JN48QM", "FN44AB") - 34042) < 1
assert abs(calculate_distance_longpath("JN48QM", "QF67bf") - 23541) < 1
2018-01-27 19:52:27 +01:00
def test_calculate_distance_longpath_edge_cases(self):
2018-01-27 19:52:27 +01:00
assert abs(calculate_distance_longpath("JN48QM", "JN48QM") - 40008) < 1
assert abs(calculate_distance_longpath("JN48QM", "AE15UU") - 20645) < 1 #ZL7 Chatham - almost antipods
2018-01-27 19:52:27 +01:00
class Test_calculate_heading():
def test_calculate_heading_normal_cases(self):
2018-01-27 19:52:27 +01:00
assert abs(calculate_heading("JN48QM", "FN44AB") - 298) < 1
assert abs(calculate_heading("FN44AB", "JN48QM") - 54) < 1
assert abs(calculate_heading("JN48QM", "QF67bf") - 74) < 1
assert abs(calculate_heading("QF67BF", "JN48QM") - 310) < 1
2018-01-27 19:52:27 +01:00
def test_calculate_heading_edge_cases(self):
2018-01-27 19:52:27 +01:00
assert abs(calculate_heading("JN48QM", "JN48QM") - 0 ) < 1
2018-01-27 19:52:27 +01:00
def test_calculate_heading_longpath(self):
2018-01-27 19:52:27 +01:00
assert abs(calculate_heading_longpath("JN48QM", "FN44AB") - 118) < 1
assert abs(calculate_heading_longpath("FN44AB", "JN48QM") - 234) < 1
assert abs(calculate_heading_longpath("JN48QM", "QF67BF") - 254) < 1
2018-01-27 19:52:27 +01:00
assert abs(calculate_heading_longpath("QF67BF", "JN48QM") - 130) < 1
def test_calculate_heading_longpath_edge_cases(self):
2018-01-27 19:52:27 +01:00
assert abs(calculate_heading_longpath("JN48QM", "JN48QM") - 180 ) < 1