use of org.drools.testcoverage.common.model.Pet in project drools by kiegroup.
the class TimerAndCalendarWithPseudoTimeTest method testIntervalTimerExpressionWithOr.
@Test(timeout = 10000)
public void testIntervalTimerExpressionWithOr() {
final String drl = "package org.kie.test\n" + "global java.util.List list\n" + "import " + FactA.class.getCanonicalName() + "\n" + "import " + FactB.class.getCanonicalName() + "\n" + "import " + Pet.class.getCanonicalName() + "\n" + "rule r1 timer (expr: f1.field2, f1.field2; repeat-limit=3)\n" + "when\n" + " foo: FactB()\n" + " ( Pet() and f1 : FactA( field1 == 'f1') ) or \n" + " f1 : FactA(field1 == 'f2') \n" + "then\n" + " list.add( f1 );\n" + " foo.setF1( 'xxx' );\n" + "end\n" + "\n";
final KieBase kbase = KieBaseUtil.getKieBaseFromKieModuleFromDrl("timer-and-calendar-test", kieBaseTestConfiguration, drl);
final KieSession ksession = kbase.newKieSession(KieSessionTestConfiguration.STATEFUL_PSEUDO.getKieSessionConfiguration(), null);
try {
final PseudoClockScheduler timeService = ksession.getSessionClock();
timeService.advanceTime(new Date().getTime(), TimeUnit.MILLISECONDS);
final List list = new ArrayList();
ksession.setGlobal("list", list);
ksession.insert(new FactB());
ksession.insert(new Pet("cinchilla"));
final FactA fact1 = new FactA();
fact1.setField1("f1");
fact1.setField2(250);
final FactA fact3 = new FactA();
fact3.setField1("f2");
fact3.setField2(1000);
ksession.insert(fact1);
ksession.insert(fact3);
ksession.fireAllRules();
assertEquals(0, list.size());
timeService.advanceTime(300, TimeUnit.MILLISECONDS);
ksession.fireAllRules();
assertEquals(1, list.size());
Assert.assertEquals(fact1, list.get(0));
timeService.advanceTime(300, TimeUnit.MILLISECONDS);
ksession.fireAllRules();
assertEquals(2, list.size());
Assert.assertEquals(fact1, list.get(1));
timeService.advanceTime(300, TimeUnit.MILLISECONDS);
ksession.fireAllRules();
// did not change, repeat-limit kicked in
assertEquals(2, list.size());
timeService.advanceTime(300, TimeUnit.MILLISECONDS);
ksession.fireAllRules();
assertEquals(3, list.size());
Assert.assertEquals(fact3, list.get(2));
timeService.advanceTime(1000, TimeUnit.MILLISECONDS);
ksession.fireAllRules();
assertEquals(4, list.size());
Assert.assertEquals(fact3, list.get(3));
timeService.advanceTime(1000, TimeUnit.MILLISECONDS);
ksession.fireAllRules();
// did not change, repeat-limit kicked in
assertEquals(4, list.size());
} finally {
ksession.dispose();
}
}
use of org.drools.testcoverage.common.model.Pet in project drools by kiegroup.
the class ConsequenceTest method testMVELConsequenceWithoutSemiColon1.
@Test
public void testMVELConsequenceWithoutSemiColon1() {
final String drl = "package prg.drools.compiler.integrationtests.drl;\n" + "import " + Person.class.getCanonicalName() + ";\n" + "import " + Pet.class.getCanonicalName() + ";\n" + "rule test dialect 'mvel'\n" + "when\n" + " $person:Person()\n" + " $pet:Pet()\n" + "then\n" + " delete($person) // some comment\n" + " delete($pet) // another comment\n" + "end\n";
final KieBase kbase = KieBaseUtil.getKieBaseFromKieModuleFromDrl("consequence-test", kieBaseTestConfiguration, drl);
final KieSession ksession = kbase.newKieSession();
try {
// create working memory mock listener
final RuleRuntimeEventListener wml = Mockito.mock(RuleRuntimeEventListener.class);
ksession.addEventListener(wml);
final FactHandle personFH = ksession.insert(new Person("Toni"));
final FactHandle petFH = ksession.insert(new Pet("Toni"));
final int fired = ksession.fireAllRules();
assertEquals(1, fired);
// capture the arguments and check that the retracts happened
final ArgumentCaptor<ObjectDeletedEvent> retracts = ArgumentCaptor.forClass(ObjectDeletedEvent.class);
verify(wml, times(2)).objectDeleted(retracts.capture());
final List<ObjectDeletedEvent> values = retracts.getAllValues();
assertThat(values.get(0).getFactHandle(), is(personFH));
assertThat(values.get(1).getFactHandle(), is(petFH));
} finally {
ksession.dispose();
}
}
use of org.drools.testcoverage.common.model.Pet in project drools by kiegroup.
the class JoinNodeRangeIndexingTest method testInsertUpdateDelete.
@Test
public void testInsertUpdateDelete() {
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" + "rule R2\n" + " salience 100\n" + "when\n" + " String (this == \"trigger R2\")\n" + " $person : Person( name == \"Paul\" )\n" + "then\n" + " modify($person) {setAge(20)}\n" + "end\n" + "rule R3\n" + " salience 100\n" + "when\n" + " String (this == \"trigger R3\")\n" + " $pet : Pet( )\n" + "then\n" + " modify($pet) {setAge($pet.getAge() - 5)}\n" + "end\n" + "rule R4\n" + " salience 100\n" + "when\n" + " String (this == \"trigger R4\")\n" + " $pet : Pet( name == \"Oliver\" )\n" + "then\n" + " delete($pet);\n" + "end\n";
final KieBase kbase = getKieBaseWithRangeIndexOption(drl);
assertIndexedTrue(kbase, Person.class);
final KieSession ksession = kbase.newKieSession();
try {
final Set<String> result = new HashSet<>();
ksession.setGlobal("result", result);
ksession.insert(new Pet("Oliver", 5));
ksession.insert(new Pet("Leo", 10));
ksession.insert(new Pet("Milo", 20));
ksession.insert(new Person("John", 10));
ksession.insert(new Person("Paul", 10));
assertEquals(2, ksession.fireAllRules());
Assertions.assertThat(result).containsExactlyInAnyOrder("John > Oliver", "Paul > Oliver");
// set Paul's age = 20
ksession.insert("trigger R2");
assertEquals(3, ksession.fireAllRules());
Assertions.assertThat(result).containsExactlyInAnyOrder("John > Oliver", "Paul > Oliver", "Paul > Leo");
// set all Pets' age minus 5
ksession.insert("trigger R3");
assertEquals(8, ksession.fireAllRules());
Assertions.assertThat(result).containsExactlyInAnyOrder("John > Oliver", "John > Leo", "Paul > Oliver", "Paul > Leo", "Paul > Milo");
// delete Oliver
ksession.insert("trigger R4");
ksession.insert(new Person("George", 15));
assertEquals(2, ksession.fireAllRules());
Assertions.assertThat(result).containsExactlyInAnyOrder("John > Oliver", "John > Leo", "Paul > Oliver", "Paul > Leo", "Paul > Milo", "George > Leo");
} finally {
ksession.dispose();
}
}
use of org.drools.testcoverage.common.model.Pet in project drools by kiegroup.
the class FromTest method testFromExprFollowedByNot.
@Test
public void testFromExprFollowedByNot() {
final String drl = "package org.drools.compiler.integrationtests.operators;\n" + "import " + Person.class.getCanonicalName() + ";\n" + "import " + Pet.class.getCanonicalName() + ";\n" + "global java.util.List list;\n" + "rule \"Rule 1\"\n" + " when\n" + " p : Person ($var: pet )\n" + " Pet () from $var\n" + " not Pet ()\n" + " then\n" + " list.add( p );\n" + "end\n";
final KieBase kbase = KieBaseUtil.getKieBaseFromKieModuleFromDrl("from-test", kieBaseTestConfiguration, drl);
final KieSession ksession = kbase.newKieSession();
try {
final List list = new ArrayList();
ksession.setGlobal("list", list);
final Person p = new Person();
p.setPet(new Pet(Pet.PetType.PARROT));
ksession.insert(p);
ksession.fireAllRules();
assertEquals(1, list.size());
assertSame(p, list.get(0));
} finally {
ksession.dispose();
}
}
use of org.drools.testcoverage.common.model.Pet in project drools by kiegroup.
the class AlphaNetworkModifyTest method testModifyWithLiaToEval.
@Test
public void testModifyWithLiaToEval() {
final String drl = "package org.simple \n" + "import " + Person.class.getCanonicalName() + "\n" + "import " + Cheese.class.getCanonicalName() + "\n" + "import " + Pet.class.getCanonicalName() + "\n" + "global java.util.List list \n" + "rule x1 \n" + "when \n" + " $pe : Person() \n" + " $ch : Cheese() \n" + " $ca : Pet() \n" + "then \n" + "end \n" + "rule x2 \n" + "when \n" + " $ch : Cheese() \n" + " $ca : Pet() \n" + " $pe : Person() \n" + "then \n" + "end \n" + "rule x3 \n" + "when \n" + " $ch : Cheese() \n" + "then \n" + "end \n" + "rule x4 \n" + "when \n" + " $ch : Cheese() \n" + " eval( $ch != null ) \n" + "then \n" + "end \n";
final KieBase kbase = KieBaseUtil.getKieBaseFromKieModuleFromDrl("alpha-network-modify-test", kieBaseTestConfiguration, drl);
final KieSession wm = kbase.newKieSession();
try {
final ObjectTypeNode otnPerson = getObjectTypeNode(kbase, "Person");
final ObjectTypeNode otnCheese = getObjectTypeNode(kbase, "Cheese");
final ObjectTypeNode otnPet = getObjectTypeNode(kbase, "Pet");
assertNotNull(otnPerson);
assertNotNull(otnCheese);
assertNotNull(otnPet);
assertEquals(0, otnPerson.getOtnIdCounter());
assertEquals(0, otnCheese.getOtnIdCounter());
assertEquals(0, otnPet.getOtnIdCounter());
wm.insert(new Person());
wm.insert(new Pet("yyy"));
wm.insert(new Cheese());
wm.fireAllRules();
assertEquals(2, otnPerson.getOtnIdCounter());
assertEquals(4, otnCheese.getOtnIdCounter());
assertEquals(2, otnPet.getOtnIdCounter());
} finally {
wm.dispose();
}
}
Aggregations