add test for new interpolation variants

This commit is contained in:
Sarah Hoffmann
2026-02-17 19:52:52 +01:00
parent c25204ce31
commit b71543b03b
4 changed files with 61 additions and 30 deletions

View File

@@ -0,0 +1,44 @@
Feature: Import of interpolations
Test if interpolation objects are correctly imported into the
place_interpolation table
Background:
Given the grid
| 1 | 2 |
| 4 | 3 |
Scenario: Simple address interpolations
When loading osm data
"""
n1
n2
w13001 Taddr:interpolation=odd,addr:street=Blumenstrasse Nn1,n2
w13002 Taddr:interpolation=even,place=city Nn1,n2
w13003 Taddr:interpolation=odd Nn1,n1
"""
Then place contains exactly
| object | class | type |
| W13002 | place | city |
And place_interpolation contains exactly
| object | type | address!dict | nodes!ints | geometry!wkt |
| W13001 | odd | "street": "Blumenstrasse" | 1,2 | 1,2 |
| W13002 | even | - | 1,2 | 1,2 |
Scenario: Address interpolation with housenumber
When loading osm data
"""
n1
n2
n3
n4
w34 Taddr:interpolation=all,addr:housenumber=2-4,building=yes Nn1,n2,n3,n4,n1
w35 Taddr:interpolation=all,addr:housenumber=5,building=yes Nn1,n2,n3,n4,n1
w36 Taddr:interpolation=all,addr:housenumber=2a-c,building=yes Nn1,n2,n3,n4,n1
"""
Then place contains exactly
| object | class | type | address!dict |
| w35 | building | yes | "housenumber" : "5", "interpolation": "all" |
| w36 | building | yes | "housenumber" : "2a-c", "interpolation": "all" |
Then place_interpolation contains exactly
| object | type | address!dict | nodes!ints | geometry!wkt |
| W34 | all | "housenumber": "2-4" | - | (1,2,3,4,1) |

View File

@@ -205,24 +205,6 @@ Feature: Tag evaluation
| N12005 | 12345 | - |
Scenario: Address interpolations
Given the grid
| 1 | 2 |
When loading osm data
"""
n1
n2
w13001 Taddr:interpolation=odd Nn1,n2
w13002 Taddr:interpolation=even,place=city Nn1,n2
"""
Then place contains exactly
| object |
And place_interpolation contains exactly
| object | type | address!dict |
| W13001 | odd | - |
| W13002 | even | - |
Scenario: Footways
When loading osm data
"""

View File

@@ -2,7 +2,7 @@
#
# This file is part of Nominatim. (https://nominatim.org)
#
# Copyright (C) 2025 by the Nominatim developer community.
# Copyright (C) 2026 by the Nominatim developer community.
# For a full list of authors see the git log.
"""
Helper functions to compare expected values.
@@ -61,6 +61,8 @@ COMPARISON_FUNCS = {
'fm': lambda val, exp: re.fullmatch(exp, val) is not None,
'dict': lambda val, exp: (val is None if exp == '-'
else (val == ast.literal_eval('{' + exp + '}'))),
'ints': lambda val, exp: (val is None if exp == '-'
else (val == [int(i) for i in exp.split(',')])),
'in_box': within_box
}
@@ -84,6 +86,8 @@ class ResultAttr:
!fm - consider comparison string a regular expression and match full value
!wkt - convert the expected value to a WKT string before comparing
!in_box - the expected value is a comma-separated bbox description
!dict - compare as a dictitionary, member order does not matter
!ints - compare as integer array
"""
def __init__(self, obj, key, grid=None):