Search in sources :

Example 6 with Order

use of org.drools.testcoverage.common.model.Order 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();
    }
}
Also used : Order(org.drools.testcoverage.common.model.Order) KieBase(org.kie.api.KieBase) OrderItem(org.drools.testcoverage.common.model.OrderItem) ArrayList(java.util.ArrayList) KieSession(org.kie.api.runtime.KieSession) Test(org.junit.Test)

Example 7 with Order

use of org.drools.testcoverage.common.model.Order in project drools by kiegroup.

the class EvalRewriteTest method testEvalRewrite.

@Test
public void testEvalRewrite() {
    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" + "\n" + "rule \"eval rewrite\"\n" + "    when\n" + "        $o : OrderItem( order.number == 10 )\n" + "    then\n" + "        results.add( $o );\n" + "end\n" + "\n" + "rule \"eval rewrite2\"\n" + "    when\n" + "        $o1 : OrderItem( order.number == 11, $seq : seq == 1 )\n" + "        $o2 : OrderItem( order.number == $o1.order.number, seq != $seq )\n" + "    then\n" + "        results.add( $o2 );\n" + "end\n" + "\n" + "rule \"eval rewrite3\"\n" + "    when\n" + "        $o1 : OrderItem( order.number == 12, seq == 1 )\n" + "        $o : Order( items[(Integer) 1] == $o1 )\n" + "    then\n" + "        results.add( $o );\n" + "end\n" + "\n" + "rule \"eval rewrite4\"\n" + "    when\n" + "        OrderItem( $nbr : order.number == 13, seq == 1 )\n" + "        $o : Order( number == $nbr )\n" + "    then\n" + "        results.add( $o );\n" + "end";
    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);
        order3.addItem(item31);
        order3.addItem(item32);
        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);
        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(order4);
        ksession.insert(item41);
        ksession.insert(item42);
        ksession.fireAllRules();
        assertEquals(5, list.size());
        assertTrue(list.contains(item11));
        assertTrue(list.contains(item12));
        assertTrue(list.contains(item22));
        assertTrue(list.contains(order3));
        assertTrue(list.contains(order4));
    } finally {
        ksession.dispose();
    }
}
Also used : Order(org.drools.testcoverage.common.model.Order) KieBase(org.kie.api.KieBase) OrderItem(org.drools.testcoverage.common.model.OrderItem) ArrayList(java.util.ArrayList) KieSession(org.kie.api.runtime.KieSession) ArrayList(java.util.ArrayList) List(java.util.List) Test(org.junit.Test)

Example 8 with Order

use of org.drools.testcoverage.common.model.Order in project drools by kiegroup.

the class AlphaNodeRangeIndexingTest method testDouble.

@Test
public void testDouble() {
    final String drl = "package org.drools.compiler.test\n" + "import " + Order.class.getCanonicalName() + "\n" + "rule test1\n when\n" + "   Order( total >= 18.0 )\n" + "then\n end\n" + "rule test2\n when\n" + "   Order( total < 25.0 )\n" + "then\n end\n" + "rule test3\n when\n" + "   Order( total > 8.0 )\n" + "then\n end\n" + "rule test4\n when\n" + "   Order( total < 60.0 )\n" + "then\n end\n" + "rule test5\n when\n" + "   Order( total > 12.0 )\n" + "then\n end\n" + "rule test6\n when\n" + "   Order( total <= 4.0 )\n" + "then\n end\n";
    final KieBase kbase = createKieBaseWithRangeIndexThresholdValue(drl, 3);
    final KieSession ksession = kbase.newKieSession();
    assertSinks(kbase, Order.class, 6, 6, 0, 6);
    Order o1 = new Order();
    o1.setTotal(18.0);
    ksession.insert(o1);
    int fired = ksession.fireAllRules();
    assertEquals(5, fired);
    Order o2 = new Order();
    o2.setTotal(60.0);
    ksession.insert(o2);
    fired = ksession.fireAllRules();
    assertEquals(3, fired);
}
Also used : Order(org.drools.testcoverage.common.model.Order) KieBase(org.kie.api.KieBase) KieSession(org.kie.api.runtime.KieSession) Test(org.junit.Test)

Example 9 with Order

use of org.drools.testcoverage.common.model.Order in project drools by kiegroup.

the class PatternTest method testSelfReference.

@Test
public void testSelfReference() {
    final String drl = "package org.drools.compiler.integrationtests.drl;\n" + "import " + Order.class.getCanonicalName() + ";\n" + "import " + OrderItem.class.getCanonicalName() + ";\n" + "global java.util.List results;\n" + "\n" + "rule \"reversed references\"\n" + "when\n" + "    $item : OrderItem( $order : order )\n" + "    Order( this == $order )\n" + "then\n" + "    results.add( $item );\n" + "end";
    final KieBase kbase = KieBaseUtil.getKieBaseFromKieModuleFromDrl("pattern-test", kieBaseTestConfiguration, drl);
    final KieSession ksession = kbase.newKieSession();
    try {
        final List results = new ArrayList();
        ksession.setGlobal("results", results);
        final Order order = new Order(10, "Bob");
        final OrderItem item1 = new OrderItem(order, 1);
        final OrderItem item2 = new OrderItem(order, 2);
        final OrderItem anotherItem1 = new OrderItem(null, 3);
        final OrderItem anotherItem2 = new OrderItem(null, 4);
        ksession.insert(order);
        ksession.insert(item1);
        ksession.insert(item2);
        ksession.insert(anotherItem1);
        ksession.insert(anotherItem2);
        ksession.fireAllRules();
        assertEquals(2, results.size());
        assertTrue(results.contains(item1));
        assertTrue(results.contains(item2));
    } finally {
        ksession.dispose();
    }
}
Also used : Order(org.drools.testcoverage.common.model.Order) KieBase(org.kie.api.KieBase) OrderItem(org.drools.testcoverage.common.model.OrderItem) ArrayList(java.util.ArrayList) KieSession(org.kie.api.runtime.KieSession) ArrayList(java.util.ArrayList) List(java.util.List) Test(org.junit.Test)

Example 10 with Order

use of org.drools.testcoverage.common.model.Order in project drools by kiegroup.

the class OrTest method testOrWithFrom.

@Test
public void testOrWithFrom() {
    // JBRULES-2274: Rule does not fire as expected using deep object model and nested 'or' clause
    final String drl = "package org.drools.compiler.integrationtests.operators;\n" + "import " + Order.class.getCanonicalName() + ";\n" + "import " + OrderItem.class.getCanonicalName() + ";\n" + "rule NotContains\n" + "when\n" + "    $oi1 : OrderItem( )\n" + "    $o1  : Order(number == 1) from $oi1.order; \n" + "    ( eval(true) or eval(true) )\n" + "    $oi2 : OrderItem( )\n" + "    $o2  : Order(number == 2) from $oi2.order; \n" + "then\n" + "end";
    final KieBase kbase = KieBaseUtil.getKieBaseFromKieModuleFromDrl("or-test", kieBaseTestConfiguration, drl);
    final KieSession ksession = kbase.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(order2);
        ksession.insert(item11);
        ksession.insert(item21);
        final int rules = ksession.fireAllRules();
        assertEquals(2, rules);
    } finally {
        ksession.dispose();
    }
}
Also used : Order(org.drools.testcoverage.common.model.Order) KieBase(org.kie.api.KieBase) OrderItem(org.drools.testcoverage.common.model.OrderItem) KieSession(org.kie.api.runtime.KieSession) Test(org.junit.Test)

Aggregations

Order (org.drools.testcoverage.common.model.Order)10 Test (org.junit.Test)10 KieBase (org.kie.api.KieBase)10 KieSession (org.kie.api.runtime.KieSession)10 OrderItem (org.drools.testcoverage.common.model.OrderItem)8 ArrayList (java.util.ArrayList)7 List (java.util.List)5