use of org.drools.testcoverage.common.model.Cheese in project drools by kiegroup.
the class AccumulateTest method execTestAccumulateAverage.
private void execTestAccumulateAverage(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", 10), new Cheese("stilton", 2), new Cheese("stilton", 11), new Cheese("brie", 15), new Cheese("brie", 17), new Cheese("provolone", 8) };
final Person bob = new Person("Bob", "stilton");
final FactHandle[] cheeseHandles = new FactHandle[cheese.length];
for (int i = 0; i < cheese.length; i++) {
cheeseHandles[i] = wm.insert(cheese[i]);
}
final FactHandle bobHandle = wm.insert(bob);
// ---------------- 1st scenario
wm.fireAllRules();
// no fire, as per rule constraints
assertEquals(0, results.size());
// ---------------- 2nd scenario
final int index = 1;
cheese[index].setPrice(9);
wm.update(cheeseHandles[index], cheese[index]);
wm.fireAllRules();
// 1 fire
assertEquals(1, results.size());
assertEquals(10, ((Number) results.get(results.size() - 1)).intValue());
// ---------------- 3rd scenario
bob.setLikes("brie");
wm.update(bobHandle, bob);
wm.fireAllRules();
// 2 fires
assertEquals(2, results.size());
assertEquals(16, ((Number) results.get(results.size() - 1)).intValue());
// ---------------- 4th 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 execTestAccumulateMax.
private void execTestAccumulateMax(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 Person bob = new Person("Bob", "stilton");
final FactHandle[] cheeseHandles = new FactHandle[cheese.length];
for (int i = 0; i < cheese.length; i++) {
cheeseHandles[i] = wm.insert(cheese[i]);
}
final FactHandle bobHandle = wm.insert(bob);
// ---------------- 1st scenario
wm.fireAllRules();
// no fire, as per rule constraints
assertEquals(0, results.size());
// ---------------- 2nd scenario
final int index = 1;
cheese[index].setPrice(9);
wm.update(cheeseHandles[index], cheese[index]);
wm.fireAllRules();
// 1 fire
assertEquals(1, results.size());
assertEquals(9, ((Number) results.get(results.size() - 1)).intValue());
// ---------------- 3rd scenario
bob.setLikes("brie");
wm.update(bobHandle, bob);
wm.fireAllRules();
// 2 fires
assertEquals(2, results.size());
assertEquals(17, ((Number) results.get(results.size() - 1)).intValue());
// ---------------- 4th 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 testAccumulateModify.
@Test(timeout = 10000)
public void testAccumulateModify() {
final String drl = "package org.drools.compiler.integrationtests;\n" + "\n" + "import " + Cheese.class.getCanonicalName() + ";\n" + "import " + Cheesery.class.getCanonicalName() + ";\n" + "import " + Person.class.getCanonicalName() + ";\n" + "\n" + "global java.util.List results;\n" + "\n" + "rule \"Constraints everywhere\" salience 80\n" + " when\n" + " $person : Person( $likes : likes )\n" + " $cheesery : Cheesery( totalAmount > 20 )\n" + " from accumulate( $cheese : Cheese( type == $likes ),\n" + " init( Cheesery cheesery = new Cheesery(); ),\n" + " action( cheesery.addCheese( $cheese ); ),\n" + " result( cheesery ) );\n" + " then\n" + " results.add( $cheesery );\n" + "end";
final KieBase kbase = KieBaseUtil.getKieBaseFromKieModuleFromDrl("accumulate-test", kieBaseTestConfiguration, drl);
final KieSession wm = kbase.newKieSession();
try {
final List<?> results = new ArrayList<>();
wm.setGlobal("results", results);
final Cheese[] cheese = new Cheese[] { new Cheese("stilton", 10), new Cheese("stilton", 2), new Cheese("stilton", 5), new Cheese("brie", 15), new Cheese("brie", 16), new Cheese("provolone", 8) };
final Person bob = new Person("Bob", "stilton");
final FactHandle[] cheeseHandles = new FactHandle[cheese.length];
for (int i = 0; i < cheese.length; i++) {
cheeseHandles[i] = wm.insert(cheese[i]);
}
final org.kie.api.runtime.rule.FactHandle bobHandle = wm.insert(bob);
// ---------------- 1st scenario
wm.fireAllRules();
// no fire, as per rule constraints
assertEquals(0, results.size());
// ---------------- 2nd scenario
final int index = 1;
cheese[index].setPrice(9);
wm.update(cheeseHandles[index], cheese[index]);
wm.fireAllRules();
// 1 fire
assertEquals(1, results.size());
assertEquals(24, ((Cheesery) results.get(results.size() - 1)).getTotalAmount());
// ---------------- 3rd scenario
bob.setLikes("brie");
wm.update(bobHandle, bob);
wm.fireAllRules();
// 2 fires
assertEquals(2, results.size());
assertEquals(31, ((Cheesery) results.get(results.size() - 1)).getTotalAmount());
// ---------------- 4th scenario
wm.delete(cheeseHandles[3]);
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 testAccumulateCE.
@Test(timeout = 10000)
public void testAccumulateCE() {
final String drl = "package org.drools.compiler\n" + "import " + Cheese.class.getCanonicalName() + ";\n" + "global java.util.List results\n" + "rule \"ocount\"\n" + "when\n" + " accumulate( Cheese(), $c: count(1) )\n" + "then\n" + " results.add( $c + \" facts\" );\n" + "end\n";
final KieBase kbase = KieBaseUtil.getKieBaseFromKieModuleFromDrl("accumulate-test", kieBaseTestConfiguration, drl);
final KieSession ksession = kbase.newKieSession();
try {
final List<String> results = new ArrayList<>();
ksession.setGlobal("results", results);
final Cheese[] cheese = new Cheese[] { new Cheese("Emmentaler", 4), new Cheese("Appenzeller", 6), new Cheese("Greyerzer", 2), new Cheese("Raclette", 3), new Cheese("Olmützer Quargel", 15), new Cheese("Brie", 17), new Cheese("Dolcelatte", 8) };
for (final Cheese aCheese : cheese) {
ksession.insert(aCheese);
}
ksession.fireAllRules();
assertEquals(1, results.size());
assertEquals("7 facts", results.get(0));
} finally {
ksession.dispose();
}
}
use of org.drools.testcoverage.common.model.Cheese in project drools by kiegroup.
the class AccumulateTest method testAccumulateReverseModifyInsertLogical2.
@Test(timeout = 10000)
public void testAccumulateReverseModifyInsertLogical2() {
final KieBase kbase = KieBaseUtil.getKieBaseFromClasspathResources("accumulate-test", kieBaseTestConfiguration, "org/drools/compiler/integrationtests/test_AccumulateReverseModifyInsertLogical2.drl");
final KieSession wm = kbase.newKieSession();
try {
final List<?> results = new ArrayList<>();
wm.setGlobal("results", results);
final Cheese[] cheese = new Cheese[] { new Cheese("stilton", 10), new Cheese("stilton", 2), new Cheese("stilton", 5), new Cheese("brie", 15), new Cheese("brie", 16), new Cheese("provolone", 8) };
final Person alice = new Person("Alice", "brie");
final Person bob = new Person("Bob", "stilton");
final Person doug = new Person("Doug", "stilton");
final FactHandle[] cheeseHandles = new FactHandle[cheese.length];
for (int i = 0; i < cheese.length; i++) {
cheeseHandles[i] = wm.insert(cheese[i]);
}
wm.insert(alice);
wm.insert(bob);
// should be ignored
wm.insert(doug);
// alice = 31, bob = 17, doug = 17
// !alice = 34, !bob = 31, !doug = 31
wm.fireAllRules();
assertEquals(31, ((Number) results.get(results.size() - 1)).intValue());
// delete stilton=2 ==> bob = 15, doug = 15, !alice = 30
wm.delete(cheeseHandles[1]);
wm.fireAllRules();
assertEquals(30, ((Number) results.get(results.size() - 1)).intValue());
} finally {
wm.dispose();
}
}
Aggregations