[jboss-svn-commits] JBL Code SVN: r17466 - 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
Mon Dec 31 08:52:48 EST 2007


Author: mark.proctor at jboss.com
Date: 2007-12-31 08:52:48 -0500 (Mon, 31 Dec 2007)
New Revision: 17466

Added:
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_LocalVariableMVELConsequence.drl
Modified:
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MVELTest.java
Log:
JBRULES-1397 org.mvel.CompileException: variable already defined within scope
-localvariables  is now always created, or cleared, on setcontext.
-createVariables for typed and untyped local variables is now simplified.

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MVELTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MVELTest.java	2007-12-31 13:49:04 UTC (rev 17465)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MVELTest.java	2007-12-31 13:52:48 UTC (rev 17466)
@@ -16,6 +16,7 @@
 import junit.framework.TestCase;
 
 import org.drools.Cheese;
+import org.drools.Person;
 import org.drools.RuleBase;
 import org.drools.RuleBaseFactory;
 import org.drools.WorkingMemory;
@@ -69,9 +70,37 @@
 
         Date dt = DateUtils.parseDate( "10-Jul-1974" );
         assertEquals(dt, c.getUsedBy());
-
-
     }
+    
+    public void testLocalVariableMVELConsequence() throws Exception {
+        final PackageBuilder builder = new PackageBuilder();
+        builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_LocalVariableMVELConsequence.drl" ) ) );
+        final Package pkg = builder.getPackage();
+ 
+        final RuleBase ruleBase = getRuleBase();
+        ruleBase.addPackage( pkg );
+        final WorkingMemory workingMemory = ruleBase.newStatefulSession();
+ 
+        final List list = new ArrayList();
+        workingMemory.setGlobal( "results",
+                                 list );
+ 
+        workingMemory.insert( new Person( "bob", "stilton" ) );
+        workingMemory.insert( new Person( "mark", "brie" ) );
+ 
+        try {
+            workingMemory.fireAllRules();
+ 
+            assertEquals( "should have fired twice", 
+                          2,
+                          list.size() );
+ 
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail( "Should not raise any exception");
+        }
+ 
+    }    
 
     public Object compiledExecute(String ex) {
         Serializable compiled = MVEL.compileExpression(ex);

Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_LocalVariableMVELConsequence.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_LocalVariableMVELConsequence.drl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_LocalVariableMVELConsequence.drl	2007-12-31 13:52:48 UTC (rev 17466)
@@ -0,0 +1,12 @@
+package org.drools;
+ 
+global java.util.List results;
+ 
+rule "test local variable in mvel consequence"
+    dialect "mvel"
+	when
+		$p : Person( $likes : likes ) 
+	then
+	    Cheese c = new Cheese( $likes );
+	    results.add( c );
+end
\ No newline at end of file




More information about the jboss-svn-commits mailing list