File size: 1,966 Bytes
e81ad8d
 
e36a82b
 
 
 
 
 
e81ad8d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e36a82b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
65
66
67
68
69
70
71
72
73
74
75
76
77
import pandas as pd

from utils.kml_creator import (
    generate_kml_from_df,
    generate_site_kml_from_df,
    kml_color_to_rgba,
    sector_polygon_coordinates,
)


def test_generate_kml_from_df_formats_integer_like_site_codes_without_decimal():
    df = pd.DataFrame(
        [
            {
                "code": 694.0,
                "name": "694_TEST",
                "Longitude": -7.1,
                "Latitude": 12.3,
                "Azimut": 30,
                "Hauteur": 40,
                "band": "G900",
                "color": "7fff0000",
                "size": 100,
            }
        ]
    )

    kml_text = generate_kml_from_df(df).getvalue().decode("utf-8")

    assert "<name>694</name>" in kml_text
    assert "<name>694.0</name>" not in kml_text


def test_sector_polygon_coordinates_closes_polygon():
    row = {
        "Longitude": -7.1,
        "Latitude": 12.3,
        "Azimut": 90,
        "size": 100,
    }

    coords = sector_polygon_coordinates(row)

    assert len(coords) == 22
    assert coords[0] == (-7.1, 12.3)
    assert coords[-1] == coords[0]


def test_kml_color_to_rgba_converts_aabbggrr():
    assert kml_color_to_rgba("7f0000ff") == [255, 0, 0, 127]
    assert kml_color_to_rgba("bad") == [31, 119, 180, 127]


def test_generate_site_kml_from_df_exports_site_points_and_metadata():
    df = pd.DataFrame(
        [
            {
                "site": "S001",
                "lat": 12.3,
                "lon": -7.1,
                "region": "North",
            }
        ]
    )

    icon_href = "http://maps.google.com/mapfiles/kml/shapes/star.png"
    kml_text = (
        generate_site_kml_from_df(df, "site", "lat", "lon", icon_href=icon_href)
        .getvalue()
        .decode("utf-8")
    )

    assert "<name>S001</name>" in kml_text
    assert f"<href>{icon_href}</href>" in kml_text
    assert "&lt;b&gt;region:&lt;/b&gt; North&lt;br&gt;" in kml_text
    assert "-7.1,12.3,0.0" in kml_text