use of org.drools.testcoverage.common.model.Cheese in project drools by kiegroup.
the class AccumulateTest method execTestAccumulateCollectList.
private void execTestAccumulateCollectList(final String fileName) {
final KieBase kbase = KieBaseUtil.getKieBaseFromClasspathResources("accumulate-test", kieBaseTestConfiguration, fileName);
final KieSession wm = kbase.newKieSession();
try {
final List<?> results = new ArrayList<>();
wm.setGlobal("results", results);
final Cheese[] cheese = new Cheese[] { new Cheese("stilton", 4), new Cheese("stilton", 2), new Cheese("stilton", 3), new Cheese("brie", 15), new Cheese("brie", 17), new Cheese("provolone", 8) };
final FactHandle[] cheeseHandles = new FactHandle[cheese.length];
for (int i = 0; i < cheese.length; i++) {
cheeseHandles[i] = wm.insert(cheese[i]);
}
// ---------------- 1st scenario
wm.fireAllRules();
assertEquals(1, results.size());
assertEquals(6, ((List) results.get(results.size() - 1)).size());
// ---------------- 2nd scenario
final int index = 1;
cheese[index].setPrice(9);
wm.update(cheeseHandles[index], cheese[index]);
wm.fireAllRules();
// fire again
assertEquals(2, results.size());
assertEquals(6, ((List) results.get(results.size() - 1)).size());
// ---------------- 3rd scenario
wm.delete(cheeseHandles[3]);
wm.delete(cheeseHandles[4]);
wm.fireAllRules();
// should not have fired as per constraint
assertEquals(2, results.size());
} finally {
wm.dispose();
}
}
use of org.drools.testcoverage.common.model.Cheese in project drools by kiegroup.
the class AccumulateTest method execTestAccumulateCollectSet.
private void execTestAccumulateCollectSet(final String fileName) {
final KieBase kbase = KieBaseUtil.getKieBaseFromClasspathResources("accumulate-test", kieBaseTestConfiguration, fileName);
final KieSession wm = kbase.newKieSession();
try {
final List<?> results = new ArrayList<>();
wm.setGlobal("results", results);
final Cheese[] cheese = new Cheese[] { new Cheese("stilton", 4), new Cheese("stilton", 2), new Cheese("stilton", 3), new Cheese("brie", 15), new Cheese("brie", 17), new Cheese("provolone", 8) };
final FactHandle[] cheeseHandles = new FactHandle[cheese.length];
for (int i = 0; i < cheese.length; i++) {
cheeseHandles[i] = wm.insert(cheese[i]);
}
// ---------------- 1st scenario
wm.fireAllRules();
assertEquals(1, results.size());
assertEquals(3, ((Set) results.get(results.size() - 1)).size());
// ---------------- 2nd scenario
final int index = 1;
cheese[index].setPrice(9);
wm.update(cheeseHandles[index], cheese[index]);
wm.fireAllRules();
// fire again
assertEquals(2, results.size());
assertEquals(3, ((Set) results.get(results.size() - 1)).size());
// ---------------- 3rd scenario
wm.delete(cheeseHandles[3]);
wm.fireAllRules();
// fire again
assertEquals(3, results.size());
assertEquals(3, ((Set) results.get(results.size() - 1)).size());
// ---------------- 4rd scenario
wm.delete(cheeseHandles[4]);
wm.fireAllRules();
// should not have fired as per constraint
assertEquals(3, results.size());
} finally {
wm.dispose();
}
}
use of org.drools.testcoverage.common.model.Cheese in project drools by kiegroup.
the class AccumulateTest method cheeseInsertsFunction.
private double cheeseInsertsFunction(final KieBase kieBase, final int... prices) {
final KieSession ksession = kieBase.newKieSession();
try {
final List<Double> list = new ArrayList<>();
ksession.setGlobal("list", list);
for (final int price : prices) {
ksession.insert(new Cheese("stilton", price));
}
ksession.fireAllRules();
assertEquals(1, list.size());
final double result = list.get(0);
final FactHandle triggerReverseHandle = ksession.insert(new Cheese("triggerReverse", 7));
ksession.fireAllRules();
ksession.delete(triggerReverseHandle);
list.clear();
ksession.fireAllRules();
assertEquals(1, list.size());
// Check that the reserse() does the opposite of the accumulate()
assertEquals(result, list.get(0), 0.001);
return list.get(0);
} finally {
ksession.dispose();
}
}
use of org.drools.testcoverage.common.model.Cheese in project drools by kiegroup.
the class BindTest method testBindingsOnConnectiveExpressions.
@Test
public void testBindingsOnConnectiveExpressions() {
final String drl = "package org.drools.compiler.integrationtests.drl;\n" + "import " + Cheese.class.getCanonicalName() + ";\n" + "global java.util.List results;\n" + "rule \"bindings\"\n" + "when\n" + " Cheese( $p : price, $t : type, type == \"stilton\" || price == 10 )\n" + "then\n" + " results.add( $t );\n" + " results.add( new Integer( $p ) );\n" + "end";
final KieBase kbase = KieBaseUtil.getKieBaseFromKieModuleFromDrl("bind-test", kieBaseTestConfiguration, drl);
final KieSession ksession = kbase.newKieSession();
try {
final List results = new ArrayList();
ksession.setGlobal("results", results);
ksession.insert(new Cheese("stilton", 15));
ksession.fireAllRules();
assertEquals(2, results.size());
assertEquals("stilton", results.get(0));
assertEquals(15, results.get(1));
} finally {
ksession.dispose();
}
}
use of org.drools.testcoverage.common.model.Cheese in project drools by kiegroup.
the class BindTest method testFactBindings.
@Test
public void testFactBindings() {
final String drl = "package org.drools.compiler.integrationtests.drl;\n" + "import " + Cheese.class.getCanonicalName() + ";\n" + "import " + Person.class.getCanonicalName() + ";\n" + " \n" + "rule \"simple rule\"\n" + " no-loop true\n" + " when\n" + " $person : Person( name == \"big cheese\", $cheese : cheese )\n" + " then\n" + " update( $cheese );\n" + " update( $person );\n" + "end";
final KieBase kbase = KieBaseUtil.getKieBaseFromKieModuleFromDrl("bind-test", kieBaseTestConfiguration, drl);
final KieSession ksession = kbase.newKieSession();
try {
final RuleRuntimeEventListener wmel = mock(RuleRuntimeEventListener.class);
ksession.addEventListener(wmel);
final Person bigCheese = new Person("big cheese");
final Cheese cheddar = new Cheese("cheddar", 15);
bigCheese.setCheese(cheddar);
final FactHandle bigCheeseHandle = ksession.insert(bigCheese);
final FactHandle cheddarHandle = ksession.insert(cheddar);
ksession.fireAllRules();
final ArgumentCaptor<ObjectUpdatedEvent> arg = ArgumentCaptor.forClass(org.kie.api.event.rule.ObjectUpdatedEvent.class);
verify(wmel, times(2)).objectUpdated(arg.capture());
org.kie.api.event.rule.ObjectUpdatedEvent event = arg.getAllValues().get(0);
assertSame(cheddarHandle, event.getFactHandle());
assertSame(cheddar, event.getOldObject());
assertSame(cheddar, event.getObject());
event = arg.getAllValues().get(1);
assertSame(bigCheeseHandle, event.getFactHandle());
assertSame(bigCheese, event.getOldObject());
assertSame(bigCheese, event.getObject());
} finally {
ksession.dispose();
}
}
Aggregations