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']
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')
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')
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
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
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')
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')
def test_comments(): line = '* this is a comment' waypoints = list(Reader([line])) assert len(waypoints) == 0