Skip to content

Commit 3e2dc55

Browse files
ahornaceVladimir Kotal
authored andcommitted
Add additional tests to improve coverage
1 parent d869b44 commit 3e2dc55

File tree

5 files changed

+121
-2
lines changed

5 files changed

+121
-2
lines changed

suggester/pom.xml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,14 @@
6464
</exclusion>
6565
</exclusions>
6666
</dependency>
67+
68+
<!-- to get rid of SL4J warning messages -->
69+
<dependency>
70+
<groupId>org.slf4j</groupId>
71+
<artifactId>slf4j-nop</artifactId>
72+
<version>1.7.25</version>
73+
</dependency>
74+
6775
</dependencies>
6876

6977
<build>

suggester/src/main/java/org/opengrok/suggest/LookupResultItem.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424

2525
import java.util.Collections;
2626
import java.util.HashSet;
27+
import java.util.Objects;
2728
import java.util.Set;
2829

2930
/**
@@ -76,6 +77,25 @@ public int compareTo(final LookupResultItem other) {
7677
return Long.compare(score, other.score);
7778
}
7879

80+
@Override
81+
public boolean equals(Object o) {
82+
if (this == o) {
83+
return true;
84+
}
85+
if (o == null || getClass() != o.getClass()) {
86+
return false;
87+
}
88+
LookupResultItem that = (LookupResultItem) o;
89+
return score == that.score &&
90+
Objects.equals(phrase, that.phrase) &&
91+
Objects.equals(projects, that.projects);
92+
}
93+
94+
@Override
95+
public int hashCode() {
96+
return Objects.hash(phrase, projects, score);
97+
}
98+
7999
@Override
80100
public String toString() {
81101
return "LookupResultItem{phrase='" + phrase + "', projects=" + projects + ", score=" + score + '}';

suggester/src/test/java/org/opengrok/suggest/FieldWFSTCollectionTest.java

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,15 @@
4141
import java.io.IOException;
4242
import java.nio.file.Files;
4343
import java.nio.file.Path;
44+
import java.util.Arrays;
4445
import java.util.Collections;
46+
import java.util.HashSet;
4547
import java.util.List;
4648
import java.util.stream.Collectors;
4749

50+
import static junit.framework.Assert.assertTrue;
4851
import static junit.framework.TestCase.assertEquals;
52+
import static junit.framework.TestCase.assertFalse;
4953
import static org.hamcrest.MatcherAssert.assertThat;
5054
import static org.hamcrest.collection.IsIterableContainingInAnyOrder.containsInAnyOrder;
5155

@@ -67,8 +71,12 @@ public void setUp() throws IOException {
6771

6872
@After
6973
public void tearDown() throws IOException {
70-
f.close();
71-
FileUtils.deleteDirectory(tempDir.toFile());
74+
if (f != null) {
75+
f.close();
76+
}
77+
if (tempDir.toFile().exists()) {
78+
FileUtils.deleteDirectory(tempDir.toFile());
79+
}
7280
}
7381

7482
@Test
@@ -250,4 +258,34 @@ public void getSearchCountMapNullTest() throws IOException {
250258
f.getSearchCounts(null);
251259
}
252260

261+
@Test
262+
public void testRemove() throws IOException {
263+
Directory dir = new RAMDirectory();
264+
Path tempDir = Files.createTempDirectory("test");
265+
266+
try (IndexWriter iw = new IndexWriter(dir, new IndexWriterConfig())) {
267+
Document doc = new Document();
268+
doc.add(new TextField("test", "text", Field.Store.NO));
269+
270+
iw.addDocument(doc);
271+
}
272+
273+
FieldWFSTCollection f = new FieldWFSTCollection(dir, tempDir, false, Collections.singleton("test"));
274+
f.init();
275+
f.remove();
276+
277+
assertFalse(tempDir.toFile().exists());
278+
}
279+
280+
@Test
281+
public void testUnknownFieldIgnored() throws IOException {
282+
addText(FIELD, "term");
283+
f = new FieldWFSTCollection(dir, tempDir, false, new HashSet<>(Arrays.asList(FIELD, "unknown")));
284+
f.init();
285+
286+
List<Lookup.LookupResult> res = f.lookup("unknown", "a", 10);
287+
288+
assertTrue(res.isEmpty());
289+
}
290+
253291
}

suggester/src/test/java/org/opengrok/suggest/SuggesterSearcherTest.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,14 @@
3333
import org.apache.lucene.search.TermQuery;
3434
import org.apache.lucene.store.Directory;
3535
import org.apache.lucene.store.RAMDirectory;
36+
import org.apache.lucene.util.BytesRef;
3637
import org.junit.AfterClass;
3738
import org.junit.BeforeClass;
3839
import org.junit.Test;
3940
import org.opengrok.suggest.query.SuggesterFuzzyQuery;
4041
import org.opengrok.suggest.query.SuggesterPhraseQuery;
4142
import org.opengrok.suggest.query.SuggesterPrefixQuery;
43+
import org.opengrok.suggest.query.SuggesterRangeQuery;
4244
import org.opengrok.suggest.query.SuggesterRegexpQuery;
4345
import org.opengrok.suggest.query.SuggesterWildcardQuery;
4446

@@ -133,4 +135,28 @@ public void suggesterPhraseQueryTest() {
133135
assertThat(tokens, contains("opengrok2"));
134136
}
135137

138+
@Test
139+
public void testRangeQueryUpper() {
140+
SuggesterRangeQuery q = new SuggesterRangeQuery("test", new BytesRef("opengrok"),
141+
new BytesRef("t"), true, true, SuggesterRangeQuery.SuggestPosition.UPPER);
142+
143+
List<LookupResultItem> suggestions = searcher.suggest(null, "test", q, k -> 0);
144+
145+
List<String> tokens = suggestions.stream().map(LookupResultItem::getPhrase).collect(Collectors.toList());
146+
147+
assertThat(tokens, contains("test"));
148+
}
149+
150+
@Test
151+
public void testRangeQueryLower() {
152+
SuggesterRangeQuery q = new SuggesterRangeQuery("test", new BytesRef("o"),
153+
new BytesRef("test"), true, true, SuggesterRangeQuery.SuggestPosition.LOWER);
154+
155+
List<LookupResultItem> suggestions = searcher.suggest(null, "test", q, k -> 0);
156+
157+
List<String> tokens = suggestions.stream().map(LookupResultItem::getPhrase).collect(Collectors.toList());
158+
159+
assertThat(tokens, contains("opengrok", "opengrok2"));
160+
}
161+
136162
}

suggester/src/test/java/org/opengrok/suggest/SuggesterUtilsTest.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,15 @@
2929
import org.apache.lucene.search.Query;
3030
import org.apache.lucene.search.TermQuery;
3131
import org.junit.Test;
32+
import org.opengrok.suggest.query.SuggesterPrefixQuery;
3233

34+
import java.util.Arrays;
3335
import java.util.List;
3436

3537
import static org.hamcrest.collection.IsIterableContainingInAnyOrder.containsInAnyOrder;
38+
import static org.hamcrest.collection.IsIterableContainingInOrder.contains;
3639
import static org.junit.Assert.assertEquals;
40+
import static org.junit.Assert.assertFalse;
3741
import static org.junit.Assert.assertThat;
3842

3943
public class SuggesterUtilsTest {
@@ -80,4 +84,27 @@ public void intoTermExceptPhraseQueryTest() {
8084
assertEquals(t, terms.get(0));
8185
}
8286

87+
@Test
88+
public void testIsComplexQuery() {
89+
assertFalse(SuggesterUtils.isComplexQuery(null, new SuggesterPrefixQuery(new Term("test", "t"))));
90+
}
91+
92+
@Test
93+
public void testCombineResults() {
94+
LookupResultItem item1 = new LookupResultItem("test", "proj1", 10);
95+
LookupResultItem item2 = new LookupResultItem("test", "proj2", 10);
96+
LookupResultItem item3 = new LookupResultItem("test", "proj3", 10);
97+
LookupResultItem item4 = new LookupResultItem("test2", "proj3", 10);
98+
LookupResultItem item5 = new LookupResultItem("test3", "proj1", 15);
99+
100+
List<LookupResultItem> res = SuggesterUtils.combineResults(
101+
Arrays.asList(item1, item2, item3, item4, item5), 2);
102+
103+
LookupResultItem combined = new LookupResultItem("test", "proj1", 10);
104+
combined.combine(new LookupResultItem("test", "proj2", 10));
105+
combined.combine(new LookupResultItem("test", "proj3", 10));
106+
107+
assertThat(res, contains(combined, item5));
108+
}
109+
83110
}

0 commit comments

Comments
 (0)