[jboss-svn-commits] JBL Code SVN: r11684 - labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/dsl.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri May 4 10:44:14 EDT 2007


Author: tirelli
Date: 2007-05-04 10:44:13 -0400 (Fri, 04 May 2007)
New Revision: 11684

Modified:
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/dsl/DefaultExpanderTest.java
Log:
JBRULES-790: adding unit test to DSL expansion with keyword clashes.

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/dsl/DefaultExpanderTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/dsl/DefaultExpanderTest.java	2007-05-04 14:31:10 UTC (rev 11683)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/lang/dsl/DefaultExpanderTest.java	2007-05-04 14:44:13 UTC (rev 11684)
@@ -3,13 +3,13 @@
 import java.io.InputStreamReader;
 import java.io.Reader;
 import java.io.StringReader;
-import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
+import junit.framework.TestCase;
+
 import org.drools.lang.ExpanderException;
-import org.drools.lang.dsl.DSLMappingEntry.Section;
 
-import junit.framework.TestCase;
-
 public class DefaultExpanderTest extends TestCase {
     private DSLMappingFile  file     = null;
     private DefaultExpander expander = null;
@@ -46,7 +46,8 @@
         DSLMappingFile file = new DSLMappingFile();
         String dsl = "[when]foo=Foo()\n[then]bar {num}=baz({num});";
         file.parseAndLoad( new StringReader( dsl ) );
-        assertEquals( 0, file.getErrors().size() );
+        assertEquals( 0,
+                      file.getErrors().size() );
 
         DefaultExpander ex = new DefaultExpander();
         ex.addDSLMapping( file.getMapping() );
@@ -61,24 +62,53 @@
         drl = ex.expand( source );
         //System.out.println( drl );
         assertTrue( ex.hasErrors() );
-        assertEquals( 1, ex.getErrors().size() );
+        assertEquals( 1,
+                      ex.getErrors().size() );
         //System.err.println(( (ExpanderException) ex.getErrors().get( 0 )).getMessage());
+    }
 
+    public void testExpandWithKeywordClashes() throws Exception {
+
+        DSLMappingFile file = new DSLMappingFile();
+        String dsl = "[when]Invoke rule executor=ruleExec: RuleExecutor()\n" + "[then]Execute rule \"{id}\"=ruleExec.ExecuteSubRule( new Long({id}));";
+        file.parseAndLoad( new StringReader( dsl ) );
+        assertEquals( 0,
+                      file.getErrors().size() );
+
+        DefaultExpander ex = new DefaultExpander();
+        ex.addDSLMapping( file.getMapping() );
+        String source = "package something;\n\nrule \"1\"\nwhen\n    Invoke rule executor\nthen\n    Execute rule \"5\"\nend";
+        String expected = "package something;\n\nrule \"1\"\nwhen\n   ruleExec: RuleExecutor()\nthen\n   ruleExec.ExecuteSubRule( new Long(5));\nend\n";
+        String drl = ex.expand( source );
+//        System.out.println("["+drl+"]" );
+//        System.out.println("["+expected+"]" );
+        assertFalse( ex.hasErrors() );
+        assertEquals( expected, drl );
+
     }
-    
+
     public void FIXME_testLineNumberError() throws Exception {
         DSLMappingFile file = new DSLMappingFile();
         String dsl = "[when]foo=Foo()\n[then]bar {num}=baz({num});";
         file.parseAndLoad( new StringReader( dsl ) );
-        
+
         DefaultExpander ex = new DefaultExpander();
         ex.addDSLMapping( file.getMapping() );
         String source = "rule 'q'\nagenda-group 'x'\nwhen\n    __  \nthen\n    bar 42\nend";
         ex.expand( source );
         assertTrue( ex.hasErrors() );
-        assertEquals(1, ex.getErrors().size());
+        assertEquals( 1,
+                      ex.getErrors().size() );
         ExpanderException err = (ExpanderException) ex.getErrors().get( 0 );
-        assertEquals(4, err.getLine());
-        
+        assertEquals( 4,
+                      err.getLine() );
+
     }
+    
+    private boolean equalsIgnoreWhiteSpace( String expected, String actual ) {
+        String patternStr = expected.replaceAll( "\\s+", "(\\\\s|\\\\n|\\\\r)*" );//.replaceAll( "\\n", "\\s*\\$" );
+        Pattern pattern = Pattern.compile( patternStr, Pattern.DOTALL );
+        Matcher m = pattern.matcher( actual );
+        return m.matches();
+    }
 }




More information about the jboss-svn-commits mailing list