Search in sources :

Example 86 with Cheese

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

the class ConstraintsTest method testDeepNestedConstraints.

@Test
public void testDeepNestedConstraints() {
    final String drl = "package org.drools.compiler\n" + "import " + Person.class.getCanonicalName() + ";\n" + "import " + Cheese.class.getCanonicalName() + ";\n" + "global java.util.List results;\n" + "\n" + "rule \"deep nested constraints\"\n" + "when\n" + "    Person( $likes : likes )\n" + "    Cheese( ( ( type == \"stilton\" || type == $likes ) && ( price < 10 || price > 50 ) ) || eval( type.equals(\"brie\") ) )\n" + "then\n" + "    results.add( \"OK\" );\n" + "end";
    final KieBase kbase = KieBaseUtil.getKieBaseFromKieModuleFromDrl("constraints-test", kieBaseTestConfiguration, drl);
    final KieSession ksession = kbase.newKieSession();
    try {
        final List list = new ArrayList();
        ksession.setGlobal("results", list);
        ksession.insert(new Person("bob", "muzzarela"));
        ksession.insert(new Cheese("brie", 10));
        ksession.insert(new Cheese("muzzarela", 80));
        ksession.fireAllRules();
        assertEquals("should have fired twice", 2, list.size());
    } finally {
        ksession.dispose();
    }
}
Also used : KieBase(org.kie.api.KieBase) ArrayList(java.util.ArrayList) Cheese(org.drools.testcoverage.common.model.Cheese) KieSession(org.kie.api.runtime.KieSession) ArrayList(java.util.ArrayList) List(java.util.List) Person(org.drools.testcoverage.common.model.Person) Test(org.junit.Test)

Example 87 with Cheese

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

the class IndexingTest method testNotNode.

@Test(timeout = 10000)
public void testNotNode() {
    final String drl = "import " + Cheese.class.getCanonicalName() + ";\n" + "import " + Person.class.getCanonicalName() + ";\n" + "rule R1 salience 10\n" + "when\n" + "   Person( $age : age )" + "   not Cheese( price < $age )\n" + "then\n" + "end\n" + "rule R2 salience 1\n" + "when\n" + "   $p : Person( age == 10 )" + "then\n" + "   modify($p) { setAge(15); }\n" + "end\n";
    final KieBase kbase = KieBaseUtil.getKieBaseFromKieModuleFromDrl("indexing-test", kieBaseTestConfiguration, drl);
    final KieSession ksession = kbase.newKieSession();
    try {
        ksession.insert(new Person("mario", 10));
        ksession.insert(new Cheese("gorgonzola", 20));
        assertEquals(3, ksession.fireAllRules());
    } finally {
        ksession.dispose();
    }
}
Also used : KieBase(org.kie.api.KieBase) Cheese(org.drools.testcoverage.common.model.Cheese) KieSession(org.kie.api.runtime.KieSession) Person(org.drools.testcoverage.common.model.Person) Test(org.junit.Test)

Example 88 with Cheese

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

the class TimerAndCalendarWithRealTimeTest method testFireRuleAfterDuration.

@Test(timeout = 10000)
public void testFireRuleAfterDuration() throws Exception {
    final String drl = "package org.drools.compiler.test;\n" + "import " + Cheese.class.getCanonicalName() + ";\n" + "global java.util.List list;\n" + "\n" + "rule delayed\n" + "    duration 100\n" + "    when\n" + "        cheese : Cheese( $type:type == \"brie\" )\n" + "    then\n" + "        list.add( cheese );\n" + "        insert(new Cheese(\"stilton\", 42));\n" + "        delete(cheese);\n" + "end\n" + "\n" + "rule after_delayed\n" + "    when\n" + "        cheese : Cheese( $type:type == \"stilton\" )\n" + "    then\n" + "        list.add( cheese );\n" + "end";
    final KieBase kbase = KieBaseUtil.getKieBaseFromKieModuleFromDrl("timer-and-calendar-test", kieBaseTestConfiguration, drl);
    ksession = kbase.newKieSession();
    final List list = new ArrayList();
    ksession.setGlobal("list", list);
    final Cheese brie = new Cheese("brie", 12);
    ksession.insert(brie);
    ksession.fireAllRules();
    // now check for update
    assertEquals(0, list.size());
    awaitUntilRulesThatFiredAre(1);
    // now check for update
    assertEquals(2, list.size());
}
Also used : KieBase(org.kie.api.KieBase) ArrayList(java.util.ArrayList) ArrayList(java.util.ArrayList) Arrays.asList(java.util.Arrays.asList) List(java.util.List) Cheese(org.drools.testcoverage.common.model.Cheese) Test(org.junit.Test)

Example 89 with Cheese

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

the class JoinNodeRangeIndexingTest method testCoercionIntVsStringWithMap.

@Test
public void testCoercionIntVsStringWithMap() {
    // we don't enable range index for this case
    final String drl = "package org.drools.compiler.integrationtests;\n" + "import " + Cheese.class.getCanonicalName() + ";\n" + "import " + MapHolder.class.getCanonicalName() + ";\n" + "global java.util.List list;\n" + "rule R\n" + "    when\n" + "        Cheese($type : type)" + "        p : MapHolder(map.get(\"key\") < $type)\n" + "    then\n" + "        list.add( p );\n" + "end";
    // String is coerced to Integer (thus, Number comparison)
    final KieBase kbase = getKieBaseWithRangeIndexOption(drl);
    // We don't index this case
    assertIndexedFalse(kbase, MapHolder.class);
    final KieSession ksession = kbase.newKieSession();
    try {
        final List<MapHolder> list = new ArrayList<>();
        ksession.setGlobal("list", list);
        final MapHolder holder1 = new MapHolder();
        holder1.getMap().put("key", 1);
        ksession.insert(holder1);
        final MapHolder holder5 = new MapHolder();
        holder5.getMap().put("key", 5);
        ksession.insert(holder5);
        final MapHolder holder10 = new MapHolder();
        holder10.getMap().put("key", 10);
        ksession.insert(holder10);
        final Cheese cheese = new Cheese("5");
        ksession.insert(cheese);
        ksession.fireAllRules();
        Assertions.assertThat(list).containsExactly(holder1);
    } finally {
        ksession.dispose();
    }
}
Also used : KieBase(org.kie.api.KieBase) ArrayList(java.util.ArrayList) Cheese(org.drools.testcoverage.common.model.Cheese) KieSession(org.kie.api.runtime.KieSession) Test(org.junit.Test)

Example 90 with Cheese

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

the class OrTest method testRestrictionsWithOr.

@Test
public void testRestrictionsWithOr() {
    // JBRULES-2203: NullPointerException When Using Conditional Element "or" in LHS Together with a Return Value Restriction
    final String drl = "package org.drools.compiler.integrationtests.operators;\n" + "import " + Cheese.class.getCanonicalName() + ";\n" + "rule \"test\"\n" + "when\n" + "    Cheese( price == (1 + 1) );\n" + "    (or eval(true);\n" + "        eval(true);\n" + "    )\n" + "then\n" + "end";
    final KieBase kbase = KieBaseUtil.getKieBaseFromKieModuleFromDrl("or-test", kieBaseTestConfiguration, drl);
    final KieSession ksession = kbase.newKieSession();
    try {
        ksession.insert(new Cheese("Stilton", 2));
        final int rules = ksession.fireAllRules();
        assertEquals(2, rules);
    } finally {
        ksession.dispose();
    }
}
Also used : KieBase(org.kie.api.KieBase) KieSession(org.kie.api.runtime.KieSession) Cheese(org.drools.testcoverage.common.model.Cheese) 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