use of org.drools.mvel.compiler.Cheese in project drools by kiegroup.
the class DescrBuilderTest method testNamedConsequence.
@Test
public void testNamedConsequence() {
PackageDescr pkg = DescrFactory.newPackage().name("org.drools.mvel.compiler").newRule().name("test").lhs().pattern("Cheese").constraint("type == \"stilton\"").end().namedConsequence().name("c1").end().pattern("Cheese").constraint("type == \"cheddar\"").end().end().rhs("// do something").namedRhs("c1", "// do something else").end().getDescr();
assertEquals(1, pkg.getRules().size());
KiePackage kpkg = compilePkgDescr(pkg);
assertEquals("org.drools.mvel.compiler", kpkg.getName());
InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addPackages(Collections.singletonList(kpkg));
KieSession ksession = kbase.newKieSession();
Cheese stilton = new Cheese("stilton", 5);
Cheese cheddar = new Cheese("cheddar", 7);
Cheese brie = new Cheese("brie", 5);
ksession.insert(stilton);
ksession.insert(cheddar);
ksession.insert(brie);
int rules = ksession.fireAllRules();
assertEquals(2, rules);
}
use of org.drools.mvel.compiler.Cheese in project drools by kiegroup.
the class JBRULESTest method testJBRules2055.
@Test
public void testJBRules2055() {
KieBase kbase = KieBaseUtil.getKieBaseFromClasspathResources(this.getClass(), kieBaseTestConfiguration, "test_JBRules2055.drl");
KieSession ksession = kbase.newKieSession();
final List<String> results = new ArrayList<String>();
ksession.setGlobal("results", results);
ksession.insert(new Cheese("stilton"));
ksession.insert(new Cheese("brie"));
ksession.insert(new Cheese("muzzarella"));
ksession.insert(new Person("bob", "stilton"));
ksession.fireAllRules();
assertEquals(2, results.size());
assertEquals("stilton", results.get(0));
assertEquals("brie", results.get(1));
}
use of org.drools.mvel.compiler.Cheese in project drools by kiegroup.
the class DslTest method testWithExpanderMore.
@Test
public void testWithExpanderMore() throws Exception {
final Resource resource1 = KieServices.Factory.get().getResources().newClassPathResource("test_expander.dsl", getClass());
resource1.setSourcePath(TestConstants.TEST_RESOURCES_FOLDER + "test_expander.dsl");
final Resource resource2 = KieServices.Factory.get().getResources().newClassPathResource("rule_with_expander_dsl_more.dslr", getClass());
resource2.setSourcePath(TestConstants.TEST_RESOURCES_FOLDER + "rule_with_expander_dsl_more.dslr");
KieBuilder kieBuilder = KieUtil.getKieBuilderFromResources(kieBaseTestConfiguration, false, resource1, resource2);
List<Message> errors = kieBuilder.getResults().getMessages(Message.Level.ERROR);
assertTrue(errors.toString(), errors.isEmpty());
// the compiled package
final Collection<KiePackage> pkgs = KieBaseUtil.getDefaultKieBaseFromKieBuilder(kieBuilder).getKiePackages();
assertEquals(2, pkgs.size());
KieBase kbase = KieBaseUtil.getDefaultKieBaseFromKieBuilder(kieBuilder);
KieSession session = kbase.newKieSession();
session.insert(new Person("rage"));
session.insert(new Cheese("cheddar", 15));
final List messages = new ArrayList();
session.setGlobal("messages", messages);
// wm = SerializationHelper.serializeObject(wm);
session.fireAllRules();
// should have NONE, as both conditions should be false.
assertEquals(0, messages.size());
session.insert(new Person("fire"));
session.fireAllRules();
// still no firings
assertEquals(0, messages.size());
session.insert(new Cheese("brie", 15));
session.fireAllRules();
// YOUR FIRED
assertEquals(1, messages.size());
}
use of org.drools.mvel.compiler.Cheese in project drools by kiegroup.
the class DslTest method checkDSLExpanderTest.
private void checkDSLExpanderTest(KieBuilder kieBuilder) throws IOException, ClassNotFoundException {
List<Message> errors = kieBuilder.getResults().getMessages(Message.Level.ERROR);
assertTrue(errors.toString(), errors.isEmpty());
// the compiled package
final Collection<KiePackage> pkgs = KieBaseUtil.getDefaultKieBaseFromKieBuilder(kieBuilder).getKiePackages();
assertEquals(2, pkgs.size());
KieBase kbase = KieBaseUtil.getDefaultKieBaseFromKieBuilder(kieBuilder);
KieSession session = kbase.newKieSession();
session.insert(new Person("Bob", "http://foo.bar"));
session.insert(new Cheese("stilton", 42));
final List messages = new ArrayList();
session.setGlobal("messages", messages);
session.fireAllRules();
assertEquals(1, messages.size());
}
use of org.drools.mvel.compiler.Cheese in project drools by kiegroup.
the class FireUntilHaltTest method testFireUntilHaltFailingAcrossEntryPoints.
@Test
public void testFireUntilHaltFailingAcrossEntryPoints() throws Exception {
String rule1 = "package org.drools.mvel.compiler\n";
rule1 += "global java.util.List list\n";
rule1 += "rule testFireUntilHalt\n";
rule1 += "when\n";
rule1 += " Cheese()\n";
rule1 += " $p : Person() from entry-point \"testep2\"\n";
rule1 += "then \n";
rule1 += " list.add( $p ) ;\n";
rule1 += "end\n";
KieBase kbase = KieBaseUtil.getKieBaseFromKieModuleFromDrl("test", kieBaseTestConfiguration, rule1);
KieSession ksession = kbase.newKieSession();
final EntryPoint ep = ksession.getEntryPoint("testep2");
final List list = new ArrayList();
ksession.setGlobal("list", list);
ksession.insert(new Cheese("cheddar"));
ksession.fireAllRules();
final Thread t1 = new Thread(ksession::fireUntilHalt);
t1.start();
Thread.sleep(500);
ep.insert(new Person("darth"));
Thread.sleep(500);
ksession.halt();
t1.join(5000);
final boolean alive = t1.isAlive();
if (alive) {
t1.interrupt();
}
assertFalse("Thread should have died!", alive);
assertEquals(1, list.size());
}
Aggregations