Ejemplo n.º 1
0
def test_read():
    with open(SIMPLE_CUPFILE) as f:
        waypoints = Reader().read(f)['waypoints']
        for i, waypoint in enumerate(waypoints):
            assert_waypoint(waypoint, WAYPOINTS[i][1])

    with open(CLOUD_CUPFILE) as f:
        waypoints = Reader().read(f)['waypoints']
Ejemplo n.º 2
0
def test_decode_longitude():
    assert_value(Reader().decode_longitude('00657.383E'), 6.956388888888889)
    assert_value(Reader().decode_longitude('09942.706W'), -99.71176666666662)

    with pytest.raises(ParserError):
        Reader().decode_longitude('-09942.706W')

    with pytest.raises(ParserError):
        Reader().decode_longitude('09942a706W')

    with pytest.raises(ParserError):
        Reader().decode_longitude('18142.706W')
Ejemplo n.º 3
0
def test_decode_latitude():
    assert_value(Reader().decode_latitude('5117.983N'), 51.29972222222222)
    assert_value(Reader().decode_latitude('3356.767S'), -33.94611111111111)

    with pytest.raises(ParserError):
        Reader().decode_latitude('9117.983N')

    with pytest.raises(ParserError):
        Reader().decode_latitude('9117.983S')

    with pytest.raises(ParserError):
        Reader().decode_latitude('5117a983N')
Ejemplo n.º 4
0
def get_airports(cupfile):
    airports = list()
    with open(cupfile) as f:
        for line in f:
            try:
                for waypoint in Reader([line]):
                    if waypoint["style"] > 5:  # reject unlandable places
                        continue

                    airport = Airport()
                    airport.name = waypoint["name"]
                    airport.code = waypoint["code"]
                    airport.country_code = waypoint["country"]
                    airport.style = waypoint["style"]
                    airport.description = waypoint["description"]
                    location = Location(waypoint["longitude"],
                                        waypoint["latitude"])
                    airport.location_wkt = location.to_wkt()
                    airport.altitude = waypoint["elevation"]["value"]
                    if waypoint["elevation"]["unit"] == "ft":
                        airport.altitude = airport.altitude * FEETS_TO_METER
                    airport.runway_direction = waypoint["runway_direction"]
                    airport.runway_length = waypoint["runway_length"]["value"]
                    if waypoint["runway_length"]["unit"] == "nm":
                        airport.altitude = airport.altitude * nm2m
                    elif waypoint["runway_length"]["unit"] == "ml":
                        airport.altitude = airport.altitude * mi2m
                    airport.frequency = waypoint["frequency"]

                    airports.append(airport)
            except AttributeError as e:
                print("Failed to parse line: {} {}".format(line, e))

    return airports
Ejemplo n.º 5
0
def get_airports(cupfile):
    airports = list()
    with open(cupfile) as f:
        for line in f:
            try:
                for waypoint in Reader([line]):
                    if waypoint['style'] > 5:   # reject unlandable places
                        continue

                    airport = Airport()
                    airport.name = waypoint['name']
                    airport.code = waypoint['code']
                    airport.country_code = waypoint['country']
                    airport.style = waypoint['style']
                    airport.description = waypoint['description']
                    location = Location(waypoint['longitude'], waypoint['latitude'])
                    airport.location_wkt = location.to_wkt()
                    airport.altitude = waypoint['elevation']['value']
                    if (waypoint['elevation']['unit'] == 'ft'):
                        airport.altitude = airport.altitude * feet2m
                    airport.runway_direction = waypoint['runway_direction']
                    airport.runway_length = waypoint['runway_length']['value']
                    if (waypoint['runway_length']['unit'] == 'nm'):
                        airport.altitude = airport.altitude * nm2m
                    elif (waypoint['runway_length']['unit'] == 'ml'):
                        airport.altitude = airport.altitude * mi2m
                    airport.frequency = waypoint['frequency']

                    airports.append(airport)
            except AttributeError as e:
                print('Failed to parse line: {} {}'.format(line, e))

    return airports
Ejemplo n.º 6
0
def test_decode_elevation():
    assert_value_and_unit(Reader().decode_elevation('125m'), 125, 'm')
    assert_value_and_unit(Reader().decode_elevation('300ft'), 300, 'ft')
    assert_value_and_unit(Reader().decode_elevation('300 m'), 300, 'm')
    assert_value_and_unit(Reader().decode_elevation('-25.4m'), -25.4, 'm')
    assert_value_and_unit(Reader().decode_elevation('m'), None, 'm')
    assert_value_and_unit(Reader().decode_elevation('23'), 23, None)
    assert_value_and_unit(Reader().decode_elevation(''), None, None)

    with pytest.raises(ParserError):
        Reader().decode_elevation('x')

    with pytest.raises(ParserError):
        Reader().decode_elevation('12a50m')
Ejemplo n.º 7
0
def test_decode_runway_length():
    assert_value_and_unit(Reader().decode_runway_length('1250m'), 1250, 'm')
    assert_value_and_unit(Reader().decode_runway_length('3.5ml'), 3.5, 'ml')
    assert_value_and_unit(Reader().decode_runway_length('0 m'), 0, 'm')
    assert_value_and_unit(Reader().decode_runway_length('2.4NM'), 2.4, 'NM')
    assert_value_and_unit(Reader().decode_runway_length('23'), 23, None)
    assert_value_and_unit(Reader().decode_runway_length(''), None, None)

    with pytest.raises(ParserError):
        Reader().decode_runway_length('x')

    with pytest.raises(ParserError):
        Reader().decode_runway_length('12a50m')
Ejemplo n.º 8
0
def test_comments():
    line = '* this is a comment'
    waypoints = list(Reader([line]))
    assert len(waypoints) == 0