[jboss-svn-commits] JBL Code SVN: r10872 - in labs/jbossrules/trunk/drools-compiler/src/test: resources/org/drools/integrationtests and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Apr 10 19:26:14 EDT 2007
Author: mark.proctor at jboss.com
Date: 2007-04-10 19:26:14 -0400 (Tue, 10 Apr 2007)
New Revision: 10872
Added:
labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_ModifyActivationCreationNoLoop.drl
Modified:
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java
labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_ModifyNoloop.drl
Log:
JBRULES-787 no-loop blocks all dependant tuples for modify
-Added context.getActivationOrigin().getTuple().equals( tuple ) to the no-loop check
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java 2007-04-10 23:09:20 UTC (rev 10871)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java 2007-04-10 23:26:14 UTC (rev 10872)
@@ -67,6 +67,9 @@
import org.drools.TestParam;
import org.drools.WorkingMemory;
import org.drools.Cheesery.Maturity;
+import org.drools.common.InternalWorkingMemory;
+import org.drools.common.InternalWorkingMemoryActions;
+import org.drools.common.PropagationContextImpl;
import org.drools.compiler.DrlParser;
import org.drools.compiler.DroolsError;
import org.drools.compiler.DroolsParserException;
@@ -97,8 +100,10 @@
import org.drools.rule.Package;
import org.drools.rule.Rule;
import org.drools.ruleflow.common.instance.IProcessInstance;
+import org.drools.spi.Activation;
import org.drools.spi.ActivationGroup;
import org.drools.spi.AgendaGroup;
+import org.drools.spi.PropagationContext;
import org.drools.xml.XmlDumper;
/**
@@ -3585,7 +3590,59 @@
wm.fireAllRules();
}
+
+ public void testModifyActivationCreationNoLoop() throws Exception {
+ // JBRULES-787, no-loop blocks all dependant tuples for modify
+ final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_ModifyActivationCreationNoLoop.drl" ) );
+ final RuleBase ruleBase = loadRuleBase( reader );
+ final InternalWorkingMemoryActions wm = ( InternalWorkingMemoryActions ) ruleBase.newWorkingMemory();
+ final List created = new ArrayList();
+ final List cancelled = new ArrayList();
+ AgendaEventListener l = new DefaultAgendaEventListener() {
+ public void activationCreated(ActivationCreatedEvent event,
+ WorkingMemory workingMemory) {
+ created.add( event );
+ }
+
+ public void activationCancelled(ActivationCancelledEvent event,
+ WorkingMemory workingMemory) {
+ cancelled.add( event );
+ }
+
+ };
+
+ wm.addEventListener( l );
+
+ Cheese stilton = new Cheese( "stilton",
+ 15 );
+ FactHandle stiltonHandle = wm.assertObject( stilton );
+
+ Person p1 = new Person( "p1");
+ p1.setCheese( stilton );
+ wm.assertObject( p1 );
+
+ Person p2 = new Person( "p2");
+ p2.setCheese( stilton );
+ wm.assertObject( p2 );
+
+ Person p3 = new Person( "p3");
+ p3.setCheese( stilton );
+ wm.assertObject( p3 );
+
+ assertEquals( 3, created.size() );
+ assertEquals( 0, cancelled.size() );
+
+ Activation item = ((ActivationCreatedEvent) created.get( 2 )).getActivation();
+
+ // simulate a modify inside a consequence
+ wm.modifyObject( stiltonHandle, stilton, item.getRule(), item );
+
+ // the two of the three tuples should re-activate
+ assertEquals( 5, created.size() );
+ assertEquals( 3, cancelled.size() );
+ }
+
public void testDoubleQueryWithExists() throws Exception {
final PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_DoubleQueryWithExists.drl" ) ) );
Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_ModifyActivationCreationNoLoop.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_ModifyActivationCreationNoLoop.drl (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_ModifyActivationCreationNoLoop.drl 2007-04-10 23:26:14 UTC (rev 10872)
@@ -0,0 +1,15 @@
+package org.drools.test;
+
+import org.drools.Cheese;
+import org.drools.Person;
+
+rule "test1"
+ no-loop true
+ when
+ cheese : Cheese( price == 15 )
+ $p : Person( cheese == cheese )
+ then
+
+end
+
+
Modified: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_ModifyNoloop.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_ModifyNoloop.drl 2007-04-10 23:09:20 UTC (rev 10871)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_ModifyNoloop.drl 2007-04-10 23:26:14 UTC (rev 10872)
@@ -6,7 +6,7 @@
salience 10
no-loop true
when
- cheese : Cheese( price == 15 );
+ cheese : Cheese( price == 15 )
then
modify(cheese);
end
@@ -16,7 +16,7 @@
salience 0
no-loop true
when
- cheese : Cheese( price == 15 );
+ cheese : Cheese( price == 15 )
then
cheese.setPrice( 14 );
modify(cheese);
More information about the jboss-svn-commits
mailing list