Search in sources :

Example 1 with Person

use of org.drools.compiler.oopath.model.Person in project drools by kiegroup.

the class OOPathTest method testAddAllRemoveIdx.

@Test
public void testAddAllRemoveIdx() {
    final String drl = "import org.drools.compiler.oopath.model.*;\n" + "\n" + "rule R2 when\n" + "  Group( $id: name, $p: /members[age >= 30] )\n" + "then\n" + "  System.out.println( $id + \".\" + $p.getName() );\n" + "  insertLogical(      $id + \".\" + $p.getName() );\n" + "end\n";
    final KieSession ksession = new KieHelper().addContent(drl, ResourceType.DRL).build().newKieSession();
    final Group x = new Group("X");
    final Group y = new Group("Y");
    ksession.fireAllRules();
    assertFalse(factsCollection(ksession).contains("X.Ada"));
    assertFalse(factsCollection(ksession).contains("X.Bea"));
    assertFalse(factsCollection(ksession).contains("Y.Ada"));
    assertFalse(factsCollection(ksession).contains("Y.Bea"));
    final Adult ada = new Adult("Ada", 29);
    final Adult bea = new Adult("Bea", 29);
    final List<Person> bothList = Arrays.asList(new Person[] { ada, bea });
    x.getMembers().addAll(bothList);
    y.getMembers().addAll(bothList);
    ksession.insert(x);
    ksession.insert(y);
    ksession.fireAllRules();
    assertFalse(factsCollection(ksession).contains("X.Ada"));
    assertFalse(factsCollection(ksession).contains("X.Bea"));
    assertFalse(factsCollection(ksession).contains("Y.Ada"));
    assertFalse(factsCollection(ksession).contains("Y.Bea"));
    ada.setAge(30);
    ksession.fireAllRules();
    assertTrue(factsCollection(ksession).contains("X.Ada"));
    assertFalse(factsCollection(ksession).contains("X.Bea"));
    assertTrue(factsCollection(ksession).contains("Y.Ada"));
    assertFalse(factsCollection(ksession).contains("Y.Bea"));
    // removing Bea from Y
    y.getMembers().remove(1);
    bea.setAge(30);
    ksession.fireAllRules();
    assertTrue(factsCollection(ksession).contains("X.Ada"));
    assertTrue(factsCollection(ksession).contains("X.Bea"));
    assertTrue(factsCollection(ksession).contains("Y.Ada"));
    assertFalse(factsCollection(ksession).contains("Y.Bea"));
}
Also used : Group(org.drools.compiler.oopath.model.Group) KieHelper(org.kie.internal.utils.KieHelper) Adult(org.drools.compiler.oopath.model.Adult) KieSession(org.kie.api.runtime.KieSession) Person(org.drools.compiler.oopath.model.Person) Test(org.junit.Test)

Aggregations

Adult (org.drools.compiler.oopath.model.Adult)1 Group (org.drools.compiler.oopath.model.Group)1 Person (org.drools.compiler.oopath.model.Person)1 Test (org.junit.Test)1 KieSession (org.kie.api.runtime.KieSession)1 KieHelper (org.kie.internal.utils.KieHelper)1