[jboss-svn-commits] JBL Code SVN: r13964 - in labs/jbossrules/trunk/drools-compiler/src/test: resources/org/drools/rule/builder/dialect and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Aug 2 10:15:45 EDT 2007


Author: ahtik
Date: 2007-08-02 10:15:45 -0400 (Thu, 02 Aug 2007)
New Revision: 13964

Added:
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/rule/builder/dialect/mvel/
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/rule/builder/dialect/mvel/mvel_rule.drl
Modified:
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilderTest.java
Log:
Failing testcase demonstrating problem with mvel debug symbols

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilderTest.java	2007-08-02 13:34:35 UTC (rev 13963)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/rule/builder/dialect/mvel/MVELConsequenceBuilderTest.java	2007-08-02 14:15:45 UTC (rev 13964)
@@ -1,9 +1,11 @@
 package org.drools.rule.builder.dialect.mvel;
 
+import java.io.InputStreamReader;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Properties;
 
+import junit.framework.Assert;
 import junit.framework.TestCase;
 
 import org.drools.Cheese;
@@ -12,17 +14,25 @@
 import org.drools.WorkingMemory;
 import org.drools.base.ClassObjectType;
 import org.drools.base.DefaultKnowledgeHelper;
+import org.drools.base.mvel.MVELConsequence;
 import org.drools.common.AgendaItem;
 import org.drools.common.InternalFactHandle;
 import org.drools.common.PropagationContextImpl;
+import org.drools.compiler.Dialect;
 import org.drools.compiler.DialectConfiguration;
+import org.drools.compiler.DrlParser;
+import org.drools.compiler.DroolsParserException;
 import org.drools.compiler.PackageBuilder;
 import org.drools.compiler.PackageBuilderConfiguration;
+import org.drools.lang.descr.PackageDescr;
 import org.drools.lang.descr.RuleDescr;
 import org.drools.reteoo.ReteTuple;
 import org.drools.rule.Declaration;
 import org.drools.rule.Package;
 import org.drools.rule.Pattern;
+import org.drools.rule.Rule;
+import org.drools.rule.builder.RuleBuildContext;
+import org.drools.rule.builder.RuleBuilder;
 import org.drools.spi.ObjectType;
 import org.drools.spi.PatternExtractor;
 
@@ -34,7 +44,7 @@
     public void testSimpleExpression() throws Exception {
         final Package pkg = new Package( "pkg1" );
         final RuleDescr ruleDescr = new RuleDescr( "rule 1" );
-        ruleDescr.setConsequence( "modify (cheese) {price = 5 }; retract (cheese)" );
+        ruleDescr.setConsequence( "modify (cheese) {price = 5 };\nretract (cheese)" );
 
         PackageBuilder pkgBuilder = new PackageBuilder( pkg );
         final PackageBuilderConfiguration conf = pkgBuilder.getPackageBuilderConfiguration();
@@ -193,4 +203,45 @@
                       MVELConsequenceBuilder.delimitExpressions( ex ) );
 
     }
+    
+    public void testMVELDebugSymbols() throws DroolsParserException {
+        
+        final DrlParser parser = new DrlParser();
+        final PackageDescr pkgDescr = parser.parse( new InputStreamReader( getClass().getResourceAsStream( "mvel_rule.drl" ) ) );
+
+        // just checking there is no parsing errors
+        Assert.assertFalse( parser.getErrors().toString(),
+                            parser.hasErrors() );
+
+        final Package pkg = new Package( "org.drools" );
+
+        final RuleDescr ruleDescr = (RuleDescr) pkgDescr.getRules().get( 0 );
+
+        final RuleBuilder builder = new RuleBuilder( );                
+        
+        final PackageBuilder pkgBuilder = new PackageBuilder(pkg);
+        final PackageBuilderConfiguration conf = pkgBuilder.getPackageBuilderConfiguration();
+        Dialect dialect = pkgBuilder.getPackageBuilderConfiguration().getDialectRegistry().getDialectConfiguration( "mvel" ).getDialect();
+        
+        RuleBuildContext context = new RuleBuildContext(conf, pkg, ruleDescr, conf.getDialectRegistry(), dialect);
+        
+        builder.build( context );
+
+        Assert.assertTrue( context.getErrors().toString(),
+                           context.getErrors().isEmpty() );
+
+        final Rule rule = context.getRule();
+
+        MVELConsequence mvelCons = (MVELConsequence) rule.getConsequence();
+        String s = org.mvel.debug.DebugTools.decompile(mvelCons.getCompExpr());
+        
+        int fromIndex=0;
+        int count = 0;
+        while ((fromIndex = s.indexOf( "DEBUG_SYMBOL", fromIndex+1 )) > -1) {
+            count++;
+        }
+        assertEquals(4, count);
+
+    }
+    
 }

Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/rule/builder/dialect/mvel/mvel_rule.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/rule/builder/dialect/mvel/mvel_rule.drl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/rule/builder/dialect/mvel/mvel_rule.drl	2007-08-02 14:15:45 UTC (rev 13964)
@@ -0,0 +1,11 @@
+
+rule simple_rule 
+  dialect "mvel"
+  when
+
+  then 
+	  System.out.println( "a1" );
+	  System.out.println( "a2" );
+	  System.out.println( "a3" );
+	  System.out.println( "a4" );
+end
\ No newline at end of file




More information about the jboss-svn-commits mailing list