Search in sources :

Example 1 with Adult

use of org.drools.compiler.oopath.model.Adult 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)

Example 2 with Adult

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

the class OOPathTest method testDoubleAdd.

@Test
public void testDoubleAdd() {
    // DROOLS-1376
    final String drl = "import org.drools.compiler.oopath.model.*;\n" + "\n" + "rule R2 when\n" + "  Group( $id: name, $p: /members[age >= 20] )\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.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"));
    final Adult ada = new Adult("Ada", 20);
    final Adult bea = new Adult("Bea", 20);
    x.addPerson(ada);
    x.addPerson(bea);
    y.addPerson(ada);
    y.addPerson(bea);
    ksession.fireAllRules();
    assertTrue(factsCollection(ksession).contains("X.Ada"));
    assertTrue(factsCollection(ksession).contains("X.Bea"));
    assertTrue(factsCollection(ksession).contains("Y.Ada"));
    assertTrue(factsCollection(ksession).contains("Y.Bea"));
    x.removePerson(ada);
    x.removePerson(bea);
    y.removePerson(ada);
    y.removePerson(bea);
    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"));
}
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) Test(org.junit.Test)

Example 3 with Adult

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

the class OOPathTest method testDoubleRemove.

@Test
public void testDoubleRemove() {
    // DROOLS-1376
    final String drl = "import org.drools.compiler.oopath.model.*;\n" + "\n" + "rule R2 when\n" + "  Group( $id: name, $p: /members[age >= 20] )\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 Adult ada = new Adult("Ada", 20);
    final Adult bea = new Adult("Bea", 20);
    final Group x = new Group("X");
    final Group y = new Group("Y");
    x.addPerson(ada);
    x.addPerson(bea);
    y.addPerson(ada);
    y.addPerson(bea);
    ksession.insert(x);
    ksession.insert(y);
    ksession.fireAllRules();
    assertTrue(factsCollection(ksession).contains("X.Ada"));
    assertTrue(factsCollection(ksession).contains("X.Bea"));
    assertTrue(factsCollection(ksession).contains("Y.Ada"));
    assertTrue(factsCollection(ksession).contains("Y.Bea"));
    x.removePerson(ada);
    x.removePerson(bea);
    y.removePerson(ada);
    y.removePerson(bea);
    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"));
}
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) Test(org.junit.Test)

Example 4 with Adult

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

the class OOPathReactiveTests method testRemoveFromReactiveListExtendedWithSerialization.

/**
 * Same test as above but with serialization.
 */
@Test
public void testRemoveFromReactiveListExtendedWithSerialization() {
    final String drl = "import org.drools.compiler.oopath.model.*;\n" + "\n" + "rule R2 when\n" + "  Group( $id: name, $p: /members[age >= 20] )\n" + "then\n" + "  System.out.println( $id + \".\" + $p.getName() );\n" + "  insertLogical(      $id + \".\" + $p.getName() );\n" + "end\n";
    KieSession ksession = new KieHelper().addContent(drl, ResourceType.DRL).build().newKieSession();
    try {
        ksession = SerializationHelper.getSerialisedStatefulKnowledgeSession(ksession, true, false);
    } catch (Exception e) {
        e.printStackTrace();
        fail(e.getMessage());
    }
    final Adult ada = new Adult("Ada", 19);
    final Adult bea = new Adult("Bea", 19);
    final Group x = new Group("X");
    final Group y = new Group("Y");
    x.addPerson(ada);
    x.addPerson(bea);
    y.addPerson(ada);
    y.addPerson(bea);
    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(20);
    ksession.fireAllRules();
    ksession.getObjects().forEach(System.out::println);
    assertTrue(factsCollection(ksession).contains("X.Ada"));
    assertFalse(factsCollection(ksession).contains("X.Bea"));
    assertTrue(factsCollection(ksession).contains("Y.Ada"));
    assertFalse(factsCollection(ksession).contains("Y.Bea"));
    y.removePerson(bea);
    bea.setAge(20);
    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) Test(org.junit.Test)

Example 5 with Adult

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

the class OOPathReactiveTests method testRemoveFromReactiveListExtended.

@Test
public void testRemoveFromReactiveListExtended() {
    final String drl = "import org.drools.compiler.oopath.model.*;\n" + "\n" + "rule R2 when\n" + "  Group( $id: name, $p: /members[age >= 20] )\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 Adult ada = new Adult("Ada", 19);
    final Adult bea = new Adult("Bea", 19);
    final Group x = new Group("X");
    final Group y = new Group("Y");
    x.addPerson(ada);
    x.addPerson(bea);
    y.addPerson(ada);
    y.addPerson(bea);
    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(20);
    ksession.fireAllRules();
    ksession.getObjects().forEach(System.out::println);
    assertTrue(factsCollection(ksession).contains("X.Ada"));
    assertFalse(factsCollection(ksession).contains("X.Bea"));
    assertTrue(factsCollection(ksession).contains("Y.Ada"));
    assertFalse(factsCollection(ksession).contains("Y.Bea"));
    y.removePerson(bea);
    bea.setAge(20);
    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) Test(org.junit.Test)

Aggregations

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