def test_all_files(self): """ Test parsing of all files and compare with json version """ for name in ['empty', 'node', 'way', 'map', 'relation']: xml_data = read_data_file(name + '.osm') json_data = read_data_file(name + '.json') parsed_json = parse_xml(xml_data) saved_json = json.loads(json_data) if 'version' not in saved_json: del parsed_json['version'] self.assertDictEqual(saved_json, parsed_json)
def test_map(self): """ Test parsing of usual map """ xml = read_data_file('map.osm') data = parse_xml(xml) self.assertIsInstance(data, dict) self.assertEqual(data['version'], 0.6)
def test_empty_tag(self): """ Test parsing of empty <osm> tag """ xml = read_data_file('empty.osm') data = parse_xml(xml) self.assertIsInstance(data, dict) # Use version 0.6 as default self.assertEqual(data['version'], 0.6) self.assertEqual(data['elements'], [])
def test_node(self): """ Test parsing node """ xml = read_data_file('node.osm') data = parse_xml(xml) self.assertIsInstance(data, dict) self.assertIsInstance(data['elements'], list) self.assertEqual(len(data['elements']), 1) node = data['elements'][0] self.assertIsInstance(node, dict) self.assertEqual(node['type'], 'node') self.assertEqual(node['id'], 1) self.assertAlmostEqual(node['lat'], 1.234) self.assertAlmostEqual(node['lon'], 4.321)
def test_way(self): """ Test parsing way """ xml = read_data_file('way.osm') data = parse_xml(xml) self.assertIsInstance(data, dict) self.assertIsInstance(data['elements'], list) self.assertEqual(len(data['elements']), 4) way = data['elements'][0] self.assertIsInstance(way, dict) self.assertEqual(way['type'], 'way') self.assertEqual(way['id'], 1) self.assertIsInstance(way['nodes'], list) self.assertEqual(way['nodes'], [2, 3, 4])
def test_relation(self): """ Test parsing relation """ xml = read_data_file('relation.osm') data = parse_xml(xml) self.assertIsInstance(data, dict) self.assertIsInstance(data['elements'], list) self.assertEqual(len(data['elements']), 10) relation = data['elements'][0] self.assertIsInstance(relation, dict) self.assertEqual(relation['type'], 'relation') self.assertEqual(relation['id'], 1) self.assertIsInstance(relation['members'], list) self.assertEqual(len(relation['members']), 2) self.assertEqual(relation['tags'], { 'type': 'multipolygon' })
def get_osm_and_geojson_data(name): xml_data = read_data_file(name + '.osm') geojson_data = read_data_file(name + '.geojson') data = xml2geojson(xml_data) saved_geojson = json.loads(geojson_data) return (data, saved_geojson)
def test_issue_9(self): (data, saved_geojson) = get_json_and_geojson_data('issue-9') all_geojson = json.loads(read_data_file('issue-9-all.geojson')) self.assertDictEqual(saved_geojson, json2geojson(data)) self.assertDictEqual(all_geojson, json2geojson(data, filter_used_refs=False))
def get_json_and_geojson_data(name): json_data = read_data_file(name + '.json') geojson_data = read_data_file(name + '.geojson') data = json.loads(json_data) saved_geojson = json.loads(geojson_data) return (data, saved_geojson)