Search in sources :

Example 71 with Cheese

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

the class AccumulateTest method execTestAccumulateCollectList.

private void execTestAccumulateCollectList(final String fileName) {
    final KieBase kbase = KieBaseUtil.getKieBaseFromClasspathResources("accumulate-test", kieBaseTestConfiguration, fileName);
    final KieSession wm = kbase.newKieSession();
    try {
        final List<?> results = new ArrayList<>();
        wm.setGlobal("results", results);
        final Cheese[] cheese = new Cheese[] { new Cheese("stilton", 4), new Cheese("stilton", 2), new Cheese("stilton", 3), new Cheese("brie", 15), new Cheese("brie", 17), new Cheese("provolone", 8) };
        final FactHandle[] cheeseHandles = new FactHandle[cheese.length];
        for (int i = 0; i < cheese.length; i++) {
            cheeseHandles[i] = wm.insert(cheese[i]);
        }
        // ---------------- 1st scenario
        wm.fireAllRules();
        assertEquals(1, results.size());
        assertEquals(6, ((List) results.get(results.size() - 1)).size());
        // ---------------- 2nd scenario
        final int index = 1;
        cheese[index].setPrice(9);
        wm.update(cheeseHandles[index], cheese[index]);
        wm.fireAllRules();
        // fire again
        assertEquals(2, results.size());
        assertEquals(6, ((List) results.get(results.size() - 1)).size());
        // ---------------- 3rd scenario
        wm.delete(cheeseHandles[3]);
        wm.delete(cheeseHandles[4]);
        wm.fireAllRules();
        // should not have fired as per constraint
        assertEquals(2, results.size());
    } finally {
        wm.dispose();
    }
}
Also used : FactHandle(org.kie.api.runtime.rule.FactHandle) KieBase(org.kie.api.KieBase) ArrayList(java.util.ArrayList) KieSession(org.kie.api.runtime.KieSession) Cheese(org.drools.testcoverage.common.model.Cheese)

Example 72 with Cheese

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

the class AccumulateTest method execTestAccumulateCollectSet.

private void execTestAccumulateCollectSet(final String fileName) {
    final KieBase kbase = KieBaseUtil.getKieBaseFromClasspathResources("accumulate-test", kieBaseTestConfiguration, fileName);
    final KieSession wm = kbase.newKieSession();
    try {
        final List<?> results = new ArrayList<>();
        wm.setGlobal("results", results);
        final Cheese[] cheese = new Cheese[] { new Cheese("stilton", 4), new Cheese("stilton", 2), new Cheese("stilton", 3), new Cheese("brie", 15), new Cheese("brie", 17), new Cheese("provolone", 8) };
        final FactHandle[] cheeseHandles = new FactHandle[cheese.length];
        for (int i = 0; i < cheese.length; i++) {
            cheeseHandles[i] = wm.insert(cheese[i]);
        }
        // ---------------- 1st scenario
        wm.fireAllRules();
        assertEquals(1, results.size());
        assertEquals(3, ((Set) results.get(results.size() - 1)).size());
        // ---------------- 2nd scenario
        final int index = 1;
        cheese[index].setPrice(9);
        wm.update(cheeseHandles[index], cheese[index]);
        wm.fireAllRules();
        // fire again
        assertEquals(2, results.size());
        assertEquals(3, ((Set) results.get(results.size() - 1)).size());
        // ---------------- 3rd scenario
        wm.delete(cheeseHandles[3]);
        wm.fireAllRules();
        // fire again
        assertEquals(3, results.size());
        assertEquals(3, ((Set) results.get(results.size() - 1)).size());
        // ---------------- 4rd scenario
        wm.delete(cheeseHandles[4]);
        wm.fireAllRules();
        // should not have fired as per constraint
        assertEquals(3, results.size());
    } finally {
        wm.dispose();
    }
}
Also used : FactHandle(org.kie.api.runtime.rule.FactHandle) KieBase(org.kie.api.KieBase) ArrayList(java.util.ArrayList) KieSession(org.kie.api.runtime.KieSession) Cheese(org.drools.testcoverage.common.model.Cheese)

Example 73 with Cheese

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

the class AccumulateTest method cheeseInsertsFunction.

private double cheeseInsertsFunction(final KieBase kieBase, final int... prices) {
    final KieSession ksession = kieBase.newKieSession();
    try {
        final List<Double> list = new ArrayList<>();
        ksession.setGlobal("list", list);
        for (final int price : prices) {
            ksession.insert(new Cheese("stilton", price));
        }
        ksession.fireAllRules();
        assertEquals(1, list.size());
        final double result = list.get(0);
        final FactHandle triggerReverseHandle = ksession.insert(new Cheese("triggerReverse", 7));
        ksession.fireAllRules();
        ksession.delete(triggerReverseHandle);
        list.clear();
        ksession.fireAllRules();
        assertEquals(1, list.size());
        // Check that the reserse() does the opposite of the accumulate()
        assertEquals(result, list.get(0), 0.001);
        return list.get(0);
    } finally {
        ksession.dispose();
    }
}
Also used : FactHandle(org.kie.api.runtime.rule.FactHandle) ArrayList(java.util.ArrayList) KieSession(org.kie.api.runtime.KieSession) Cheese(org.drools.testcoverage.common.model.Cheese)

Example 74 with Cheese

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

the class BindTest method testBindingsOnConnectiveExpressions.

@Test
public void testBindingsOnConnectiveExpressions() {
    final String drl = "package org.drools.compiler.integrationtests.drl;\n" + "import " + Cheese.class.getCanonicalName() + ";\n" + "global java.util.List results;\n" + "rule \"bindings\"\n" + "when\n" + "    Cheese( $p : price, $t : type, type == \"stilton\" || price == 10 )\n" + "then\n" + "    results.add( $t );\n" + "    results.add( new Integer( $p ) );\n" + "end";
    final KieBase kbase = KieBaseUtil.getKieBaseFromKieModuleFromDrl("bind-test", kieBaseTestConfiguration, drl);
    final KieSession ksession = kbase.newKieSession();
    try {
        final List results = new ArrayList();
        ksession.setGlobal("results", results);
        ksession.insert(new Cheese("stilton", 15));
        ksession.fireAllRules();
        assertEquals(2, results.size());
        assertEquals("stilton", results.get(0));
        assertEquals(15, results.get(1));
    } finally {
        ksession.dispose();
    }
}
Also used : KieBase(org.kie.api.KieBase) ArrayList(java.util.ArrayList) KieSession(org.kie.api.runtime.KieSession) ArrayList(java.util.ArrayList) List(java.util.List) Cheese(org.drools.testcoverage.common.model.Cheese) Test(org.junit.Test)

Example 75 with Cheese

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

the class BindTest method testFactBindings.

@Test
public void testFactBindings() {
    final String drl = "package org.drools.compiler.integrationtests.drl;\n" + "import " + Cheese.class.getCanonicalName() + ";\n" + "import " + Person.class.getCanonicalName() + ";\n" + " \n" + "rule \"simple rule\"\n" + "    no-loop true\n" + "    when\n" + "        $person : Person( name == \"big cheese\", $cheese : cheese )\n" + "    then\n" + "        update( $cheese );\n" + "        update( $person );\n" + "end";
    final KieBase kbase = KieBaseUtil.getKieBaseFromKieModuleFromDrl("bind-test", kieBaseTestConfiguration, drl);
    final KieSession ksession = kbase.newKieSession();
    try {
        final RuleRuntimeEventListener wmel = mock(RuleRuntimeEventListener.class);
        ksession.addEventListener(wmel);
        final Person bigCheese = new Person("big cheese");
        final Cheese cheddar = new Cheese("cheddar", 15);
        bigCheese.setCheese(cheddar);
        final FactHandle bigCheeseHandle = ksession.insert(bigCheese);
        final FactHandle cheddarHandle = ksession.insert(cheddar);
        ksession.fireAllRules();
        final ArgumentCaptor<ObjectUpdatedEvent> arg = ArgumentCaptor.forClass(org.kie.api.event.rule.ObjectUpdatedEvent.class);
        verify(wmel, times(2)).objectUpdated(arg.capture());
        org.kie.api.event.rule.ObjectUpdatedEvent event = arg.getAllValues().get(0);
        assertSame(cheddarHandle, event.getFactHandle());
        assertSame(cheddar, event.getOldObject());
        assertSame(cheddar, event.getObject());
        event = arg.getAllValues().get(1);
        assertSame(bigCheeseHandle, event.getFactHandle());
        assertSame(bigCheese, event.getOldObject());
        assertSame(bigCheese, event.getObject());
    } finally {
        ksession.dispose();
    }
}
Also used : FactHandle(org.kie.api.runtime.rule.FactHandle) Cheese(org.drools.testcoverage.common.model.Cheese) ObjectUpdatedEvent(org.kie.api.event.rule.ObjectUpdatedEvent) ObjectUpdatedEvent(org.kie.api.event.rule.ObjectUpdatedEvent) RuleRuntimeEventListener(org.kie.api.event.rule.RuleRuntimeEventListener) KieBase(org.kie.api.KieBase) KieSession(org.kie.api.runtime.KieSession) Person(org.drools.testcoverage.common.model.Person) Test(org.junit.Test)

Aggregations

Cheese (org.drools.testcoverage.common.model.Cheese)97 KieBase (org.kie.api.KieBase)92 KieSession (org.kie.api.runtime.KieSession)88 Test (org.junit.Test)85 ArrayList (java.util.ArrayList)65 Person (org.drools.testcoverage.common.model.Person)47 List (java.util.List)33 FactHandle (org.kie.api.runtime.rule.FactHandle)22 Cheesery (org.drools.testcoverage.common.model.Cheesery)11 Arrays.asList (java.util.Arrays.asList)4 ObjectTypeNode (org.drools.core.reteoo.ObjectTypeNode)4 BigDecimal (java.math.BigDecimal)3 LeftTupleSink (org.drools.core.reteoo.LeftTupleSink)3 AfterMatchFiredEvent (org.kie.api.event.rule.AfterMatchFiredEvent)3 AgendaEventListener (org.kie.api.event.rule.AgendaEventListener)3 InvocationTargetException (java.lang.reflect.InvocationTargetException)2 HashMap (java.util.HashMap)2 Map (java.util.Map)2 InternalFactHandle (org.drools.core.common.InternalFactHandle)2 LeftInputAdapterNode (org.drools.core.reteoo.LeftInputAdapterNode)2