[jboss-svn-commits] JBL Code SVN: r10946 - 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
Thu Apr 12 17:07:37 EDT 2007
Author: mark.proctor at jboss.com
Date: 2007-04-12 17:07:36 -0400 (Thu, 12 Apr 2007)
New Revision: 10946
Added:
labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_LockOnActiveWithModify.drl
Modified:
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java
Log:
JBRULES-788 lock-on-activate rule attribute
-found a bug with modify, we need to know when activations are truly new on modify. So now keep a hashmap of retractions during modify.
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-12 21:07:29 UTC (rev 10945)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java 2007-04-12 21:07:36 UTC (rev 10946)
@@ -67,6 +67,7 @@
import org.drools.TestParam;
import org.drools.WorkingMemory;
import org.drools.Cheesery.Maturity;
+import org.drools.common.DefaultAgenda;
import org.drools.common.InternalWorkingMemory;
import org.drools.common.InternalWorkingMemoryActions;
import org.drools.common.PropagationContextImpl;
@@ -1734,10 +1735,61 @@
final Cheese cheddar17 = new Cheese( "cheddar",
17 );
workingMemory.assertObject( cheddar17 );
- assertEquals( 1, group2.size() );
-
+ assertEquals( 1, group2.size() );
}
+ public void testLockOnActiveWithModify() throws Exception {
+ final PackageBuilder builder = new PackageBuilder();
+ builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_LockOnActiveWithModify.drl" ) ) );
+ final Package pkg = builder.getPackage();
+
+ final RuleBase ruleBase = getRuleBase();
+ ruleBase.addPackage( pkg );
+ final WorkingMemory wm = ruleBase.newWorkingMemory();
+
+ final List list = new ArrayList();
+ wm.setGlobal( "list",
+ list );
+
+ Cheese brie = new Cheese("brie", 13);
+
+ Person bob = new Person( "bob" );
+ bob.setCheese( brie );
+
+ Person mic = new Person( "mic" );
+ mic.setCheese( brie );
+
+ Person mark = new Person( "mark" );
+ mark.setCheese( brie );
+
+ FactHandle brieHandle = wm.assertObject( brie );
+ wm.assertObject( bob );
+ wm.assertObject( mic );
+ wm.assertObject( mark );
+
+ DefaultAgenda agenda = (DefaultAgenda) wm.getAgenda();
+ AgendaGroup group1 = agenda.getAgendaGroup( "group1" );
+ agenda.setFocus( group1 );
+ assertEquals( 3, group1.size() );
+ agenda.fireNextItem( null );
+ assertEquals( 2, group1.size() );
+ wm.modifyObject( brieHandle, brie );
+ assertEquals( 2, group1.size() );
+
+
+// AgendaGroup group2 = agenda.getAgendaGroup( "group2" );
+// agenda.setFocus( group2 );
+//
+// RuleFlowGroupImpl rfg = ( RuleFlowGroupImpl )wm.getAgenda().getRuleFlowGroup( "ruleflow2" );
+// assertEquals( 3, rfg.size() );
+//
+// agenda.activateRuleFlowGroup( "ruleflow2" );
+// agenda.fireNextItem( null );
+// assertEquals( 2, rfg.size() );
+// wm.modifyObject( brieHandle, brie );
+// assertEquals( 2, group2.size() );
+ }
+
public void testDumpers() throws Exception {
final DrlParser parser = new DrlParser();
final PackageDescr pkg = parser.parse( new InputStreamReader( getClass().getResourceAsStream( "test_Dumpers.drl" ) ) );
Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_LockOnActiveWithModify.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_LockOnActiveWithModify.drl (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_LockOnActiveWithModify.drl 2007-04-12 21:07:36 UTC (rev 10946)
@@ -0,0 +1,27 @@
+package org.drools.test;
+
+import org.drools.Person;
+import org.drools.Cheese;
+
+global java.util.List list;
+
+rule "test lock with modify"
+ agenda-group "group1"
+ lock-on-active true
+ when
+ $cheese : Cheese( price < 30 )
+ $person : Person( cheese == $cheese )
+ then
+ list.add( $person );
+end
+
+rule "test group2 ruleflow2"
+ agenda-group "group2"
+ ruleflow-group "ruleflow2"
+ lock-on-active true
+ when
+ $cheese : Cheese( price < 30 )
+ $person : Person( cheese == $cheese )
+ then
+ list.add( $person );
+end
\ No newline at end of file
More information about the jboss-svn-commits
mailing list