|
27 | 27 | import java.util.HashMap; |
28 | 28 | import java.util.Map; |
29 | 29 |
|
| 30 | +import static org.hamcrest.Matchers.instanceOf; |
| 31 | + |
30 | 32 | public class PhraseSuggestionBuilderTests extends AbstractSuggestionBuilderTestCase<PhraseSuggestionBuilder> { |
31 | 33 | @Override |
32 | 34 | protected PhraseSuggestionBuilder randomSuggestionBuilder() { |
@@ -187,5 +189,41 @@ public void testInvalidParameters() { |
187 | 189 |
|
188 | 190 | @Override |
189 | 191 | protected void assertSuggester(PhraseSuggestionBuilder builder, SuggestionContext context) { |
| 192 | + assertThat(context, instanceOf(PhraseSuggestionContext.class)); |
| 193 | + assertThat(context.getSuggester(), instanceOf(PhraseSuggester.class)); |
| 194 | + PhraseSuggestionContext phraseSuggesterCtx = (PhraseSuggestionContext) context; |
| 195 | + assertOptionalEquals(builder.confidence(), phraseSuggesterCtx.confidence(), PhraseSuggestionContext.DEFAULT_CONFIDENCE); |
| 196 | + assertOptionalEquals(builder.collatePrune(), phraseSuggesterCtx.collatePrune(), PhraseSuggestionContext.DEFAULT_COLLATE_PRUNE); |
| 197 | + assertEquals(builder.separator(), phraseSuggesterCtx.separator().utf8ToString()); |
| 198 | + assertOptionalEquals(builder.realWordErrorLikelihood(), phraseSuggesterCtx.realworldErrorLikelyhood(), |
| 199 | + PhraseSuggestionContext.DEFAULT_RWE_ERRORLIKELIHOOD); |
| 200 | + assertOptionalEquals(builder.maxErrors(), phraseSuggesterCtx.maxErrors(), PhraseSuggestionContext.DEFAULT_MAX_ERRORS); |
| 201 | + assertOptionalEquals(builder.forceUnigrams(), phraseSuggesterCtx.getRequireUnigram(), |
| 202 | + PhraseSuggestionContext.DEFAULT_REQUIRE_UNIGRAM); |
| 203 | + assertOptionalEquals(builder.tokenLimit(), phraseSuggesterCtx.getTokenLimit(), NoisyChannelSpellChecker.DEFAULT_TOKEN_LIMIT); |
| 204 | + assertEquals(builder.preTag(), phraseSuggesterCtx.getPreTag() != null ? phraseSuggesterCtx.getPreTag().utf8ToString() : null); |
| 205 | + assertEquals(builder.postTag(), phraseSuggesterCtx.getPostTag() != null ? phraseSuggesterCtx.getPostTag().utf8ToString() : null); |
| 206 | + assertOptionalEquals(builder.gramSize(), phraseSuggesterCtx.gramSize(), PhraseSuggestionContext.DEFAULT_GRAM_SIZE); |
| 207 | + if (builder.collateQuery() != null) { |
| 208 | + assertEquals(builder.collateQuery().getIdOrCode(), phraseSuggesterCtx.getCollateQueryScript().newInstance(null).execute()); |
| 209 | + } |
| 210 | + if (builder.collateParams() != null) { |
| 211 | + assertEquals(builder.collateParams(), phraseSuggesterCtx.getCollateScriptParams()); |
| 212 | + } |
| 213 | + if (builder.smoothingModel() != null) { |
| 214 | + assertEquals(builder.smoothingModel().buildWordScorerFactory().getClass(), phraseSuggesterCtx.model().getClass()); |
| 215 | + } |
| 216 | + if (builder.getCandidateGenerators().isEmpty() == false) { |
| 217 | + // currently, "direct_generator" is the only one available. Only compare size of the lists |
| 218 | + assertEquals(builder.getCandidateGenerators().get("direct_generator").size(), phraseSuggesterCtx.generators().size()); |
| 219 | + } |
| 220 | + } |
| 221 | + |
| 222 | + private static <T> void assertOptionalEquals(T optional, T actual, T defaultValue) { |
| 223 | + if (optional != null) { |
| 224 | + assertEquals(optional, actual); |
| 225 | + } else { |
| 226 | + assertEquals(defaultValue, actual); |
| 227 | + } |
190 | 228 | } |
191 | 229 | } |
0 commit comments