[jboss-svn-commits] JBL Code SVN: r21441 - labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Aug 11 13:49:09 EDT 2008


Author: tirelli
Date: 2008-08-11 13:49:09 -0400 (Mon, 11 Aug 2008)
New Revision: 21441

Added:
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELAccumulateBuilderTest.java
Modified:
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/InstrumentedDeclarationScopeResolver.java
Log:
Adding accumulate test

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/InstrumentedDeclarationScopeResolver.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/InstrumentedDeclarationScopeResolver.java	2008-08-11 16:59:18 UTC (rev 21440)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/InstrumentedDeclarationScopeResolver.java	2008-08-11 17:49:09 UTC (rev 21441)
@@ -12,7 +12,7 @@
     private Map declarations;
 
     public InstrumentedDeclarationScopeResolver() {
-        super( null );
+        super( new Map[0] );
     }
 
     public void setDeclarations(final Map map) {

Added: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELAccumulateBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELAccumulateBuilderTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELAccumulateBuilderTest.java	2008-08-11 17:49:09 UTC (rev 21441)
@@ -0,0 +1,93 @@
+package org.drools.rule.builder.dialect.mvel;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import junit.framework.TestCase;
+
+import org.drools.Cheese;
+import org.drools.RuleBase;
+import org.drools.RuleBaseFactory;
+import org.drools.WorkingMemory;
+import org.drools.common.InternalFactHandle;
+import org.drools.compiler.DialectCompiletimeRegistry;
+import org.drools.compiler.PackageBuilder;
+import org.drools.compiler.PackageBuilderConfiguration;
+import org.drools.lang.descr.AccumulateDescr;
+import org.drools.lang.descr.PatternDescr;
+import org.drools.lang.descr.RuleDescr;
+import org.drools.reteoo.InitialFactImpl;
+import org.drools.reteoo.LeftTuple;
+import org.drools.reteoo.MockLeftTupleSink;
+import org.drools.rule.Accumulate;
+import org.drools.rule.Package;
+
+public class MVELAccumulateBuilderTest extends TestCase {
+
+    public void setUp() {
+    }
+
+    public void testSimpleExpression() {
+        final Package pkg = new Package( "pkg1" );
+        final RuleDescr ruleDescr = new RuleDescr( "rule 1" );
+
+        PackageBuilder pkgBuilder = new PackageBuilder( pkg );
+        final PackageBuilderConfiguration conf = pkgBuilder.getPackageBuilderConfiguration();
+        DialectCompiletimeRegistry dialectRegistry = pkgBuilder.getPackageRegistry( pkg.getName() ).getDialectCompiletimeRegistry();
+        MVELDialect mvelDialect = (MVELDialect) dialectRegistry.getDialect( "mvel" );
+
+        final InstrumentedBuildContent context = new InstrumentedBuildContent( conf,
+                                                                               ruleDescr,
+                                                                               dialectRegistry,
+                                                                               pkg,
+                                                                               mvelDialect );
+
+        final InstrumentedDeclarationScopeResolver declarationResolver = new InstrumentedDeclarationScopeResolver();
+
+        final Map map = new HashMap();
+        declarationResolver.setDeclarations( map );
+        context.setDeclarationResolver( declarationResolver );
+
+        final AccumulateDescr accDescr = new AccumulateDescr();
+        final PatternDescr inputPattern = new PatternDescr( "org.drools.Cheese",
+                                                            "$cheese" );
+        accDescr.setInputPattern( inputPattern );
+        accDescr.setInitCode( "total = 0;" );
+        accDescr.setActionCode( "total += $cheese.price;" );
+        accDescr.setReverseCode( "total -= $cheese.price;" );
+        accDescr.setResultCode( "new Integer(total)" );
+
+        final MVELAccumulateBuilder builder = new MVELAccumulateBuilder();
+        final Accumulate acc = (Accumulate) builder.build( context,
+                                                           accDescr );
+
+        final RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+        final WorkingMemory wm = ruleBase.newStatefulSession();
+
+        MockLeftTupleSink sink = new MockLeftTupleSink();
+        final Cheese cheddar1 = new Cheese( "cheddar",
+                                            10 );
+        final Cheese cheddar2 = new Cheese( "cheddar",
+                                            8 );
+        final InternalFactHandle f0 = (InternalFactHandle) wm.insert( new InitialFactImpl() );
+        final InternalFactHandle f1 = (InternalFactHandle) wm.insert( cheddar1 );
+        final InternalFactHandle f2 = (InternalFactHandle) wm.insert( cheddar2 );
+        final LeftTuple tuple = new LeftTuple( f0,
+                                               sink,
+                                               true );
+
+        Object wmContext = acc.createWorkingMemoryContext();
+        Object accContext = acc.createContext();
+        acc.init( wmContext, accContext, tuple, wm );
+        
+        acc.accumulate( wmContext, accContext, tuple, f1, wm );
+        acc.accumulate( wmContext, accContext, tuple, f2, wm );
+
+        assertEquals( new Integer(18), acc.getResult( wmContext, accContext, tuple, wm ) );
+        
+        acc.reverse( wmContext, accContext, tuple, f1, wm );
+
+        assertEquals( new Integer(8), acc.getResult( wmContext, accContext, tuple, wm ) );
+    }
+
+}




More information about the jboss-svn-commits mailing list