use of org.drools.mvel.compiler.Person in project drools by kiegroup.
the class FirstOrderLogicTest method testExists2.
@Test
public void testExists2() throws Exception {
KieBase kbase = KieBaseUtil.getKieBaseFromClasspathResources(getClass(), kieBaseTestConfiguration, "test_exists.drl");
KieSession workingMemory = kbase.newKieSession();
final List list = new ArrayList();
workingMemory.setGlobal("list", list);
final Cheese cheddar = new Cheese("cheddar", 7);
final Cheese provolone = new Cheese("provolone", 5);
final Person edson = new Person("Edson", "cheddar");
final Person bob = new Person("Bob", "muzzarela");
workingMemory.insert(cheddar);
workingMemory.fireAllRules();
assertEquals(0, list.size());
workingMemory.insert(provolone);
workingMemory.fireAllRules();
assertEquals(0, list.size());
workingMemory.insert(edson);
workingMemory.fireAllRules();
assertEquals(1, list.size());
workingMemory.insert(bob);
workingMemory.fireAllRules();
assertEquals(1, list.size());
}
use of org.drools.mvel.compiler.Person in project drools by kiegroup.
the class FirstOrderLogicTest method testCollect.
@Test
public void testCollect() throws Exception {
List results = new ArrayList();
KieBase kbase = KieBaseUtil.getKieBaseFromClasspathResources(getClass(), kieBaseTestConfiguration, "test_Collect.drl");
KieSession wm = kbase.newKieSession();
wm.setGlobal("results", results);
wm.insert(new Cheese("stilton", 10));
wm.insert(new Cheese("stilton", 7));
wm.insert(new Cheese("stilton", 8));
wm.insert(new Cheese("brie", 5));
wm.insert(new Cheese("provolone", 150));
wm = SerializationHelper.getSerialisedStatefulKnowledgeSession(wm, true);
results = (List) wm.getGlobal("results");
wm.insert(new Cheese("provolone", 20));
wm.insert(new Person("Bob", "stilton"));
wm.insert(new Person("Mark", "provolone"));
wm = SerializationHelper.getSerialisedStatefulKnowledgeSession(wm, true);
results = (List) wm.getGlobal("results");
wm.fireAllRules();
wm = SerializationHelper.getSerialisedStatefulKnowledgeSession(wm, true);
results = (List) wm.getGlobal("results");
assertEquals(1, results.size());
assertEquals(3, ((Collection) results.get(0)).size());
assertEquals(ArrayList.class.getName(), results.get(0).getClass().getName());
}
use of org.drools.mvel.compiler.Person in project drools by kiegroup.
the class QueryTest method testQueriesWithVariableUnificationOnPatterns.
@Test
public void testQueriesWithVariableUnificationOnPatterns() throws Exception {
String str = "";
str += "package org.drools.mvel.compiler.test \n";
str += "import org.drools.mvel.compiler.Person \n";
str += "query peeps( Person $p, String $name, String $likes, int $age ) \n";
str += " $p := Person( $name := name, $likes := likes, $age := age ) \n";
str += "end\n";
KieBase kbase = KieBaseUtil.getKieBaseFromKieModuleFromDrl("test", kieBaseTestConfiguration, str);
KieSession ksession = kbase.newKieSession();
Person p1 = new Person("darth", "stilton", 100);
Person p2 = new Person("yoda", "stilton", 300);
Person p3 = new Person("luke", "brie", 300);
Person p4 = new Person("bobba", "cheddar", 300);
ksession.insert(p1);
ksession.insert(p2);
ksession.insert(p3);
ksession.insert(p4);
org.kie.api.runtime.rule.QueryResults results = ksession.getQueryResults("peeps", new Object[] { Variable.v, Variable.v, Variable.v, Variable.v });
assertEquals(4, results.size());
List names = new ArrayList();
for (org.kie.api.runtime.rule.QueryResultsRow row : results) {
names.add(((Person) row.get("$p")).getName());
}
assertEquals(4, names.size());
assertTrue(names.contains("luke"));
assertTrue(names.contains("yoda"));
assertTrue(names.contains("bobba"));
assertTrue(names.contains("darth"));
results = ksession.getQueryResults("peeps", new Object[] { p1, Variable.v, Variable.v, Variable.v });
assertEquals(1, results.size());
names = new ArrayList();
for (org.kie.api.runtime.rule.QueryResultsRow row : results) {
names.add(((Person) row.get("$p")).getName());
}
assertEquals(1, names.size());
assertTrue(names.contains("darth"));
}
use of org.drools.mvel.compiler.Person in project drools by kiegroup.
the class QueryTest method testQueriesWithVariableUnificationOnNestedFields.
@Test
public void testQueriesWithVariableUnificationOnNestedFields() throws Exception {
String str = "";
str += "package org.drools.mvel.compiler.test \n";
str += "import org.drools.mvel.compiler.Person \n";
str += "query peeps( String $name, String $likes, String $street) \n";
str += " $p : Person( $name := name, $likes := likes, $street := address.street ) \n";
str += "end\n";
KieBase kbase = KieBaseUtil.getKieBaseFromKieModuleFromDrl("test", kieBaseTestConfiguration, str);
KieSession ksession = kbase.newKieSession();
Person p1 = new Person("darth", "stilton", 100);
p1.setAddress(new Address("s1"));
Person p2 = new Person("yoda", "stilton", 300);
p2.setAddress(new Address("s2"));
ksession.insert(p1);
ksession.insert(p2);
QueryResults results = getQueryResults(ksession, "peeps", new Object[] { Variable.v, Variable.v, Variable.v });
assertEquals(2, results.size());
List names = new ArrayList();
for (org.kie.api.runtime.rule.QueryResultsRow row : results) {
names.add(((Person) row.get("$p")).getName());
}
assertTrue(names.contains("yoda"));
assertTrue(names.contains("darth"));
results = getQueryResults(ksession, "peeps", new Object[] { Variable.v, Variable.v, "s1" });
assertEquals(1, results.size());
names = new ArrayList();
for (org.kie.api.runtime.rule.QueryResultsRow row : results) {
names.add(((Person) row.get("$p")).getName());
}
assertTrue(names.contains("darth"));
}
use of org.drools.mvel.compiler.Person in project drools by kiegroup.
the class QueryTest method testQueryWithExpressionAsArgument.
@Test
public void testQueryWithExpressionAsArgument() throws Exception {
// DROOLS-414
String str = "import org.drools.mvel.compiler.Person\n" + "global java.util.List persons;\n" + "\n" + "query checkLength(String $s, int $l)\n" + " $s := String( length == $l )\n" + "end\n" + "\n" + "rule R when\n" + " $i : Integer()\n" + " $p : Person()\n" + " checkLength( $p.name, 1 + $i + $p.age; )\n" + "then\n" + " persons.add( $p );\n" + "end\n";
KieBase kbase = KieBaseUtil.getKieBaseFromKieModuleFromDrl("test", kieBaseTestConfiguration, str);
KieSession ksession = kbase.newKieSession();
List<Person> list = new ArrayList<Person>();
ksession.setGlobal("persons", list);
ksession.insert(1);
ksession.insert("Mark");
ksession.insert("Edson");
ksession.insert("Mario");
ksession.insert(new Person("Mark", 2));
ksession.insert(new Person("Edson", 3));
ksession.insert(new Person("Mario", 4));
ksession.fireAllRules();
System.out.println(list);
assertEquals(2, list.size());
for (Person p : list) {
assertTrue(p.getName().equals("Mark") || p.getName().equals("Edson"));
}
}
Aggregations