[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