[jboss-svn-commits] JBL Code SVN: r9954 - in labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools: clp and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sun Mar 4 14:51:56 EST 2007


Author: mark.proctor at jboss.com
Date: 2007-03-04 14:51:55 -0500 (Sun, 04 Mar 2007)
New Revision: 9954

Added:
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/clp/
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/clp/ClpParserTest.java
Log:
JBRULES-720 Clips Parser

Added: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/clp/ClpParserTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/clp/ClpParserTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/clp/ClpParserTest.java	2007-03-04 19:51:55 UTC (rev 9954)
@@ -0,0 +1,127 @@
+package org.drools.clp;
+
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.util.List;
+
+import junit.framework.TestCase;
+
+import org.antlr.runtime.ANTLRStringStream;
+import org.antlr.runtime.CharStream;
+import org.antlr.runtime.Lexer;
+import org.antlr.runtime.TokenStream;
+import org.drools.compiler.SwitchingCommonTokenStream;
+import org.drools.lang.DRLLexer;
+import org.drools.lang.DRLParser;
+import org.drools.lang.descr.AndDescr;
+import org.drools.lang.descr.ColumnDescr;
+import org.drools.lang.descr.FieldConstraintDescr;
+import org.drools.lang.descr.LiteralRestrictionDescr;
+import org.drools.lang.descr.RestrictionConnectiveDescr;
+import org.drools.lang.descr.RuleDescr;
+
+public class ClpParserTest extends TestCase {
+    
+    private CLPParser parser;
+    
+    public void testRule() throws Exception {
+        RuleDescr rule = parse("(defrule xxx (name (name =(xxx)\"yyy\"&~\"zzz\") )").rule();
+        
+        assertEquals( "xxx", rule.getName() );
+        
+        AndDescr lhs = rule.getLhs();
+        List lhsList = lhs.getDescrs();
+        assertEquals(1, lhsList.size());
+        
+        ColumnDescr col = ( ColumnDescr ) lhsList.get( 0 );
+        assertEquals("name", col.getObjectType() );
+        
+        List colList = col.getDescrs();
+        assertEquals(1, colList.size());
+        FieldConstraintDescr fieldConstraintDescr = ( FieldConstraintDescr ) colList.get( 0 );
+        List restrictionList = fieldConstraintDescr.getRestrictions();
+        
+        assertEquals("name", fieldConstraintDescr.getFieldName() );
+        assertEquals(3, restrictionList.size());
+        
+        LiteralRestrictionDescr litDescr = ( LiteralRestrictionDescr ) restrictionList.get( 0 );
+        assertEquals("==", litDescr.getEvaluator() );
+        assertEquals("yyy", litDescr.getText() );
+
+        RestrictionConnectiveDescr connDescr = ( RestrictionConnectiveDescr ) restrictionList.get( 1 );
+        assertEquals(RestrictionConnectiveDescr.AND, connDescr.getConnective() );
+        
+        litDescr = ( LiteralRestrictionDescr ) restrictionList.get( 2 );
+        assertEquals("!=", litDescr.getEvaluator() );
+        assertEquals("zzz", litDescr.getText() );
+    }
+    
+    private CLPParser parse(final String text) throws Exception {
+        this.parser = newParser( newTokenStream( newLexer( newCharStream( text ) ) ) );
+        return this.parser;
+    }
+
+    private CLPParser parse(final String source,
+                            final String text) throws Exception {
+        this.parser = newParser( newTokenStream( newLexer( newCharStream( text ) ) ) );
+        this.parser.setSource( source );
+        return this.parser;
+    }
+
+    private Reader getReader(final String name) throws Exception {
+        final InputStream in = getClass().getResourceAsStream( name );
+
+        return new InputStreamReader( in );
+    }
+
+    private CLPParser parseResource(final String name) throws Exception {
+
+        //        System.err.println( getClass().getResource( name ) );
+        Reader reader = getReader( name );
+
+        final StringBuffer text = new StringBuffer();
+
+        final char[] buf = new char[1024];
+        int len = 0;
+
+        while ( (len = reader.read( buf )) >= 0 ) {
+            text.append( buf,
+                         0,
+                         len );
+        }
+
+        return parse( name,
+                      text.toString() );
+    }
+
+    private CharStream newCharStream(final String text) {
+        return new ANTLRStringStream( text );
+    }
+
+    private CLPLexer newLexer(final CharStream charStream) {
+        return new CLPLexer( charStream );
+    }
+
+    private TokenStream newTokenStream(final Lexer lexer) {
+        return new SwitchingCommonTokenStream( lexer );
+    }
+
+    private CLPParser newParser(final TokenStream tokenStream) {
+        final CLPParser p = new CLPParser( tokenStream );
+        //p.setParserDebug( true );
+        return p;
+    }
+
+    private void assertEqualsIgnoreWhitespace(final String expected,
+                                              final String actual) {
+        final String cleanExpected = expected.replaceAll( "\\s+",
+                                                          "" );
+        final String cleanActual = actual.replaceAll( "\\s+",
+                                                      "" );
+
+        assertEquals( cleanExpected,
+                      cleanActual );
+    }
+
+}




More information about the jboss-svn-commits mailing list