[jboss-svn-commits] JBL Code SVN: r15968 - in labs/jbossrules/trunk/drools-compiler/src: main/java/org/drools/testframework and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sun Oct 21 23:53:46 EDT 2007


Author: michael.neale at jboss.com
Date: 2007-10-21 23:53:46 -0400 (Sun, 21 Oct 2007)
New Revision: 15968

Added:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/VerifyFact.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/VerifyField.java
Removed:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/AssertFactValue.java
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/AssertFieldValue.java
Modified:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/testframework/ScenarioRunner.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/ScenarioRunnerTest.java
Log:
JBRULES-1271 Test framework

Deleted: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/AssertFactValue.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/AssertFactValue.java	2007-10-21 19:06:44 UTC (rev 15967)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/AssertFactValue.java	2007-10-22 03:53:46 UTC (rev 15968)
@@ -1,9 +0,0 @@
-package org.drools.brms.client.modeldriven.testing;
-
-public class AssertFactValue implements Assertion {
-
-	public AssertFieldValue[] fieldValues = new AssertFieldValue[0];
-
-
-
-}

Deleted: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/AssertFieldValue.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/AssertFieldValue.java	2007-10-21 19:06:44 UTC (rev 15967)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/AssertFieldValue.java	2007-10-22 03:53:46 UTC (rev 15968)
@@ -1,11 +0,0 @@
-package org.drools.brms.client.modeldriven.testing;
-
-import java.io.Serializable;
-
-public class AssertFieldValue implements Serializable {
-
-	public String expected;
-	public String actual;
-	public boolean isChecked;
-
-}

Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/VerifyFact.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/VerifyFact.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/VerifyFact.java	2007-10-22 03:53:46 UTC (rev 15968)
@@ -0,0 +1,14 @@
+package org.drools.brms.client.modeldriven.testing;
+
+/**
+ * This is for making assertions over a specific facts value/state AFTER execution.
+ * @author Michael Neale
+ *
+ */
+public class VerifyFact implements Assertion {
+
+	public VerifyField[] fieldValues = new VerifyField[0];
+	public String factName;
+
+
+}

Copied: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/VerifyField.java (from rev 15967, labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/AssertFieldValue.java)
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/VerifyField.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/VerifyField.java	2007-10-22 03:53:46 UTC (rev 15968)
@@ -0,0 +1,20 @@
+package org.drools.brms.client.modeldriven.testing;
+
+import java.io.Serializable;
+
+public class VerifyField implements Serializable {
+
+	public String fieldName;
+	public String expected;
+	public String actual;
+	public Boolean success;
+
+	public VerifyField() {}
+
+	public VerifyField(String fieldName, String expected) {
+		this.fieldName = fieldName;
+		this.expected = expected;
+	}
+
+
+}

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/testframework/ScenarioRunner.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/testframework/ScenarioRunner.java	2007-10-21 19:06:44 UTC (rev 15967)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/testframework/ScenarioRunner.java	2007-10-22 03:53:46 UTC (rev 15968)
@@ -6,8 +6,8 @@
 import java.util.Map;
 
 import org.drools.base.TypeResolver;
-import org.drools.brms.client.modeldriven.testing.AssertFactValue;
-import org.drools.brms.client.modeldriven.testing.AssertFieldValue;
+import org.drools.brms.client.modeldriven.testing.VerifyFact;
+import org.drools.brms.client.modeldriven.testing.VerifyField;
 import org.drools.brms.client.modeldriven.testing.Assertion;
 import org.drools.brms.client.modeldriven.testing.FactData;
 import org.drools.brms.client.modeldriven.testing.FieldData;
@@ -30,7 +30,7 @@
 	 * @param resolver A populated type resolved to be used to resolve the types in the scenario.
 	 *
 	 * For info on how to invoke this, see ContentPackageAssemblerTest.testPackageWithRuleflow in drools-jbrms
-	 * This requires that the classloader for the context be set appropraitely. The PackageBuilder
+	 * This requires that the classloader for the thread context be set appropraitely. The PackageBuilder
 	 * can provide a suitable TypeResolver for a given package header, and the Package config can provide
 	 * a classloader.
 	 *
@@ -54,21 +54,25 @@
 		//now check the results...
 		for (int i = 0; i < scenario.assertions.length; i++) {
 			Assertion assertion = scenario.assertions[i];
-			if (assertion instanceof AssertFactValue) {
-				verify((AssertFactValue)assertion);
+			if (assertion instanceof VerifyFact) {
+				verify((VerifyFact)assertion);
 			}
 		}
 	}
 
 
 
-	private void verify(AssertFactValue value) {
+	void verify(VerifyFact value) {
+		Object fact = this.populatedData.get(value.factName);
 		for (int i = 0; i < value.fieldValues.length; i++) {
-			AssertFieldValue verify = value.fieldValues[i];
-			verify.isChecked = true;
-			//hmmm... need a ruleset that we can use to take data
-			//from the WM under test - perhaps ALL the data
-			//if checking a named fact, may not be worth the hassle
+			VerifyField fld = value.fieldValues[i];
+			Map<String, Object> st = new HashMap<String, Object>();
+			st.put("__fact__", fact);
+			st.put("__expected__", fld.expected);
+			fld.success =  (Boolean) eval( "__fact__." + fld.fieldName + " == __expected__", st);
+ 			if (!fld.success) {
+ 				fld.actual = eval("__fact__." + fld.fieldName, st).toString();
+ 			}
 		}
 	}
 

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/ScenarioRunnerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/ScenarioRunnerTest.java	2007-10-21 19:06:44 UTC (rev 15967)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/ScenarioRunnerTest.java	2007-10-22 03:53:46 UTC (rev 15968)
@@ -9,6 +9,8 @@
 import org.drools.brms.client.modeldriven.testing.FactData;
 import org.drools.brms.client.modeldriven.testing.FieldData;
 import org.drools.brms.client.modeldriven.testing.Scenario;
+import org.drools.brms.client.modeldriven.testing.VerifyFact;
+import org.drools.brms.client.modeldriven.testing.VerifyField;
 
 import junit.framework.TestCase;
 
@@ -43,6 +45,64 @@
 
 	}
 
+	public void testVerifyFacts() throws Exception {
 
+		ScenarioRunner runner = new ScenarioRunner(new Scenario(), null);
+		Cheese f1 = new Cheese("cheddar", 42);
+		runner.populatedData.put("f1", f1);
 
+		Person f2 = new Person("michael", 33);
+		runner.populatedData.put("f2", f2);
+
+		//test all true
+		VerifyFact vf = new VerifyFact();
+		vf.factName = "f1";
+		vf.fieldValues = new VerifyField[] { new VerifyField("type", "cheddar"), new VerifyField("price", "42") } ;
+
+		runner.verify(vf);
+		for (int i = 0; i < vf.fieldValues.length; i++) {
+			assertTrue(vf.fieldValues[i].success);
+		}
+
+		vf = new VerifyFact();
+		vf.factName = "f2";
+		vf.fieldValues = new VerifyField[] { new VerifyField("name", "michael"), new VerifyField("age", "33") } ;
+
+		runner.verify(vf);
+		for (int i = 0; i < vf.fieldValues.length; i++) {
+			assertTrue(vf.fieldValues[i].success);
+		}
+
+		//test one false
+		vf = new VerifyFact();
+		vf.factName = "f2";
+		vf.fieldValues = new VerifyField[] { new VerifyField("name", "mark"), new VerifyField("age", "33") } ;
+
+		runner.verify(vf);
+		assertFalse(vf.fieldValues[0].success);
+		assertTrue(vf.fieldValues[1].success);
+
+		assertEquals("michael", vf.fieldValues[0].actual);
+		assertEquals("mark", vf.fieldValues[0].expected);
+
+
+		//test 2 false
+		vf = new VerifyFact();
+		vf.factName = "f2";
+		vf.fieldValues = new VerifyField[] { new VerifyField("name", "mark"), new VerifyField("age", "32") } ;
+
+		runner.verify(vf);
+		assertFalse(vf.fieldValues[0].success);
+		assertFalse(vf.fieldValues[1].success);
+
+		assertEquals("michael", vf.fieldValues[0].actual);
+		assertEquals("mark", vf.fieldValues[0].expected);
+
+		assertEquals("33", vf.fieldValues[1].actual);
+		assertEquals("32", vf.fieldValues[1].expected);
+
+	}
+
+
+
 }




More information about the jboss-svn-commits mailing list