[jboss-svn-commits] JBL Code SVN: r24727 - labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Jan 14 20:51:30 EST 2009
Author: mark.proctor at jboss.com
Date: 2009-01-14 20:51:29 -0500 (Wed, 14 Jan 2009)
New Revision: 24727
Modified:
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
Log:
-Added failing test where keywords are being replaced inside of a string due to a Macro declaration.
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java 2009-01-15 00:38:50 UTC (rev 24726)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java 2009-01-15 01:51:29 UTC (rev 24727)
@@ -16,6 +16,9 @@
* limitations under the License.
*/
+import static org.mvel2.MVEL.executeExpression;
+import static org.mvel2.MVEL.parseMacros;
+
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectInput;
@@ -127,6 +130,13 @@
import org.drools.spi.ConsequenceExceptionHandler;
import org.drools.spi.GlobalResolver;
import org.drools.xml.XmlDumper;
+import org.mvel2.Macro;
+import org.mvel2.ParserContext;
+import org.mvel2.ast.ASTNode;
+import org.mvel2.ast.WithNode;
+import org.mvel2.compiler.ExpressionCompiler;
+import org.mvel2.integration.Interceptor;
+import org.mvel2.integration.VariableResolverFactory;
/** Run all the tests with the ReteOO engine implementation */
public class MiscTest extends TestCase {
@@ -4421,7 +4431,80 @@
assertEquals( "rule1 for the package2",
results.get( 0 ) );
}
+
+ public static class Foo {
+ public String aValue = "";
+
+ }
+
+ public void testMacroSupportWithStrings() {
+ Map<String, Object> vars = new HashMap<String, Object>();
+ Foo foo = new Foo();
+ vars.put("foo", foo);
+ Map<String, Macro> macros = new HashMap<String, Macro>();
+
+ macros.put("modify", new Macro() {
+ public String doMacro() {
+ return "drools.modify";
+ }
+ });
+
+ assertEquals( "", foo.aValue);
+
+ ExpressionCompiler compiler = new ExpressionCompiler(parseMacros("\"This is an modify()\"", macros));
+
+ ParserContext ctx = new ParserContext(null, null, null);
+ ctx.setSourceFile("test.mv");
+ ctx.setDebugSymbols(true);
+
+ assertEquals( "\"This is an modify()\"", executeExpression(compiler.compile(ctx), null, vars) );
+ }
+
+ public void testFunctionReplacement() {
+ String str = "";
+ str += "package org.simple \n";
+ str += "global java.util.List list \n";
+ str += "rule xxx \n";
+ str += " no-loop true ";
+ str += "when \n";
+ str += " $fact : String() \n";
+ str += "then \n";
+ str += " list.add(\"This is an update()\"); \n";
+ str += " list.add(\"This is an update($fact)\"); \n";
+ str += " update($fact); \n";
+ str += "end \n";
+
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ), ResourceType.DRL );
+
+ if ( kbuilder.hasErrors() ) {
+ System.out.println( kbuilder.getErrors() );
+ assertTrue( kbuilder.hasErrors() );
+ }
+
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+ List list = new ArrayList();
+ ksession.setGlobal( "list", list );
+
+ ksession.insert( "hello" );
+ ksession.fireAllRules();
+
+ ksession.dispose();
+
+ assertEquals( 2, list.size() );
+ assertEquals( "This is an update()", list.get( 0 ) );
+ assertEquals( "This is an update($fact)", list.get( 1 ) );
+
+
+
+
+
+ }
+
public void testRuleReplacement() throws Exception {
// test rule replacement
final PackageBuilder builder1 = new PackageBuilder();
More information about the jboss-svn-commits
mailing list