Search in sources :

Example 6 with Pet

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

the class JoinNodeRangeIndexingTest method testMultipleFacts.

@Test
public void testMultipleFacts() {
    final String drl = "import " + Person.class.getCanonicalName() + ";\n" + "import " + Pet.class.getCanonicalName() + ";\n" + "global java.util.Set result;\n" + "rule R1\n" + "when\n" + "   $pet : Pet()\n" + "   $person : Person( age > $pet.age )\n" + "then\n" + "   result.add( $person.getName() + \" > \" + $pet.getName() );\n" + "end\n";
    final KieBase kbase = getKieBaseWithRangeIndexOption(drl);
    assertIndexedTrue(kbase, Person.class);
    final KieSession ksession = kbase.newKieSession();
    Set<String> result = new HashSet<>();
    ksession.setGlobal("result", result);
    try {
        ksession.insert(new Pet("Charlie", 5));
        ksession.insert(new Pet("Max", 10));
        ksession.insert(new Pet("Buddy", 15));
        ksession.insert(new Pet("Oscar", 20));
        ksession.insert(new Person("John", 2));
        ksession.insert(new Person("Paul", 10));
        ksession.insert(new Person("George", 20));
        ksession.insert(new Person("Ringo", 30));
        assertEquals(8, ksession.fireAllRules());
        Assertions.assertThat(result).containsExactlyInAnyOrder("Paul > Charlie", "George > Charlie", "George > Max", "George > Buddy", "Ringo > Charlie", "Ringo > Max", "Ringo > Buddy", "Ringo > Oscar");
    } finally {
        ksession.dispose();
    }
}
Also used : KieBase(org.kie.api.KieBase) KieSession(org.kie.api.runtime.KieSession) Person(org.drools.testcoverage.common.model.Person) Pet(org.drools.testcoverage.common.model.Pet) HashSet(java.util.HashSet) Test(org.junit.Test)

Example 7 with Pet

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

the class JoinNodeRangeIndexingTest method testRangeIndexForJoin.

@Test
public void testRangeIndexForJoin() {
    final String drl = "import " + Person.class.getCanonicalName() + ";\n" + "import " + Pet.class.getCanonicalName() + ";\n" + "rule R1\n" + "when\n" + "   $pet : Pet()\n" + "   Person( age > $pet.age )\n" + "then\n" + "end\n";
    final KieBase kbase = getKieBaseWithRangeIndexOption(drl);
    assertIndexedTrue(kbase, Person.class);
    final KieSession ksession = kbase.newKieSession();
    try {
        ksession.insert(new Pet(PetType.CAT, 10));
        ksession.insert(new Person("Paul", 20));
        assertEquals(1, ksession.fireAllRules());
    } finally {
        ksession.dispose();
    }
}
Also used : KieBase(org.kie.api.KieBase) KieSession(org.kie.api.runtime.KieSession) Person(org.drools.testcoverage.common.model.Person) Pet(org.drools.testcoverage.common.model.Pet) Test(org.junit.Test)

Example 8 with Pet

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

the class MemberOfTest method testMemberOfWithOr.

@Test
public void testMemberOfWithOr() {
    final String drl = "package org.drools.compiler.integrationtests.operators;\n" + "import java.util.ArrayList;\n" + "import " + Person.class.getCanonicalName() + ";\n" + "rule \"Test Rule\"\n" + "when\n" + "    $list: ArrayList()                                   \n" + "    ArrayList()                                          \n" + "            from collect(                                \n" + "                  Person(                                \n" + "                      (                                  \n" + "                          pet memberOf $list             \n" + "                      ) || (                             \n" + "                          pet == null                    \n" + "                      )                                  \n" + "                  )                                      \n" + "            )\n" + "then\n" + "  System.out.println(\"hello person\");\n" + "end";
    final KieBase kbase = KieBaseUtil.getKieBaseFromKieModuleFromDrl("member-of-test", kieBaseTestConfiguration, drl);
    final KieSession session = kbase.newKieSession();
    try {
        final Person toni = new Person("Toni", 12);
        toni.setPet(new Pet(Pet.PetType.CAT));
        session.insert(new ArrayList());
        session.insert(toni);
        session.fireAllRules();
    } finally {
        session.dispose();
    }
}
Also used : KieBase(org.kie.api.KieBase) ArrayList(java.util.ArrayList) KieSession(org.kie.api.runtime.KieSession) Person(org.drools.testcoverage.common.model.Person) Pet(org.drools.testcoverage.common.model.Pet) Test(org.junit.Test)

Aggregations

Pet (org.drools.testcoverage.common.model.Pet)8 Test (org.junit.Test)8 KieBase (org.kie.api.KieBase)8 KieSession (org.kie.api.runtime.KieSession)8 Person (org.drools.testcoverage.common.model.Person)7 ArrayList (java.util.ArrayList)3 HashSet (java.util.HashSet)2 List (java.util.List)2 Arrays.asList (java.util.Arrays.asList)1 Date (java.util.Date)1 ObjectTypeNode (org.drools.core.reteoo.ObjectTypeNode)1 PseudoClockScheduler (org.drools.core.time.impl.PseudoClockScheduler)1 Cheese (org.drools.testcoverage.common.model.Cheese)1 FactA (org.drools.testcoverage.common.model.FactA)1 FactB (org.drools.testcoverage.common.model.FactB)1 ObjectDeletedEvent (org.kie.api.event.rule.ObjectDeletedEvent)1 RuleRuntimeEventListener (org.kie.api.event.rule.RuleRuntimeEventListener)1 FactHandle (org.kie.api.runtime.rule.FactHandle)1