"""
Test OSM XML parsing.
"""
import numpy as np
from roentgen.osm_reader import OSMNode, OSMReader, OSMRelation, OSMWay, OSMData
__author__ = "Sergey Vartanov"
__email__ = "me@enzet.ru"
def test_node() -> None:
"""Test OSM node parsing from XML."""
reader: OSMReader = OSMReader()
osm_data: OSMData = reader.parse_osm_text(
"""
"""
)
assert 42 in osm_data.nodes
node: OSMNode = osm_data.nodes[42]
assert node.id_ == 42
assert np.allclose(node.coordinates, np.array([10, 5]))
def test_node_with_tag() -> None:
"""Test OSM node parsing from XML."""
reader = OSMReader()
osm_data: OSMData = reader.parse_osm_text(
"""
"""
)
assert 42 in osm_data.nodes
node: OSMNode = osm_data.nodes[42]
assert node.id_ == 42
assert np.allclose(node.coordinates, np.array([10, 5]))
assert node.tags["key"] == "value"
def test_way() -> None:
"""Test OSM way parsing from XML."""
reader: OSMReader = OSMReader()
osm_data: OSMData = reader.parse_osm_text(
"""
"""
)
assert 42 in osm_data.ways
way: OSMWay = osm_data.ways[42]
assert way.id_ == 42
def test_nodes() -> None:
"""Test OSM node parsing from XML."""
reader = OSMReader()
osm_data: OSMData = reader.parse_osm_text(
"""
"""
)
way: OSMWay = osm_data.ways[2]
assert len(way.nodes) == 1
assert way.nodes[0].id_ == 1
assert way.tags["key"] == "value"
def test_relation() -> None:
"""Test OSM node parsing from XML."""
reader: OSMReader = OSMReader()
osm_data: OSMData = reader.parse_osm_text(
"""
"""
)
assert 3 in osm_data.relations
relation: OSMRelation = osm_data.relations[3]
assert relation.id_ == 3
assert relation.tags["key"] == "value"
assert len(relation.members) == 1
assert relation.members[0].type_ == "way"
assert relation.members[0].ref == 2