]> git.openstreetmap.org Git - nominatim.git/blobdiff - test/python/api/test_results.py
indexing: precompute row counts
[nominatim.git] / test / python / api / test_results.py
index 7ea1fb1fe1d52a64bebe214f23b2c75dfbf29ffd..f0bfa163cbcb8b41cdf3f90f8fd0d9f68f8809e6 100644 (file)
@@ -2,28 +2,29 @@
 #
 # This file is part of Nominatim. (https://nominatim.org)
 #
-# Copyright (C) 2023 by the Nominatim developer community.
+# Copyright (C) 2024 by the Nominatim developer community.
 # For a full list of authors see the git log.
 """
 Tests for result datatype helper functions.
 """
 import struct
+from binascii import hexlify
 
 import pytest
 import pytest_asyncio
 import sqlalchemy as sa
 
 
-from nominatim.api import SourceTable, DetailedResult, Point
-import nominatim.api.results as nresults
+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
@@ -36,7 +37,7 @@ def test_minimal_detailed_result():
 
     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,
@@ -58,9 +59,9 @@ def test_create_row_none(func):
 @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)
 
@@ -72,10 +73,10 @@ def test_create_row_with_housenumber(func):
 @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)