You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by dw...@apache.org on 2024/01/10 19:33:45 UTC
(lucene) branch main updated: Simplify asserts in TestWordBreakSpellChecker (#13007)
This is an automated email from the ASF dual-hosted git repository.
dweiss pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/lucene.git
The following commit(s) were added to refs/heads/main by this push:
new f67b1b3d1f2 Simplify asserts in TestWordBreakSpellChecker (#13007)
f67b1b3d1f2 is described below
commit f67b1b3d1f258ce6297276c76831e0b1b84442c0
Author: sabi0 <2s...@gmail.com>
AuthorDate: Wed Jan 10 20:33:40 2024 +0100
Simplify asserts in TestWordBreakSpellChecker (#13007)
---
.../search/spell/TestWordBreakSpellChecker.java | 161 +++++++++------------
1 file changed, 69 insertions(+), 92 deletions(-)
diff --git a/lucene/suggest/src/test/org/apache/lucene/search/spell/TestWordBreakSpellChecker.java b/lucene/suggest/src/test/org/apache/lucene/search/spell/TestWordBreakSpellChecker.java
index 75f0e2ae81c..83b7066fa0b 100644
--- a/lucene/suggest/src/test/org/apache/lucene/search/spell/TestWordBreakSpellChecker.java
+++ b/lucene/suggest/src/test/org/apache/lucene/search/spell/TestWordBreakSpellChecker.java
@@ -38,7 +38,6 @@ import org.apache.lucene.tests.util.LuceneTestCase;
import org.apache.lucene.tests.util.TestUtil;
import org.apache.lucene.util.IOUtils;
import org.hamcrest.MatcherAssert;
-import org.junit.Assert;
public class TestWordBreakSpellChecker extends LuceneTestCase {
private Directory dir;
@@ -134,30 +133,16 @@ public class TestWordBreakSpellChecker extends LuceneTestCase {
wbsp.setMinSuggestionFrequency(1);
CombineSuggestion[] cs =
wbsp.suggestWordCombinations(terms, 10, ir, SuggestMode.SUGGEST_ALWAYS);
- Assert.assertTrue(cs.length == 5);
-
- Assert.assertTrue(cs[0].originalTermIndexes.length == 2);
- Assert.assertTrue(cs[0].originalTermIndexes[0] == 1);
- Assert.assertTrue(cs[0].originalTermIndexes[1] == 2);
- Assert.assertTrue(cs[0].suggestion.string.equals("hundred"));
- Assert.assertTrue(cs[0].suggestion.score == 1);
-
- Assert.assertTrue(cs[1].originalTermIndexes.length == 2);
- Assert.assertTrue(cs[1].originalTermIndexes[0] == 3);
- Assert.assertTrue(cs[1].originalTermIndexes[1] == 4);
- Assert.assertTrue(cs[1].suggestion.string.equals("eighty"));
- Assert.assertTrue(cs[1].suggestion.score == 1);
-
- Assert.assertTrue(cs[2].originalTermIndexes.length == 2);
- Assert.assertTrue(cs[2].originalTermIndexes[0] == 4);
- Assert.assertTrue(cs[2].originalTermIndexes[1] == 5);
- Assert.assertTrue(cs[2].suggestion.string.equals("yeight"));
- Assert.assertTrue(cs[2].suggestion.score == 1);
+ assertEquals(5, cs.length);
+
+ assertSuggestionEquals(cs[0], "hundred", 1.0f, 1, 2);
+ assertSuggestionEquals(cs[1], "eighty", 1.0f, 3, 4);
+ assertSuggestionEquals(cs[2], "yeight", 1.0f, 4, 5);
for (int i = 3; i < 5; i++) {
- Assert.assertTrue(cs[i].originalTermIndexes.length == 3);
- Assert.assertTrue(cs[i].suggestion.score == 2);
- Assert.assertTrue(
+ assertEquals(3, cs[i].originalTermIndexes.length);
+ assertEquals(2, cs[i].suggestion.score, 0);
+ assertTrue(
(cs[i].originalTermIndexes[0] == 1
&& cs[i].originalTermIndexes[1] == 2
&& cs[i].originalTermIndexes[2] == 3
@@ -169,20 +154,10 @@ public class TestWordBreakSpellChecker extends LuceneTestCase {
}
cs = wbsp.suggestWordCombinations(terms, 5, ir, SuggestMode.SUGGEST_WHEN_NOT_IN_INDEX);
- Assert.assertTrue(cs.length == 2);
- Assert.assertTrue(cs[0].originalTermIndexes.length == 2);
- Assert.assertTrue(cs[0].suggestion.score == 1);
- Assert.assertTrue(cs[0].originalTermIndexes[0] == 1);
- Assert.assertTrue(cs[0].originalTermIndexes[1] == 2);
- Assert.assertTrue(cs[0].suggestion.string.equals("hundred"));
- Assert.assertTrue(cs[0].suggestion.score == 1);
-
- Assert.assertTrue(cs[1].originalTermIndexes.length == 3);
- Assert.assertTrue(cs[1].suggestion.score == 2);
- Assert.assertTrue(cs[1].originalTermIndexes[0] == 1);
- Assert.assertTrue(cs[1].originalTermIndexes[1] == 2);
- Assert.assertTrue(cs[1].originalTermIndexes[2] == 3);
- Assert.assertTrue(cs[1].suggestion.string.equals("hundredeight"));
+ assertEquals(2, cs.length);
+
+ assertSuggestionEquals(cs[0], "hundred", 1.0f, 1, 2);
+ assertSuggestionEquals(cs[1], "hundredeight", 2.0f, 1, 2, 3);
}
ir.close();
}
@@ -203,12 +178,10 @@ public class TestWordBreakSpellChecker extends LuceneTestCase {
ir,
SuggestMode.SUGGEST_WHEN_NOT_IN_INDEX,
BreakSuggestionSortMethod.NUM_CHANGES_THEN_MAX_FREQUENCY);
- Assert.assertTrue(sw.length == 1);
- Assert.assertTrue(sw[0].length == 2);
- Assert.assertTrue(sw[0][0].string.equals("ninety"));
- Assert.assertTrue(sw[0][1].string.equals("nine"));
- Assert.assertTrue(sw[0][0].score == 1);
- Assert.assertTrue(sw[0][1].score == 1);
+ assertEquals(1, sw.length);
+ assertEquals(2, sw[0].length);
+ assertSuggestionEquals(sw[0][0], "ninety", 1.0f);
+ assertSuggestionEquals(sw[0][1], "nine", 1.0f);
}
{
Term term = new Term("numbers", "onethousand");
@@ -222,12 +195,10 @@ public class TestWordBreakSpellChecker extends LuceneTestCase {
ir,
SuggestMode.SUGGEST_WHEN_NOT_IN_INDEX,
BreakSuggestionSortMethod.NUM_CHANGES_THEN_MAX_FREQUENCY);
- Assert.assertTrue(sw.length == 1);
- Assert.assertTrue(sw[0].length == 2);
- Assert.assertTrue(sw[0][0].string.equals("one"));
- Assert.assertTrue(sw[0][1].string.equals("thousand"));
- Assert.assertTrue(sw[0][0].score == 1);
- Assert.assertTrue(sw[0][1].score == 1);
+ assertEquals(1, sw.length);
+ assertEquals(2, sw[0].length);
+ assertSuggestionEquals(sw[0][0], "one", 1.0f);
+ assertSuggestionEquals(sw[0][1], "thousand", 1.0f);
wbsp.setMaxChanges(2);
wbsp.setMinSuggestionFrequency(1);
@@ -238,8 +209,8 @@ public class TestWordBreakSpellChecker extends LuceneTestCase {
ir,
SuggestMode.SUGGEST_WHEN_NOT_IN_INDEX,
BreakSuggestionSortMethod.NUM_CHANGES_THEN_MAX_FREQUENCY);
- Assert.assertTrue(sw.length == 1);
- Assert.assertTrue(sw[0].length == 2);
+ assertEquals(1, sw.length);
+ assertEquals(2, sw[0].length);
wbsp.setMaxChanges(2);
wbsp.setMinSuggestionFrequency(2);
@@ -250,8 +221,8 @@ public class TestWordBreakSpellChecker extends LuceneTestCase {
ir,
SuggestMode.SUGGEST_WHEN_NOT_IN_INDEX,
BreakSuggestionSortMethod.NUM_CHANGES_THEN_MAX_FREQUENCY);
- Assert.assertTrue(sw.length == 1);
- Assert.assertTrue(sw[0].length == 2);
+ assertEquals(1, sw.length);
+ assertEquals(2, sw[0].length);
wbsp.setMaxChanges(2);
wbsp.setMinSuggestionFrequency(1);
@@ -262,24 +233,20 @@ public class TestWordBreakSpellChecker extends LuceneTestCase {
ir,
SuggestMode.SUGGEST_WHEN_NOT_IN_INDEX,
BreakSuggestionSortMethod.NUM_CHANGES_THEN_MAX_FREQUENCY);
- Assert.assertTrue(sw.length == 2);
- Assert.assertTrue(sw[0].length == 2);
- Assert.assertTrue(sw[0][0].string.equals("one"));
- Assert.assertTrue(sw[0][1].string.equals("thousand"));
- Assert.assertTrue(sw[0][0].score == 1);
- Assert.assertTrue(sw[0][1].score == 1);
- Assert.assertTrue(sw[0][1].freq > 1);
- Assert.assertTrue(sw[0][0].freq > sw[0][1].freq);
- Assert.assertTrue(sw[1].length == 3);
- Assert.assertTrue(sw[1][0].string.equals("one"));
- Assert.assertTrue(sw[1][1].string.equals("thou"));
- Assert.assertTrue(sw[1][2].string.equals("sand"));
- Assert.assertTrue(sw[1][0].score == 2);
- Assert.assertTrue(sw[1][1].score == 2);
- Assert.assertTrue(sw[1][2].score == 2);
- Assert.assertTrue(sw[1][0].freq > 1);
- Assert.assertTrue(sw[1][1].freq == 1);
- Assert.assertTrue(sw[1][2].freq == 1);
+ assertEquals(2, sw.length);
+ assertEquals(2, sw[0].length);
+ assertSuggestionEquals(sw[0][0], "one", 1.0f);
+ assertSuggestionEquals(sw[0][1], "thousand", 1.0f);
+ MatcherAssert.assertThat(sw[0][1].freq, greaterThan(1));
+ MatcherAssert.assertThat(sw[0][0].freq, greaterThan(sw[0][1].freq));
+
+ assertEquals(3, sw[1].length);
+ assertSuggestionEquals(sw[1][0], "one", 2.0f);
+ assertSuggestionEquals(sw[1][1], "thou", 2.0f);
+ assertSuggestionEquals(sw[1][2], "sand", 2.0f);
+ MatcherAssert.assertThat(sw[1][0].freq, greaterThan(1));
+ assertEquals(1, sw[1][1].freq);
+ assertEquals(1, sw[1][2].freq);
}
{
Term term = new Term("numbers", "onethousandonehundredeleven");
@@ -293,7 +260,7 @@ public class TestWordBreakSpellChecker extends LuceneTestCase {
ir,
SuggestMode.SUGGEST_WHEN_NOT_IN_INDEX,
BreakSuggestionSortMethod.NUM_CHANGES_THEN_MAX_FREQUENCY);
- Assert.assertTrue(sw.length == 0);
+ assertEquals(0, sw.length);
wbsp.setMaxChanges(4);
sw =
@@ -303,8 +270,8 @@ public class TestWordBreakSpellChecker extends LuceneTestCase {
ir,
SuggestMode.SUGGEST_WHEN_NOT_IN_INDEX,
BreakSuggestionSortMethod.NUM_CHANGES_THEN_MAX_FREQUENCY);
- Assert.assertTrue(sw.length == 1);
- Assert.assertTrue(sw[0].length == 5);
+ assertEquals(1, sw.length);
+ assertEquals(5, sw[0].length);
wbsp.setMaxChanges(5);
sw =
@@ -314,12 +281,12 @@ public class TestWordBreakSpellChecker extends LuceneTestCase {
ir,
SuggestMode.SUGGEST_WHEN_NOT_IN_INDEX,
BreakSuggestionSortMethod.NUM_CHANGES_THEN_MAX_FREQUENCY);
- Assert.assertTrue(sw.length == 2);
- Assert.assertTrue(sw[0].length == 5);
- Assert.assertTrue(sw[0][1].string.equals("thousand"));
- Assert.assertTrue(sw[1].length == 6);
- Assert.assertTrue(sw[1][1].string.equals("thou"));
- Assert.assertTrue(sw[1][2].string.equals("sand"));
+ assertEquals(2, sw.length);
+ assertEquals(5, sw[0].length);
+ assertEquals("thousand", sw[0][1].string);
+ assertEquals(6, sw[1].length);
+ assertEquals("thou", sw[1][1].string);
+ assertEquals("sand", sw[1][2].string);
}
{
// make sure we can handle 2-char codepoints
@@ -334,7 +301,7 @@ public class TestWordBreakSpellChecker extends LuceneTestCase {
ir,
SuggestMode.SUGGEST_WHEN_NOT_IN_INDEX,
BreakSuggestionSortMethod.NUM_CHANGES_THEN_MAX_FREQUENCY);
- Assert.assertTrue(sw.length == 0);
+ assertEquals(0, sw.length);
}
ir.close();
@@ -352,14 +319,15 @@ public class TestWordBreakSpellChecker extends LuceneTestCase {
for (int i = 0; i < numDocs; i++) {
String orig = "";
if (random().nextBoolean()) {
- while (!goodTestString(orig)) {
+ while (badTestString(orig)) {
orig = TestUtil.randomSimpleString(random(), maxLength);
}
} else {
- while (!goodTestString(orig)) {
+ while (badTestString(orig)) {
orig = TestUtil.randomUnicodeString(random(), maxLength);
}
}
+
originals.add(orig);
int totalLength = orig.codePointCount(0, orig.length());
int breakAt = orig.offsetByCodePoints(0, TestUtil.nextInt(random(), 1, totalLength - 1));
@@ -397,12 +365,12 @@ public class TestWordBreakSpellChecker extends LuceneTestCase {
BreakSuggestionSortMethod.NUM_CHANGES_THEN_MAX_FREQUENCY);
boolean failed = true;
for (SuggestWord[] sw1 : sw) {
- Assert.assertTrue(sw1.length == 2);
+ assertEquals(2, sw1.length);
if (sw1[0].string.equals(left) && sw1[1].string.equals(right)) {
failed = false;
}
}
- Assert.assertFalse(
+ assertFalse(
"Failed getting break suggestions\n >Original: "
+ orig
+ "\n >Left: "
@@ -417,12 +385,12 @@ public class TestWordBreakSpellChecker extends LuceneTestCase {
wbsp.suggestWordCombinations(terms, originals.size(), ir, SuggestMode.SUGGEST_ALWAYS);
boolean failed = true;
for (CombineSuggestion cs1 : cs) {
- Assert.assertTrue(cs1.originalTermIndexes.length == 2);
+ assertEquals(2, cs1.originalTermIndexes.length);
if (cs1.suggestion.string.equals(left + right)) {
failed = false;
}
}
- Assert.assertFalse(
+ assertFalse(
"Failed getting combine suggestions\n >Original: "
+ orig
+ "\n >Left: "
@@ -435,12 +403,21 @@ public class TestWordBreakSpellChecker extends LuceneTestCase {
IOUtils.close(ir, dir, analyzer);
}
+ private static void assertSuggestionEquals(
+ CombineSuggestion cs, String word, float score, int... termIndexes) {
+ assertEquals(word, cs.suggestion.string);
+ assertEquals(score, cs.suggestion.score, 0);
+ assertArrayEquals(termIndexes, cs.originalTermIndexes);
+ }
+
+ private static void assertSuggestionEquals(SuggestWord sw, String word, float score) {
+ assertEquals(word, sw.string);
+ assertEquals(score, sw.score, 0);
+ }
+
private static final Pattern mockTokenizerWhitespacePattern = Pattern.compile("[ \\t\\r\\n]");
- private boolean goodTestString(String s) {
- if (s.codePointCount(0, s.length()) < 2 || mockTokenizerWhitespacePattern.matcher(s).find()) {
- return false;
- }
- return true;
+ private boolean badTestString(String s) {
+ return s.codePointCount(0, s.length()) < 2 || mockTokenizerWhitespacePattern.matcher(s).find();
}
}