]> git.openstreetmap.org Git - nominatim.git/blobdiff - test/python/api/search/test_icu_query_analyzer.py
actions: run legacy test against newest postgresql 16
[nominatim.git] / test / python / api / search / test_icu_query_analyzer.py
index 78cd2c4d7beb2c2e13cf5b1634ef84d0ec2ae796..2ec3a7fecc85715536241b9b7d6c25c056427cd2 100644 (file)
@@ -118,10 +118,10 @@ async def test_penalty_postcodes_and_housenumbers(conn, term, order):
 
     assert query.num_token_slots() == 1
 
 
     assert query.num_token_slots() == 1
 
-    torder = [(tl.tokens[0].penalty, tl.ttype) for tl in query.nodes[0].starting]
+    torder = [(tl.tokens[0].penalty, tl.ttype.name) for tl in query.nodes[0].starting]
     torder.sort()
 
     torder.sort()
 
-    assert [t[1] for t in torder] == [TokenType[o] for o in order]
+    assert [t[1] for t in torder] == order
 
 @pytest.mark.asyncio
 async def test_category_words_only_at_beginning(conn):
 
 @pytest.mark.asyncio
 async def test_category_words_only_at_beginning(conn):
@@ -134,10 +134,23 @@ async def test_category_words_only_at_beginning(conn):
 
     assert query.num_token_slots() == 3
     assert len(query.nodes[0].starting) == 1
 
     assert query.num_token_slots() == 3
     assert len(query.nodes[0].starting) == 1
-    assert query.nodes[0].starting[0].ttype == TokenType.CATEGORY
+    assert query.nodes[0].starting[0].ttype == TokenType.NEAR_ITEM
     assert not query.nodes[2].starting
 
 
     assert not query.nodes[2].starting
 
 
+@pytest.mark.asyncio
+async def test_freestanding_qualifier_words_become_category(conn):
+    ana = await tok.create_query_analyzer(conn)
+
+    await add_word(conn, 1, 'foo', 'S', 'FOO', {'op': '-'})
+
+    query = await ana.analyze_query(make_phrase('foo'))
+
+    assert query.num_token_slots() == 1
+    assert len(query.nodes[0].starting) == 1
+    assert query.nodes[0].starting[0].ttype == TokenType.NEAR_ITEM
+
+
 @pytest.mark.asyncio
 async def test_qualifier_words(conn):
     ana = await tok.create_query_analyzer(conn)
 @pytest.mark.asyncio
 async def test_qualifier_words(conn):
     ana = await tok.create_query_analyzer(conn)
@@ -148,9 +161,9 @@ async def test_qualifier_words(conn):
     query = await ana.analyze_query(make_phrase('foo BAR foo BAR foo'))
 
     assert query.num_token_slots() == 5
     query = await ana.analyze_query(make_phrase('foo BAR foo BAR foo'))
 
     assert query.num_token_slots() == 5
-    assert set(t.ttype for t in query.nodes[0].starting) == {TokenType.CATEGORY, TokenType.QUALIFIER}
+    assert set(t.ttype for t in query.nodes[0].starting) == {TokenType.QUALIFIER}
     assert set(t.ttype for t in query.nodes[2].starting) == {TokenType.QUALIFIER}
     assert set(t.ttype for t in query.nodes[2].starting) == {TokenType.QUALIFIER}
-    assert set(t.ttype for t in query.nodes[4].starting) == {TokenType.CATEGORY, TokenType.QUALIFIER}
+    assert set(t.ttype for t in query.nodes[4].starting) == {TokenType.QUALIFIER}
 
 
 @pytest.mark.asyncio
 
 
 @pytest.mark.asyncio