File: test_locator_distances.py

package info (click to toggle)
pyhamtools 0.12.0-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 33,012 kB
  • sloc: xml: 307,301; python: 3,493; makefile: 152
file content (64 lines) | stat: -rw-r--r-- 2,757 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
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):

        assert calculate_distance("JN48QM", "JN48QM") == 0
        assert calculate_distance("JN48", "JN48") == 0
        assert abs(calculate_distance("AA00AA", "rr00xx") - 19009) < 1

    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)

        with pytest.raises(ValueError):
            calculate_distance("XX0XX", "ZZ0Z")

    def test_calculate_distance_longpath_normal_case(self):

        assert abs(calculate_distance_longpath("JN48QM", "FN44AB") - 34042) < 1
        assert abs(calculate_distance_longpath("JN48QM", "QF67bf") - 23541) < 1

    def test_calculate_distance_longpath_edge_cases(self):

        assert abs(calculate_distance_longpath("JN48QM", "JN48QM") - 40008) < 1
        assert abs(calculate_distance_longpath("JN48QM", "AE15UU") - 20645) < 1 #ZL7 Chatham - almost antipods


class Test_calculate_heading():

    def test_calculate_heading_normal_cases(self):

        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

    def test_calculate_heading_edge_cases(self):

        assert abs(calculate_heading("JN48QM", "JN48QM") - 0 ) < 1

    def test_calculate_heading_longpath(self):

        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
        assert abs(calculate_heading_longpath("QF67BF", "JN48QM") - 130) < 1

    def test_calculate_heading_longpath_edge_cases(self):

        assert abs(calculate_heading_longpath("JN48QM", "JN48QM") - 180 ) < 1