"""
Test OSM XML parsing.
"""
import numpy as np
from roentgen.osm_reader import OSMNode, OSMReader, OSMRelation, OSMWay
__author__ = "Sergey Vartanov"
__email__ = "me@enzet.ru"
def test_node() -> None:
"""
Test OSM node parsing from XML.
"""
reader = OSMReader()
map_ = reader.parse_osm_text(
"""
"""
)
assert 42 in map_.nodes
node: OSMNode = map_.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()
map_ = reader.parse_osm_text(
"""
"""
)
assert 42 in map_.nodes
node: OSMNode = map_.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()
map_ = reader.parse_osm_text(
"""
"""
)
assert 42 in map_.ways
way: OSMWay = map_.ways[42]
assert way.id_ == 42
def test_nodes() -> None:
"""
Test OSM node parsing from XML.
"""
reader = OSMReader()
map_ = reader.parse_osm_text(
"""
"""
)
way: OSMWay = map_.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()
map_ = reader.parse_osm_text(
"""
"""
)
assert 3 in map_.relations
relation: OSMRelation = map_.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