Search in sources :

Example 1 with Order

use of org.drools.testcoverage.common.model.Order 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();
    }
}
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) List(java.util.List) ArrayList(java.util.ArrayList) Test(org.junit.Test)

Example 2 with Order

use of org.drools.testcoverage.common.model.Order 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();
    }
}
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)

Example 3 with Order

use of org.drools.testcoverage.common.model.Order 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();
    }
}
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 4 with Order

use of org.drools.testcoverage.common.model.Order 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();
    }
}
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 5 with Order

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

the class AlphaNodeRangeIndexingTest method testDate.

@Test
public void testDate() {
    final String drl = "package org.drools.compiler.test\n" + "import " + Order.class.getCanonicalName() + "\n" + "global java.util.List results;\n" + "rule test1\n when\n" + "   Order( date >= \"01-Oct-2020\" )\n" + "then\n" + "   results.add(drools.getRule().getName());" + "end\n" + "rule test2\n when\n" + "   Order( date < \"01-Nov-2020\" )\n" + "then\n" + "   results.add(drools.getRule().getName());" + "end\n" + "rule test3\n when\n" + "   Order( date > \"01-Oct-2010\" )\n" + "then\n" + "   results.add(drools.getRule().getName());" + "end\n" + "rule test4\n when\n" + "   Order( date < \"01-Oct-2030\" )\n" + "then\n" + "   results.add(drools.getRule().getName());" + "end\n" + "rule test5\n when\n" + "   Order( date > \"02-Oct-2020\" )\n" + "then\n" + "   results.add(drools.getRule().getName());" + "end\n" + "rule test6\n when\n" + "   Order( date <= \"02-Apr-2020\" )\n" + "then\n" + "   results.add(drools.getRule().getName());" + "end\n";
    final KieBase kbase = createKieBaseWithRangeIndexThresholdValue(drl, 3);
    final KieSession ksession = kbase.newKieSession();
    assertSinks(kbase, Order.class, 6, 6, 0, 6);
    List<String> results = new ArrayList<>();
    ksession.setGlobal("results", results);
    Order o1 = new Order();
    o1.setDate(DateUtils.parseDate("01-Oct-2020"));
    ksession.insert(o1);
    int fired = ksession.fireAllRules();
    assertEquals(4, fired);
    Assertions.assertThat(results).containsOnly("test1", "test2", "test3", "test4");
    results.clear();
    Order o2 = new Order();
    o2.setDate(DateUtils.parseDate("31-Dec-2010"));
    ksession.insert(o2);
    fired = ksession.fireAllRules();
    assertEquals(4, fired);
    Assertions.assertThat(results).containsOnly("test2", "test3", "test4", "test6");
}
Also used : Order(org.drools.testcoverage.common.model.Order) KieBase(org.kie.api.KieBase) ArrayList(java.util.ArrayList) 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