Tests for result datatype helper functions.
"""
import struct
+from binascii import hexlify
import pytest
import pytest_asyncio
from nominatim.api import SourceTable, DetailedResult, Point
import nominatim.api.results as nresults
-class FakeCentroid:
- def __init__(self, x, y):
- self.data = struct.pack("=biidd", 1, 0x20000001, 4326,
- x, y)
+def mkpoint(x, y):
+ return hexlify(struct.pack("=biidd", 1, 0x20000001, 4326, x, y)).decode('utf-8')
class FakeRow:
def __init__(self, **kwargs):
+ if 'parent_place_id' not in kwargs:
+ kwargs['parent_place_id'] = None
for k, v in kwargs.items():
setattr(self, k, v)
self._mapping = kwargs
assert res.lon == 23.1
assert res.lat == 0.5
- assert res.calculated_importance() == pytest.approx(0.0000001)
+ assert res.calculated_importance() == pytest.approx(0.00001)
def test_detailed_result_custom_importance():
res = DetailedResult(SourceTable.PLACEX,
@pytest.mark.parametrize('func', (nresults.create_from_osmline_row,
nresults.create_from_tiger_row))
def test_create_row_with_housenumber(func):
- row = FakeRow(place_id = 2345, osm_id = 111, housenumber = 4,
- address = None, postcode = '99900', country_code = 'xd',
- centroid = FakeCentroid(0, 0))
+ row = FakeRow(place_id=2345, osm_type='W', osm_id=111, housenumber=4,
+ address=None, postcode='99900', country_code='xd',
+ centroid=mkpoint(0, 0))
res = func(row, DetailedResult)
@pytest.mark.parametrize('func', (nresults.create_from_osmline_row,
nresults.create_from_tiger_row))
def test_create_row_without_housenumber(func):
- row = FakeRow(place_id=2345, osm_id=111,
+ row = FakeRow(place_id=2345, osm_type='W', osm_id=111,
startnumber=1, endnumber=11, step=2,
address=None, postcode='99900', country_code='xd',
- centroid=FakeCentroid(0, 0))
+ centroid=mkpoint(0, 0))
res = func(row, DetailedResult)