use of org.drools.testcoverage.common.model.OrderItem in project drools by kiegroup.
the class FromTest method testFromNestedAccessors.
@Test
public void testFromNestedAccessors() {
final String drl = "package org.drools.compiler.integrationtests.operators;\n" + "import " + Order.class.getCanonicalName() + ";\n" + "import " + OrderItem.class.getCanonicalName() + ";\n" + "global java.util.List results;\n" + "rule \"test from nested accessors\"\n" + "when\n" + " $oi : OrderItem( seq == 1 )\n" + " $os : Order.OrderStatus() from $oi.order.status\n" + "then\n" + " results.add( $os );\n" + "end";
final KieBase kbase = KieBaseUtil.getKieBaseFromKieModuleFromDrl("from-test", kieBaseTestConfiguration, drl);
final KieSession ksession = kbase.newKieSession();
try {
final List list = new ArrayList();
ksession.setGlobal("results", list);
final Order order1 = new Order(11, "Bob");
final OrderItem item11 = new OrderItem(order1, 1);
final OrderItem item12 = new OrderItem(order1, 2);
order1.addItem(item11);
order1.addItem(item12);
ksession.insert(order1);
ksession.insert(item11);
ksession.insert(item12);
ksession.fireAllRules();
assertEquals(1, list.size());
assertSame(order1.getStatus(), list.get(0));
} finally {
ksession.dispose();
}
}
use of org.drools.testcoverage.common.model.OrderItem in project drools by kiegroup.
the class ContainsTest method testNotContainsOperator.
@Test
public void testNotContainsOperator() {
// JBRULES-2404: "not contains" operator doesn't work on nested fields
final String str = "package org.drools.compiler.integrationtests.operators\n" + "import " + Order.class.getCanonicalName() + " ;\n" + "import " + OrderItem.class.getCanonicalName() + " ;\n" + "rule NotContains\n" + "when\n" + " $oi : OrderItem( )\n" + " $o : Order( items.values() not contains $oi )" + "then\n" + "end";
final KieBase kieBase = KieBaseUtil.getKieBaseFromKieModuleFromDrl("contains-test", kieBaseTestConfiguration, str);
final KieSession ksession = kieBase.newKieSession();
try {
final Order order1 = new Order(1, "XYZ");
final Order order2 = new Order(2, "ABC");
final OrderItem item11 = new OrderItem(order1, 1);
order1.addItem(item11);
final OrderItem item21 = new OrderItem(order2, 1);
order2.addItem(item21);
ksession.insert(order1);
ksession.insert(item11);
// should not fire, as item11 is contained in order1.items
int rules = ksession.fireAllRules();
assertEquals(0, rules);
// should fire as item21 is not contained in order1.items
ksession.insert(item21);
rules = ksession.fireAllRules();
assertEquals(1, rules);
} finally {
ksession.dispose();
}
}
use of org.drools.testcoverage.common.model.OrderItem in project drools by kiegroup.
the class EvalRewriteTest method testEvalRewriteMatches.
@Test
public void testEvalRewriteMatches() {
final String drl = "package org.drools.compiler.integrationtests.operators;\n" + "import " + OrderItem.class.getCanonicalName() + " ;\n" + "import " + Order.class.getCanonicalName() + " ;\n" + "global java.util.List results;\n" + "\n" + "rule \"eval rewrite with 'matches'\"\n" + " salience 20\n" + " when\n" + " $oi : OrderItem( order.number == 14, seq == 1, order.customer matches \"M\\\\w*\" )\n" + " then\n" + " results.add( $oi );\n" + "end\n" + "\n" + "rule \"eval rewrite with 'not matches'\"\n" + " salience 10\n" + " when\n" + " $oi : OrderItem( order.number == 14, seq == 2, order.customer not matches \"B\\\\w*\" )\n" + " then\n" + " results.add( $oi );\n" + "end\n";
final KieBase kbase = KieBaseUtil.getKieBaseFromKieModuleFromDrl("eval-rewrite-test", kieBaseTestConfiguration, drl);
final KieSession ksession = kbase.newKieSession();
try {
final List list = new ArrayList();
ksession.setGlobal("results", list);
final Order order1 = new Order(14, "Mark");
final OrderItem item11 = new OrderItem(order1, 1);
final OrderItem item12 = new OrderItem(order1, 2);
order1.addItem(item11);
order1.addItem(item12);
ksession.insert(order1);
ksession.insert(item11);
ksession.insert(item12);
ksession.fireAllRules();
assertEquals(2, list.size());
assertTrue(list.contains(item11));
assertTrue(list.contains(item12));
} finally {
ksession.dispose();
}
}
use of org.drools.testcoverage.common.model.OrderItem in project drools by kiegroup.
the class EvalRewriteTest method testEvalRewriteWithSpecialOperators.
@Test
public void testEvalRewriteWithSpecialOperators() {
final String drl = "package org.drools.compiler\n" + "import " + OrderItem.class.getCanonicalName() + " ;\n" + "import " + Order.class.getCanonicalName() + " ;\n" + "global java.util.List results;\n" + "\n" + "// [not] in\n" + "// [not] contains\n" + "// [not] memberOf\n" + "// excludes\n" + "// [not] matches\n" + "\n" + "rule \"eval rewrite with 'in'\"\n" + " salience 100\n" + " when\n" + " Order( $id : number == 10 )\n" + " $o : OrderItem( order.number in ( 1, (1+1), $id ), seq == 1 )\n" + " then\n" + " results.add( $o );\n" + "end\n" + "\n" + "rule \"eval rewrite with 'not in'\"\n" + " salience 90\n" + " when\n" + " Order( $id : number == 10 )\n" + " $o : OrderItem( order.number not in ( 1, (1+1), ( $id + 1 ) ), order.number == $id, seq == 2 )\n" + " then\n" + " results.add( $o );\n" + "end\n" + "\n" + "rule \"eval rewrite with 'contains'\"\n" + " salience 80\n" + " when\n" + " $o : OrderItem( order.number == 11, seq == 1 )\n" + " Order( this.itemsValues contains $o )\n" + " then\n" + " results.add( $o );\n" + "end\n" + "\n" + "rule \"eval rewrite with 'not contains'\"\n" + " salience 70\n" + " when\n" + " $o : OrderItem( order.number == 11, seq == 2 )\n" + " Order( number == 12, this.itemsValues not contains $o )\n" + " then\n" + " results.add( $o );\n" + "end\n" + "\n" + "rule \"eval rewrite with 'memberOf'\"\n" + " salience 60\n" + " when\n" + " $order : Order( number == 12 )\n" + " $o : OrderItem( seq == 1, order.number==12, this.seq memberOf $order.itemsKeys )\n" + " then\n" + " results.add( $o );\n" + "end\n" + "\n" + "rule \"eval rewrite with 'not memberOf'\"\n" + " salience 50\n" + " when\n" + " $order : Order( number == 11 )\n" + " $o : OrderItem( seq == 3, order.number==12, this.seq not memberOf $order.itemsKeys )\n" + " then\n" + " results.add( $o );\n" + "end\n" + "\n" + "rule \"eval rewrite with 'excludes'\"\n" + " salience 30\n" + " when\n" + " $o : OrderItem( order.number == 13, seq == 1 )\n" + " Order( number == 12, this.itemsValues excludes $o )\n" + " then\n" + " results.add( $o );\n" + "end\n" + "\n" + "rule \"eval rewrite with 'matches'\"\n" + " salience 20\n" + " when\n" + " $o : Order( number == 14, this.customer matches \"Mark\" )\n" + " then\n" + " results.add( $o );\n" + "end\n" + "\n" + "rule \"eval rewrite with 'not matches'\"\n" + " salience 10\n" + " when\n" + " $o : Order( number == 14, this.customer not matches \"Bob\" )\n" + " then\n" + " results.add( $o );\n" + "end\n";
final KieBase kbase = KieBaseUtil.getKieBaseFromKieModuleFromDrl("eval-rewrite-test", kieBaseTestConfiguration, drl);
final KieSession ksession = kbase.newKieSession();
try {
final List list = new ArrayList();
ksession.setGlobal("results", list);
final Order order1 = new Order(10, "Bob");
final OrderItem item11 = new OrderItem(order1, 1);
final OrderItem item12 = new OrderItem(order1, 2);
order1.addItem(item11);
order1.addItem(item12);
final Order order2 = new Order(11, "Bob");
final OrderItem item21 = new OrderItem(order2, 1);
final OrderItem item22 = new OrderItem(order2, 2);
order2.addItem(item21);
order2.addItem(item22);
final Order order3 = new Order(12, "Bob");
final OrderItem item31 = new OrderItem(order3, 1);
final OrderItem item32 = new OrderItem(order3, 2);
final OrderItem item33 = new OrderItem(order3, 3);
order3.addItem(item31);
order3.addItem(item32);
order3.addItem(item33);
final Order order4 = new Order(13, "Bob");
final OrderItem item41 = new OrderItem(order4, 1);
final OrderItem item42 = new OrderItem(order4, 2);
order4.addItem(item41);
order4.addItem(item42);
final Order order5 = new Order(14, "Mark");
final OrderItem item51 = new OrderItem(order5, 1);
final OrderItem item52 = new OrderItem(order5, 2);
order5.addItem(item51);
order5.addItem(item52);
ksession.insert(order1);
ksession.insert(item11);
ksession.insert(item12);
ksession.insert(order2);
ksession.insert(item21);
ksession.insert(item22);
ksession.insert(order3);
ksession.insert(item31);
ksession.insert(item32);
ksession.insert(item33);
ksession.insert(order4);
ksession.insert(item41);
ksession.insert(item42);
ksession.insert(order5);
ksession.insert(item51);
ksession.insert(item52);
ksession.fireAllRules();
assertEquals(9, list.size());
int index = 0;
assertEquals(item11, list.get(index++));
assertEquals(item12, list.get(index++));
assertEquals(item21, list.get(index++));
assertEquals(item22, list.get(index++));
assertEquals(item31, list.get(index++));
assertEquals(item33, list.get(index++));
assertEquals(item41, list.get(index++));
assertEquals(order5, list.get(index++));
assertEquals(order5, list.get(index));
} finally {
ksession.dispose();
}
}
use of org.drools.testcoverage.common.model.OrderItem in project drools by kiegroup.
the class AccumulateTest method testAccumulateMVELWithModify.
@Test(timeout = 10000)
public void testAccumulateMVELWithModify() {
final String drl = "package org.drools.compiler\n" + "\n" + "import " + Order.class.getCanonicalName() + ";\n" + "import " + OrderItem.class.getCanonicalName() + ";\n" + "\n" + "global java.util.List results;\n" + "\n" + "rule \"Accumulate with modify\" \n" + " dialect \"mvel\"\n" + " when\n" + " $o : Order( total == 0 )\n" + " Number( $total : doubleValue ) from accumulate(\n" + " OrderItem( order == $o, $p : price ),\n" + " sum( $p ) )\n" + " then\n" + " modify( $o ) { total = $total }\n" + " results.add( $total );\n" + "end";
final KieBase kbase = KieBaseUtil.getKieBaseFromKieModuleFromDrl("accumulate-test", kieBaseTestConfiguration, drl);
final KieSession wm = kbase.newKieSession();
try {
final List<Number> results = new ArrayList<>();
wm.setGlobal("results", results);
final Order order = new Order(1, "Bob");
final OrderItem item1 = new OrderItem(order, 1, "maquilage", 1, 10);
final OrderItem item2 = new OrderItem(order, 2, "perfume", 1, 5);
order.addItem(item1);
order.addItem(item2);
wm.insert(order);
wm.insert(item1);
wm.insert(item2);
wm.fireAllRules();
assertEquals(1, results.size());
assertEquals(15, results.get(0).intValue());
assertEquals(15.0, order.getTotal(), 0.0);
} finally {
wm.dispose();
}
}