From 4cc11e183cb2526f80dda547206eb3de1e31c91e Mon Sep 17 00:00:00 2001 From: Viktor Lofgren Date: Thu, 28 Mar 2024 13:11:26 +0100 Subject: [PATCH] (qs, WIP) Fix output determinism, fix tests --- .../searchquery/query_parser/model/QWordGraph.java | 6 ++++-- .../query_parser/model/QWordGraphTest.java | 11 ++++++----- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/code/functions/search-query/java/nu/marginalia/functions/searchquery/query_parser/model/QWordGraph.java b/code/functions/search-query/java/nu/marginalia/functions/searchquery/query_parser/model/QWordGraph.java index 1d8fcd70..10aae867 100644 --- a/code/functions/search-query/java/nu/marginalia/functions/searchquery/query_parser/model/QWordGraph.java +++ b/code/functions/search-query/java/nu/marginalia/functions/searchquery/query_parser/model/QWordGraph.java @@ -370,7 +370,9 @@ public class QWordGraph implements Iterable { } } - var branches = pathsByCommonWord.entrySet().stream().map(e -> { + var branches = pathsByCommonWord.entrySet().stream() + .sorted(Map.Entry.comparingByKey(reachability.topologicalComparator())) + .map(e -> { String commonWord = e.getKey().word(); String branchPart = new WordPaths(e.getValue()).render(reachability); return STR."\{commonWord} \{branchPart}"; @@ -382,7 +384,7 @@ public class QWordGraph implements Iterable { } // Remove any double spaces that may have been introduced - return concat.toString().replaceAll("\\s+", " "); + return concat.toString().replaceAll("\\s+", " ").trim(); } diff --git a/code/functions/search-query/test/nu/marginalia/functions/searchquery/query_parser/model/QWordGraphTest.java b/code/functions/search-query/test/nu/marginalia/functions/searchquery/query_parser/model/QWordGraphTest.java index 276d8697..f3201b9d 100644 --- a/code/functions/search-query/test/nu/marginalia/functions/searchquery/query_parser/model/QWordGraphTest.java +++ b/code/functions/search-query/test/nu/marginalia/functions/searchquery/query_parser/model/QWordGraphTest.java @@ -99,8 +99,9 @@ class QWordGraphTest { QWordGraph graph = new QWordGraph("a", "b", "c"); graph.addVariant(graph.node("b"), "d"); - assertEquals(" ^ a(b|d)c $ ", graph.compileToQuery()); + assertEquals("a c ( b | d )", graph.compileToQuery()); } + @Test void testCompile2() { // Construct a graph like @@ -108,7 +109,7 @@ class QWordGraphTest { // ^ - a - b - c - $ QWordGraph graph = new QWordGraph("a", "b", "c"); - assertEquals(" ^ abc $ ", graph.compileToQuery()); + assertEquals("a b c", graph.compileToQuery()); } @Test @@ -119,7 +120,7 @@ class QWordGraphTest { // \- d -/ QWordGraph graph = new QWordGraph("a", "b", "c"); graph.addVariant(graph.node("a"), "d"); - assertEquals(" ^ (a|d)bc $ ", graph.compileToQuery()); + assertEquals("b c ( a | d )", graph.compileToQuery()); } @Test @@ -130,7 +131,7 @@ class QWordGraphTest { // \- d -/ QWordGraph graph = new QWordGraph("a", "b", "c"); graph.addVariant(graph.node("c"), "d"); - assertEquals(" ^ ab(c|d) $ ", graph.compileToQuery()); + assertEquals("a b ( c | d )", graph.compileToQuery()); } @Test @@ -143,6 +144,6 @@ class QWordGraphTest { QWordGraph graph = new QWordGraph("a", "b", "c"); graph.addVariant(graph.node("c"), "d"); graph.addVariant(graph.node("b"), "e"); - assertEquals(" ^ a(b|e)(c|d) $ ", graph.compileToQuery()); + assertEquals("a ( b ( c | d ) | c e )", graph.compileToQuery()); } } \ No newline at end of file