[jboss-svn-commits] JBL Code SVN: r32045 - in labs/jbossrules/soa_branches/BRMS-5.0.1/drools-compiler/src: test/java/org/drools/testframework and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Mar 11 15:58:49 EST 2010


Author: tsurdilovic
Date: 2010-03-11 15:58:49 -0500 (Thu, 11 Mar 2010)
New Revision: 32045

Modified:
   labs/jbossrules/soa_branches/BRMS-5.0.1/drools-compiler/src/main/java/org/drools/testframework/ScenarioRunner.java
   labs/jbossrules/soa_branches/BRMS-5.0.1/drools-compiler/src/test/java/org/drools/testframework/ScenarioRunnerTest.java
Log:
BRMS-142

Modified: labs/jbossrules/soa_branches/BRMS-5.0.1/drools-compiler/src/main/java/org/drools/testframework/ScenarioRunner.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.0.1/drools-compiler/src/main/java/org/drools/testframework/ScenarioRunner.java	2010-03-11 20:54:08 UTC (rev 32044)
+++ labs/jbossrules/soa_branches/BRMS-5.0.1/drools-compiler/src/main/java/org/drools/testframework/ScenarioRunner.java	2010-03-11 20:58:49 UTC (rev 32045)
@@ -24,6 +24,9 @@
 import org.drools.rule.Package;
 import org.drools.rule.TimeMachine;
 import org.mvel2.MVEL;
+import org.mvel2.ParserContext;
+import org.mvel2.compiler.CompiledExpression;
+import org.mvel2.compiler.ExpressionCompiler;
 
 
 /**
@@ -290,14 +293,31 @@
 				}
 				st.put("__expected__", expectedVal);
 
-				fld.successResult = (Boolean) eval("__fact__." + fld.fieldName
-						+ " " + fld.operator  + " __expected__", st);
+				
+				ParserContext ctx = new ParserContext();
+		 	 	for ( Map.Entry<String, Object> entry : st.entrySet() ) {
+		 	 		ctx.addInput( entry.getKey(),
+		 	 		entry.getValue().getClass() );
+		 	 	}
+		 	 	CompiledExpression expr = new ExpressionCompiler( "__fact__." + fld.fieldName
+		 	 							+ " " + fld.operator  + " __expected__" ).compile( ctx );
+				
+		 	 	fld.successResult = (Boolean) MVEL.executeExpression( expr,
+		 	 	 	 												  st );
+		 	 	 	 	 
+		 	 	//                              fld.successResult = (Boolean) eval("__fact__." + fld.fieldName
+		 	 	//                                              + " " + fld.operator  + " __expected__", st);
 
+				
+		 	 	if (!fld.successResult) {
+					//Object actual = eval("__fact__." + fld.fieldName, st);
+					
+		 	 		Object actual = MVEL.executeExpression( new ExpressionCompiler( "__fact__." + fld.fieldName ).compile( ctx ),
+		 	 		 	 				st );
+		 	 		
+		 	 		
+		 	 		fld.actualResult = (actual != null) ? actual.toString() : "";
 
-				if (!fld.successResult) {
-					Object actual = eval("__fact__." + fld.fieldName, st);
-					fld.actualResult = (actual != null) ? actual.toString() : "";
-
 					if (fld.operator.equals("==")) {
 						fld.explanation = "[" + value.name + "] field [" + fld.fieldName + "] was [" + fld.actualResult
 											+ "] expected [" + fld.expected + "].";

Modified: labs/jbossrules/soa_branches/BRMS-5.0.1/drools-compiler/src/test/java/org/drools/testframework/ScenarioRunnerTest.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.0.1/drools-compiler/src/test/java/org/drools/testframework/ScenarioRunnerTest.java	2010-03-11 20:54:08 UTC (rev 32044)
+++ labs/jbossrules/soa_branches/BRMS-5.0.1/drools-compiler/src/test/java/org/drools/testframework/ScenarioRunnerTest.java	2010-03-11 20:58:49 UTC (rev 32045)
@@ -1,5 +1,7 @@
 package org.drools.testframework;
 
+import static org.mvel2.MVEL.eval;
+
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Date;
@@ -28,6 +30,7 @@
 import org.drools.guvnor.client.modeldriven.testing.VerifyRuleFired;
 import org.drools.guvnor.server.util.ScenarioXMLPersistence;
 import org.drools.rule.TimeMachine;
+import org.mvel2.MVEL;
 
 public class ScenarioRunnerTest extends RuleUnit {
 	
@@ -691,7 +694,45 @@
                       c2.getType() );
 
     }
-
+        
+	/**
+	 * Check if global list is empty.
+	*/
+	public void testWithGlobalList() throws Exception {
+		Scenario sc = new Scenario();
+		sc.globals.add( new FactData( "List",
+									  "testList",
+									  new ArrayList(),
+									  false ) );
+	
+		Expectation[] assertions = new Expectation[2];
+	 		
+	 	assertions[0] = new VerifyFact( "testList",
+	 									ls( new VerifyField( "empty",
+	 														"true",
+	 														"==" ) ) );
+	 	assertions[1] = new VerifyFact( "testList",
+	 									ls( new VerifyField( "size",
+	 	                                                     "0",
+	 													     "==" ) ) );
+	 		
+	 	sc.fixtures.addAll( Arrays.asList( assertions ) );
+	 		
+	 	TypeResolver resolver = new ClassTypeResolver( new HashSet<String>(),
+	                                                  Thread.currentThread().getContextClassLoader() );
+	 	resolver.addImport( "java.util.List" );
+	 		
+	 	MockWorkingMemory wm = new MockWorkingMemory();
+	 	ScenarioRunner run = new ScenarioRunner( sc,
+	 	                                         resolver,
+	 	                                         wm );
+	 		
+	 	List testList = (List) wm.globals.get( "testList" );
+	 	assertTrue( testList.isEmpty() );
+	 	assertEquals( 0,
+	 	              testList.size() );
+	 	}
+	 	
     @SuppressWarnings("deprecation")
     // F**** dates in java. What a mess. Someone should die.
     public void testSimulatedDate() throws Exception {



More information about the jboss-svn-commits mailing list