use of org.drools.testcoverage.common.model.FactB 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.FactB in project drools by kiegroup.
the class PatternTest method testPatternOnClass.
@Test
public void testPatternOnClass() {
final String drl = "import " + InitialFactImpl.class.getCanonicalName() + "\n" + "import " + FactB.class.getCanonicalName() + "\n" + "rule \"Clear\" when\n" + " $f: Object(getClass() != FactB.class)\n" + "then\n" + " if( ! ($f instanceof InitialFactImpl) ){\n" + " delete( $f );\n" + " }\n" + "end";
final KieBase kbase = KieBaseUtil.getKieBaseFromKieModuleFromDrl("pattern-test", kieBaseTestConfiguration, drl);
final KieSession ksession = kbase.newKieSession();
try {
ksession.insert(new FactA());
ksession.insert(new FactA());
ksession.insert(new FactB());
ksession.insert(new FactB());
ksession.insert(new FactC());
ksession.insert(new FactC());
ksession.fireAllRules();
for (final FactHandle fact : ksession.getFactHandles()) {
final InternalFactHandle internalFact = (InternalFactHandle) fact;
assertTrue(internalFact.getObject() instanceof FactB);
}
} finally {
ksession.dispose();
}
}
use of org.drools.testcoverage.common.model.FactB in project drools by kiegroup.
the class OrTest method testOrCEFollowedByEval.
@Test
public void testOrCEFollowedByEval() {
final String drl = "package org.drools.compiler.integrationtests.operators;\n" + "import " + FactA.class.getCanonicalName() + ";\n" + "import " + FactB.class.getCanonicalName() + ";\n" + "global java.util.List results;\n" + "\n" + "rule \"test eval with OR\"\n" + "when\n" + " FactA( $a : field1 )\n" + " $f : FactB( $b : f1 ) or $f : FactB( $b : f1 == \"X\" )\n" + " eval( $a.equals( $b ) ) \n" + "then\n" + " results.add( $f );\n" + "end";
final KieBase kbase = KieBaseUtil.getKieBaseFromKieModuleFromDrl("or-test", kieBaseTestConfiguration, drl);
final KieSession ksession = kbase.newKieSession();
try {
final List list = new ArrayList();
ksession.setGlobal("results", list);
ksession.insert(new FactA("X"));
final InternalFactHandle b = (InternalFactHandle) ksession.insert(new FactB("X"));
ksession.fireAllRules();
assertEquals("should have fired", 2, list.size());
assertTrue(list.contains(b.getObject()));
} finally {
ksession.dispose();
}
}
use of org.drools.testcoverage.common.model.FactB in project drools by kiegroup.
the class EvalTest method testAlphaEvalWithOrCE.
@Test
public void testAlphaEvalWithOrCE() {
final String drl = "package org.drools.compiler.integrationtests.operators;\n" + "import " + FactA.class.getCanonicalName() + ";\n" + "import " + FactB.class.getCanonicalName() + ";\n" + "import " + FactC.class.getCanonicalName() + ";\n" + "global java.util.List results;\n" + "\n" + "rule \"test eval with OR\"\n" + "when\n" + " FactA( eval( \"something\".equals( field1 ) ) )\n" + " FactB() or FactC()\n" + "then\n" + " results.add( \"Should not have fired\" );\n" + "end";
final KieBase kbase = KieBaseUtil.getKieBaseFromKieModuleFromDrl("eval-test", kieBaseTestConfiguration, drl);
final KieSession ksession = kbase.newKieSession();
try {
final List list = new ArrayList();
ksession.setGlobal("results", list);
final FactA a = new FactA();
a.setField1("a value");
ksession.insert(a);
ksession.insert(new FactB());
ksession.insert(new FactC());
ksession.fireAllRules();
assertEquals("should not have fired", 0, list.size());
} finally {
ksession.dispose();
}
}
Aggregations