use of org.drools.testcoverage.common.model.Cheese in project drools by kiegroup.
the class ConstraintsTest method testDeepNestedConstraints.
@Test
public void testDeepNestedConstraints() {
final String drl = "package org.drools.compiler\n" + "import " + Person.class.getCanonicalName() + ";\n" + "import " + Cheese.class.getCanonicalName() + ";\n" + "global java.util.List results;\n" + "\n" + "rule \"deep nested constraints\"\n" + "when\n" + " Person( $likes : likes )\n" + " Cheese( ( ( type == \"stilton\" || type == $likes ) && ( price < 10 || price > 50 ) ) || eval( type.equals(\"brie\") ) )\n" + "then\n" + " results.add( \"OK\" );\n" + "end";
final KieBase kbase = KieBaseUtil.getKieBaseFromKieModuleFromDrl("constraints-test", kieBaseTestConfiguration, drl);
final KieSession ksession = kbase.newKieSession();
try {
final List list = new ArrayList();
ksession.setGlobal("results", list);
ksession.insert(new Person("bob", "muzzarela"));
ksession.insert(new Cheese("brie", 10));
ksession.insert(new Cheese("muzzarela", 80));
ksession.fireAllRules();
assertEquals("should have fired twice", 2, list.size());
} finally {
ksession.dispose();
}
}
use of org.drools.testcoverage.common.model.Cheese in project drools by kiegroup.
the class IndexingTest method testNotNode.
@Test(timeout = 10000)
public void testNotNode() {
final String drl = "import " + Cheese.class.getCanonicalName() + ";\n" + "import " + Person.class.getCanonicalName() + ";\n" + "rule R1 salience 10\n" + "when\n" + " Person( $age : age )" + " not Cheese( price < $age )\n" + "then\n" + "end\n" + "rule R2 salience 1\n" + "when\n" + " $p : Person( age == 10 )" + "then\n" + " modify($p) { setAge(15); }\n" + "end\n";
final KieBase kbase = KieBaseUtil.getKieBaseFromKieModuleFromDrl("indexing-test", kieBaseTestConfiguration, drl);
final KieSession ksession = kbase.newKieSession();
try {
ksession.insert(new Person("mario", 10));
ksession.insert(new Cheese("gorgonzola", 20));
assertEquals(3, ksession.fireAllRules());
} finally {
ksession.dispose();
}
}
use of org.drools.testcoverage.common.model.Cheese in project drools by kiegroup.
the class TimerAndCalendarWithRealTimeTest method testFireRuleAfterDuration.
@Test(timeout = 10000)
public void testFireRuleAfterDuration() throws Exception {
final String drl = "package org.drools.compiler.test;\n" + "import " + Cheese.class.getCanonicalName() + ";\n" + "global java.util.List list;\n" + "\n" + "rule delayed\n" + " duration 100\n" + " when\n" + " cheese : Cheese( $type:type == \"brie\" )\n" + " then\n" + " list.add( cheese );\n" + " insert(new Cheese(\"stilton\", 42));\n" + " delete(cheese);\n" + "end\n" + "\n" + "rule after_delayed\n" + " when\n" + " cheese : Cheese( $type:type == \"stilton\" )\n" + " then\n" + " list.add( cheese );\n" + "end";
final KieBase kbase = KieBaseUtil.getKieBaseFromKieModuleFromDrl("timer-and-calendar-test", kieBaseTestConfiguration, drl);
ksession = kbase.newKieSession();
final List list = new ArrayList();
ksession.setGlobal("list", list);
final Cheese brie = new Cheese("brie", 12);
ksession.insert(brie);
ksession.fireAllRules();
// now check for update
assertEquals(0, list.size());
awaitUntilRulesThatFiredAre(1);
// now check for update
assertEquals(2, list.size());
}
use of org.drools.testcoverage.common.model.Cheese in project drools by kiegroup.
the class JoinNodeRangeIndexingTest method testCoercionIntVsStringWithMap.
@Test
public void testCoercionIntVsStringWithMap() {
// we don't enable range index for this case
final String drl = "package org.drools.compiler.integrationtests;\n" + "import " + Cheese.class.getCanonicalName() + ";\n" + "import " + MapHolder.class.getCanonicalName() + ";\n" + "global java.util.List list;\n" + "rule R\n" + " when\n" + " Cheese($type : type)" + " p : MapHolder(map.get(\"key\") < $type)\n" + " then\n" + " list.add( p );\n" + "end";
// String is coerced to Integer (thus, Number comparison)
final KieBase kbase = getKieBaseWithRangeIndexOption(drl);
// We don't index this case
assertIndexedFalse(kbase, MapHolder.class);
final KieSession ksession = kbase.newKieSession();
try {
final List<MapHolder> list = new ArrayList<>();
ksession.setGlobal("list", list);
final MapHolder holder1 = new MapHolder();
holder1.getMap().put("key", 1);
ksession.insert(holder1);
final MapHolder holder5 = new MapHolder();
holder5.getMap().put("key", 5);
ksession.insert(holder5);
final MapHolder holder10 = new MapHolder();
holder10.getMap().put("key", 10);
ksession.insert(holder10);
final Cheese cheese = new Cheese("5");
ksession.insert(cheese);
ksession.fireAllRules();
Assertions.assertThat(list).containsExactly(holder1);
} finally {
ksession.dispose();
}
}
use of org.drools.testcoverage.common.model.Cheese in project drools by kiegroup.
the class OrTest method testRestrictionsWithOr.
@Test
public void testRestrictionsWithOr() {
// JBRULES-2203: NullPointerException When Using Conditional Element "or" in LHS Together with a Return Value Restriction
final String drl = "package org.drools.compiler.integrationtests.operators;\n" + "import " + Cheese.class.getCanonicalName() + ";\n" + "rule \"test\"\n" + "when\n" + " Cheese( price == (1 + 1) );\n" + " (or eval(true);\n" + " eval(true);\n" + " )\n" + "then\n" + "end";
final KieBase kbase = KieBaseUtil.getKieBaseFromKieModuleFromDrl("or-test", kieBaseTestConfiguration, drl);
final KieSession ksession = kbase.newKieSession();
try {
ksession.insert(new Cheese("Stilton", 2));
final int rules = ksession.fireAllRules();
assertEquals(2, rules);
} finally {
ksession.dispose();
}
}
Aggregations