|
24 | 24 | package org.opengrok.indexer.search; |
25 | 25 |
|
26 | 26 | import java.io.File; |
| 27 | +import java.io.FileOutputStream; |
| 28 | +import java.util.ArrayList; |
27 | 29 | import java.util.Collections; |
| 30 | +import java.util.List; |
28 | 31 | import java.util.TreeSet; |
29 | 32 |
|
30 | 33 | import org.junit.jupiter.api.AfterAll; |
|
36 | 39 | import org.opengrok.indexer.util.TestRepository; |
37 | 40 |
|
38 | 41 | import org.opengrok.indexer.history.RepositoryFactory; |
| 42 | +import org.opengrok.indexer.web.SortOrder; |
39 | 43 |
|
40 | 44 | import static org.junit.jupiter.api.Assertions.assertEquals; |
41 | 45 | import static org.junit.jupiter.api.Assertions.assertFalse; |
@@ -148,6 +152,28 @@ void testGetQuery() throws Exception { |
148 | 152 | instance.getQuery()); |
149 | 153 | } |
150 | 154 |
|
| 155 | + @Test |
| 156 | + void testSortOrderRelevancy() { |
| 157 | + SearchEngine instance = new SearchEngine(); |
| 158 | + instance.setFile("main.c OR Makefile"); |
| 159 | + instance.setFreetext("arguments"); |
| 160 | + instance.setSortOrder(SortOrder.RELEVANCY); |
| 161 | + int hitsCount = instance.search(); |
| 162 | + List<Hit> hits = new ArrayList<>(); |
| 163 | + instance.results(0, hitsCount, hits); |
| 164 | + assertTrue(hits.size() > 1, "Should return at least 2 hits for RELEVANCY sort to check order"); |
| 165 | + |
| 166 | + List<String> filenames = new ArrayList<>(); |
| 167 | + for (Hit hit : hits) { |
| 168 | + filenames.add(hit.getFilename()); |
| 169 | + } |
| 170 | + |
| 171 | + List<String> sortedFilenames = new ArrayList<>(filenames); |
| 172 | + Collections.sort(sortedFilenames); |
| 173 | + assertFalse(filenames.equals(sortedFilenames), "RELEVANCY sort should not be strictly filename order"); |
| 174 | + instance.destroy(); |
| 175 | + } |
| 176 | + |
151 | 177 | /* see https://github.com/oracle/opengrok/issues/2030 |
152 | 178 | @Test |
153 | 179 | void testSearch() { |
|
0 commit comments