[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