use of com.yahoo.prelude.semantics.rule.TermCondition in project vespa by vespa-engine.
the class ConditionTestCase method testChoiceCondition.
public void testChoiceCondition() {
TermCondition term1 = new TermCondition("foo");
TermCondition term2 = new TermCondition("bar");
ChoiceCondition choice = new ChoiceCondition();
choice.addCondition(term1);
choice.addCondition(term2);
Query query1 = new Query("?query=foo+bar");
assertTrue(query1 + " matches " + choice, choice.matches(new Evaluation(query1).freshRuleEvaluation()));
Query query2 = new Query("?query=foo");
assertTrue(query2 + " matches " + choice, choice.matches(new Evaluation(query2).freshRuleEvaluation()));
Query query3 = new Query("?query=bar");
assertTrue(query3 + " matches " + choice, choice.matches(new Evaluation(query3).freshRuleEvaluation()));
}
use of com.yahoo.prelude.semantics.rule.TermCondition in project vespa by vespa-engine.
the class ConditionTestCase method testSequenceCondition.
public void testSequenceCondition() {
TermCondition term1 = new TermCondition("foo");
TermCondition term2 = new TermCondition("bar");
SequenceCondition sequence = new SequenceCondition();
sequence.addCondition(term1);
sequence.addCondition(term2);
Query query = new Query("?query=foo+bar");
assertTrue(query + " matches " + sequence, sequence.matches(new Evaluation(query).freshRuleEvaluation()));
Query query2 = new Query("?query=foo");
assertFalse(query2 + " does not match " + sequence, sequence.matches(new Evaluation(query2).freshRuleEvaluation()));
Query query3 = new Query("?query=bar");
assertFalse(query3 + " does not match " + sequence, sequence.matches(new Evaluation(query3).freshRuleEvaluation()));
}
use of com.yahoo.prelude.semantics.rule.TermCondition in project vespa by vespa-engine.
the class ConditionTestCase method testNamedConditionReference.
public void testNamedConditionReference() {
TermCondition term = new TermCondition("foo");
NamedCondition named = new NamedCondition("cond", term);
ConditionReference reference = new ConditionReference("cond");
// To initialize the condition reference...
ProductionRule rule = new ReplacingProductionRule();
rule.setCondition(reference);
rule.setProduction(new ProductionList());
RuleBase ruleBase = new RuleBase();
ruleBase.setName("test");
ruleBase.addCondition(named);
ruleBase.addRule(rule);
ruleBase.initialize();
Query query = new Query("?query=foo");
assertTrue(query + " matches " + reference, reference.matches(new Evaluation(query).freshRuleEvaluation()));
}
use of com.yahoo.prelude.semantics.rule.TermCondition in project vespa by vespa-engine.
the class ConditionTestCase method testTermCondition.
public void testTermCondition() {
TermCondition term = new TermCondition("foo");
Query query = new Query("?query=foo");
assertTrue(term.matches(new Evaluation(query).freshRuleEvaluation()));
}
use of com.yahoo.prelude.semantics.rule.TermCondition in project vespa by vespa-engine.
the class ProductionRuleTestCase method testProductionRule.
public void testProductionRule() {
TermCondition term = new TermCondition("sony");
NamedCondition named = new NamedCondition("brand", term);
ConditionReference reference = new ConditionReference("brand");
TermProduction termProduction = new ReferenceTermProduction("brand", "brand");
ProductionList productionList = new ProductionList();
productionList.addProduction(termProduction);
ProductionRule rule = new ReplacingProductionRule();
rule.setCondition(reference);
rule.setProduction(productionList);
// To initialize the condition reference...
RuleBase ruleBase = new RuleBase();
ruleBase.setName("test");
ruleBase.addCondition(named);
ruleBase.addRule(rule);
ruleBase.initialize();
assertTrue("Brand is referenced", rule.matchReferences().contains("brand"));
Query query = new Query("?query=sony");
RuleEvaluation e = new Evaluation(query).freshRuleEvaluation();
assertTrue(rule.matches(e));
rule.produce(e);
assertEquals("brand:sony", query.getModel().getQueryTree().getRoot().toString());
}
Aggregations