summaryrefslogtreecommitdiffstats
path: root/config-model/src/test/java/com/yahoo/vespa/model/container/search/SemanticRulesTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'config-model/src/test/java/com/yahoo/vespa/model/container/search/SemanticRulesTest.java')
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/search/SemanticRulesTest.java48
1 files changed, 31 insertions, 17 deletions
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/search/SemanticRulesTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/search/SemanticRulesTest.java
index d9e2ae59ef6..e20e14f9465 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/search/SemanticRulesTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/search/SemanticRulesTest.java
@@ -2,52 +2,66 @@
package com.yahoo.vespa.model.container.search;
import com.yahoo.config.model.application.provider.FilesApplicationPackage;
-import com.yahoo.language.simple.SimpleLinguistics;
import com.yahoo.prelude.semantics.RuleBase;
-import com.yahoo.prelude.semantics.RuleImporter;
import com.yahoo.prelude.semantics.SemanticRulesConfig;
import com.yahoo.prelude.semantics.parser.ParseException;
import org.junit.jupiter.api.Test;
-import static org.junit.jupiter.api.Assertions.*;
-
import java.io.File;
import java.io.IOException;
-import java.util.HashMap;
import java.util.Map;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
+
/**
* @author bratseth
*/
public class SemanticRulesTest {
- private final static String root = "src/test/java/com/yahoo/vespa/model/container/search/semanticrules";
+ private static final String basePath = "src/test/java/com/yahoo/vespa/model/container/search/";
+ private static final String root = basePath + "semanticrules";
+ private static final String rootWithErrors = basePath + "semanticrules_with_errors";
+ private static final String rootWithDuplicateDefault = basePath + "semanticrules_with_duplicate_default_rule";
@Test
- void semanticRulesTest() throws ParseException, IOException {
+ void semanticRulesTest() throws ParseException, IOException {
SemanticRuleBuilder ruleBuilder = new SemanticRuleBuilder();
SemanticRules rules = ruleBuilder.build(FilesApplicationPackage.fromFile(new File(root)));
SemanticRulesConfig.Builder configBuilder = new SemanticRulesConfig.Builder();
rules.getConfig(configBuilder);
SemanticRulesConfig config = new SemanticRulesConfig(configBuilder);
- Map<String, RuleBase> ruleBases = toMap(config);
+ Map<String, RuleBase> ruleBases = SemanticRuleBuilder.toMap(config);
assertEquals(2, ruleBases.size());
assertTrue(ruleBases.containsKey("common"));
assertTrue(ruleBases.containsKey("other"));
assertFalse(ruleBases.get("common").isDefault());
assertTrue(ruleBases.get("other").isDefault());
+ assertTrue(ruleBases.get("other").includes("common"));
+ assertNotNull(ruleBases.get("other").getCondition("stopword"));
}
- private static Map<String, RuleBase> toMap(SemanticRulesConfig config) throws ParseException, IOException {
- RuleImporter ruleImporter = new RuleImporter(config, new SimpleLinguistics());
- Map<String, RuleBase> ruleBaseMap = new HashMap<>();
- for (SemanticRulesConfig.Rulebase ruleBaseConfig : config.rulebase()) {
- RuleBase ruleBase = ruleImporter.importConfig(ruleBaseConfig);
- if (ruleBaseConfig.isdefault())
- ruleBase.setDefault(true);
- ruleBaseMap.put(ruleBase.getName(), ruleBase);
+ @Test
+ void rulesWithErrors() {
+ try {
+ new SemanticRuleBuilder().build(FilesApplicationPackage.fromFile(new File(rootWithErrors)));
+ fail("should fail with exception");
+ } catch (Exception e) {
+ assertEquals("com.yahoo.prelude.semantics.parser.ParseException: Could not parse 'semantic-rules.cfg'", e.getMessage());
+ }
+ }
+
+ @Test
+ void rulesWithDuplicateDefault() {
+ try {
+ new SemanticRuleBuilder().build(FilesApplicationPackage.fromFile(new File(rootWithDuplicateDefault)));
+ fail("should fail with exception");
+ } catch (Exception e) {
+ assertEquals("Rules [one, other] are both marked as the default rule, there can only be one", e.getMessage());
}
- return ruleBaseMap;
}
}