[jboss-svn-commits] JBL Code SVN: r15973 - 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
Mon Oct 22 01:38:26 EDT 2007


Author: michael.neale at jboss.com
Date: 2007-10-22 01:38:26 -0400 (Mon, 22 Oct 2007)
New Revision: 15973

Added:
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/MockWorkingMemory.java
Modified:
   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/testframework/ScenarioRunner.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/ScenarioRunnerTest.java
Log:
JBRULES-1271 Test framework

Modified: 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	2007-10-22 05:19:56 UTC (rev 15972)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/VerifyFact.java	2007-10-22 05:38:26 UTC (rev 15973)
@@ -11,4 +11,10 @@
 	public String factName;
 
 
+	public VerifyFact() {}
+	public VerifyFact(String factName, VerifyField[] fieldValues) {
+		this.factName = factName;
+		this.fieldValues = fieldValues;
+	}
+
 }

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-22 05:19:56 UTC (rev 15972)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/testframework/ScenarioRunner.java	2007-10-22 05:38:26 UTC (rev 15973)
@@ -3,8 +3,10 @@
 import static org.mvel.MVEL.eval;
 
 import java.util.HashMap;
+import java.util.Iterator;
 import java.util.Map;
 
+import org.drools.WorkingMemory;
 import org.drools.base.TypeResolver;
 import org.drools.brms.client.modeldriven.testing.VerifyFact;
 import org.drools.brms.client.modeldriven.testing.VerifyField;
@@ -35,7 +37,7 @@
 	 * a classloader.
 	 *
 	 */
-	public ScenarioRunner(Scenario scenario, TypeResolver resolver) throws ClassNotFoundException {
+	public ScenarioRunner(Scenario scenario, TypeResolver resolver, WorkingMemory wm) throws ClassNotFoundException {
 		Map<String, Object> factData = new HashMap<String, Object>();
 		this.scenario = scenario;
 
@@ -50,6 +52,8 @@
 		this.populatedData = factData;
 
 		//now run the rules...
+		insertData(wm, this.populatedData);
+		wm.fireAllRules();
 
 		//now check the results...
 		for (int i = 0; i < scenario.assertions.length; i++) {
@@ -62,6 +66,14 @@
 
 
 
+	private void insertData(WorkingMemory wm, Map<String, Object> data) {
+		for (Iterator<Object> iterator = data.values().iterator(); iterator.hasNext();) {
+			wm.insert(iterator.next());
+		}
+	}
+
+
+
 	void verify(VerifyFact value) {
 		Object fact = this.populatedData.get(value.factName);
 		for (int i = 0; i < value.fieldValues.length; i++) {
@@ -95,9 +107,6 @@
 		}
 	}
 
-	public Map<String, Object> getFacts() {
-		return this.populatedData;
-	}
 
 
 

Added: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/MockWorkingMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/MockWorkingMemory.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/MockWorkingMemory.java	2007-10-22 05:38:26 UTC (rev 15973)
@@ -0,0 +1,375 @@
+package org.drools.testframework;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.drools.Agenda;
+import org.drools.FactException;
+import org.drools.FactHandle;
+import org.drools.MockFactHandle;
+import org.drools.ObjectFilter;
+import org.drools.QueryResults;
+import org.drools.RuleBase;
+import org.drools.common.InternalWorkingMemory;
+import org.drools.common.NodeMemory;
+import org.drools.common.TruthMaintenanceSystem;
+import org.drools.common.WorkingMemoryAction;
+import org.drools.event.AgendaEventListener;
+import org.drools.event.AgendaEventSupport;
+import org.drools.event.RuleBaseEventListener;
+import org.drools.event.RuleFlowEventListener;
+import org.drools.event.RuleFlowEventSupport;
+import org.drools.event.WorkingMemoryEventListener;
+import org.drools.event.WorkingMemoryEventSupport;
+import org.drools.reteoo.LIANodePropagation;
+import org.drools.rule.Rule;
+import org.drools.rule.TimeMachine;
+import org.drools.ruleflow.common.instance.ProcessInstance;
+import org.drools.spi.Activation;
+import org.drools.spi.AgendaFilter;
+import org.drools.spi.AgendaGroup;
+import org.drools.spi.AsyncExceptionHandler;
+import org.drools.spi.FactHandleFactory;
+import org.drools.spi.GlobalResolver;
+import org.drools.spi.PropagationContext;
+import org.drools.util.ObjectHashMap;
+import org.drools.util.concurrent.locks.Lock;
+
+public class MockWorkingMemory implements InternalWorkingMemory {
+
+	List<Object> facts = new ArrayList<Object>();
+
+	public void addLIANodePropagation(LIANodePropagation liaNodePropagation) {
+		// TODO Auto-generated method stub
+
+	}
+
+	public void clearNodeMemory(NodeMemory node) {
+		// TODO Auto-generated method stub
+
+	}
+
+	public void executeQueuedActions() {
+		// TODO Auto-generated method stub
+
+	}
+
+	public ObjectHashMap getAssertMap() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public FactHandleFactory getFactHandleFactory() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public ObjectHashMap getFactHandleMap() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public long getId() {
+		// TODO Auto-generated method stub
+		return 0;
+	}
+
+	public Lock getLock() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public long getNextPropagationIdCounter() {
+		// TODO Auto-generated method stub
+		return 0;
+	}
+
+	public Object getNodeMemory(NodeMemory node) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public TimeMachine getTimeMachine() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public TruthMaintenanceSystem getTruthMaintenanceSystem() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public boolean isSequential() {
+		// TODO Auto-generated method stub
+		return false;
+	}
+
+	public void queueWorkingMemoryAction(WorkingMemoryAction action) {
+		// TODO Auto-generated method stub
+
+	}
+
+	public void removeLogicalDependencies(Activation activation,
+			PropagationContext context, Rule rule) throws FactException {
+		// TODO Auto-generated method stub
+
+	}
+
+	public void retract(FactHandle factHandle, boolean removeLogical,
+			boolean updateEqualsMap, Rule rule, Activation activation)
+			throws FactException {
+		// TODO Auto-generated method stub
+
+	}
+
+	public void setAgendaEventSupport(AgendaEventSupport agendaEventSupport) {
+		// TODO Auto-generated method stub
+
+	}
+
+	public void setRuleFlowEventSupport(
+			RuleFlowEventSupport ruleFlowEventSupport) {
+		// TODO Auto-generated method stub
+
+	}
+
+	public void setWorkingMemoryEventSupport(
+			WorkingMemoryEventSupport workingMemoryEventSupport) {
+		// TODO Auto-generated method stub
+
+	}
+
+	public void clearActivationGroup(String group) {
+		// TODO Auto-generated method stub
+
+	}
+
+	public void clearAgenda() {
+		// TODO Auto-generated method stub
+
+	}
+
+	public void clearAgendaGroup(String group) {
+		// TODO Auto-generated method stub
+
+	}
+
+	public void clearRuleFlowGroup(String group) {
+		// TODO Auto-generated method stub
+
+	}
+
+	public void fireAllRules() throws FactException {
+		// TODO Auto-generated method stub
+
+	}
+
+	public void fireAllRules(AgendaFilter agendaFilter) throws FactException {
+		// TODO Auto-generated method stub
+
+	}
+
+	public void fireAllRules(int fireLimit) throws FactException {
+		// TODO Auto-generated method stub
+
+	}
+
+	public void fireAllRules(AgendaFilter agendaFilter, int fireLimit)
+			throws FactException {
+		// TODO Auto-generated method stub
+
+	}
+
+	public Agenda getAgenda() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public FactHandle getFactHandle(Object object) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public AgendaGroup getFocus() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public Object getGlobal(String identifier) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public GlobalResolver getGlobalResolver() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public Object getObject(FactHandle handle) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public QueryResults getQueryResults(String query) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public QueryResults getQueryResults(String query, Object[] arguments) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public RuleBase getRuleBase() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public void halt() {
+		// TODO Auto-generated method stub
+
+	}
+
+	public FactHandle insert(Object object) throws FactException {
+		this.facts .add(object);
+		return new MockFactHandle(object.hashCode());
+	}
+
+	public FactHandle insert(Object object, boolean dynamic)
+			throws FactException {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public Iterator iterateFactHandles() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public Iterator iterateFactHandles(ObjectFilter filter) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public Iterator iterateObjects() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public Iterator iterateObjects(ObjectFilter filter) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public void modifyInsert(FactHandle factHandle, Object object) {
+		// TODO Auto-generated method stub
+
+	}
+
+	public void modifyRetract(FactHandle factHandle) {
+		// TODO Auto-generated method stub
+
+	}
+
+	public void retract(FactHandle handle) throws FactException {
+		// TODO Auto-generated method stub
+
+	}
+
+	public void setAsyncExceptionHandler(AsyncExceptionHandler handler) {
+		// TODO Auto-generated method stub
+
+	}
+
+	public void setFocus(String focus) {
+		// TODO Auto-generated method stub
+
+	}
+
+	public void setFocus(AgendaGroup focus) {
+		// TODO Auto-generated method stub
+
+	}
+
+	public void setGlobal(String identifier, Object value) {
+		// TODO Auto-generated method stub
+
+	}
+
+	public void setGlobalResolver(GlobalResolver globalResolver) {
+		// TODO Auto-generated method stub
+
+	}
+
+	public ProcessInstance startProcess(String processId) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public void update(FactHandle handle, Object object) throws FactException {
+		// TODO Auto-generated method stub
+
+	}
+
+	public void addEventListener(WorkingMemoryEventListener listener) {
+		// TODO Auto-generated method stub
+
+	}
+
+	public void addEventListener(AgendaEventListener listener) {
+		// TODO Auto-generated method stub
+
+	}
+
+	public void addEventListener(RuleFlowEventListener listener) {
+		// TODO Auto-generated method stub
+
+	}
+
+	public List getAgendaEventListeners() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public List getRuleFlowEventListeners() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public List getWorkingMemoryEventListeners() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public void removeEventListener(WorkingMemoryEventListener listener) {
+		// TODO Auto-generated method stub
+
+	}
+
+	public void removeEventListener(AgendaEventListener listener) {
+		// TODO Auto-generated method stub
+
+	}
+
+	public void removeEventListener(RuleFlowEventListener listener) {
+		// TODO Auto-generated method stub
+
+	}
+
+	public void addEventListener(RuleBaseEventListener listener) {
+		// TODO Auto-generated method stub
+
+	}
+
+	public List getRuleBaseEventListeners() {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	public void removeEventListener(RuleBaseEventListener listener) {
+		// TODO Auto-generated method stub
+
+	}
+
+}


Property changes on: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/MockWorkingMemory.java
___________________________________________________________________
Name: svn:eol-style
   + native

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-22 05:19:56 UTC (rev 15972)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/ScenarioRunnerTest.java	2007-10-22 05:38:26 UTC (rev 15973)
@@ -27,10 +27,10 @@
 																			new FieldData("age", "30 + 3", true)
 									})};
 
-		TypeResolver resolver = new ClassTypeResolver(new HashSet(), Thread.currentThread().getContextClassLoader());
+		TypeResolver resolver = new ClassTypeResolver(new HashSet<Object>(), Thread.currentThread().getContextClassLoader());
 		resolver.addImport("org.drools.Cheese");
 		resolver.addImport("org.drools.Person");
-		ScenarioRunner runner = new ScenarioRunner(sc, resolver);
+		ScenarioRunner runner = new ScenarioRunner(sc, resolver, new MockWorkingMemory());
 
 		assertTrue(runner.populatedData.containsKey("c1"));
 		assertTrue(runner.populatedData.containsKey("p1"));
@@ -47,7 +47,7 @@
 
 	public void testVerifyFacts() throws Exception {
 
-		ScenarioRunner runner = new ScenarioRunner(new Scenario(), null);
+		ScenarioRunner runner = new ScenarioRunner(new Scenario(), null, new MockWorkingMemory());
 		Cheese f1 = new Cheese("cheddar", 42);
 		runner.populatedData.put("f1", f1);
 
@@ -103,6 +103,37 @@
 
 	}
 
+	public void testDummyRunNoRules() throws Exception {
+		Scenario sc = new Scenario();
+		sc.facts = new FactData[] { new FactData("Cheese", "c1", new FieldData[] {
+																			new FieldData("type", "cheddar", false),
+																			new FieldData("price", "42", false)
+																		})};
 
+		sc.assertions = new VerifyFact[] {
+				new VerifyFact("c1", new VerifyField[] {
+						new VerifyField("type", "cheddar"),
+						new VerifyField("price", "42")
+				})
+		};
 
+		TypeResolver resolver = new ClassTypeResolver(new HashSet<Object>(), Thread.currentThread().getContextClassLoader());
+		resolver.addImport("org.drools.Cheese");
+
+		MockWorkingMemory wm = new MockWorkingMemory();
+		ScenarioRunner runner = new ScenarioRunner(sc, resolver, wm);
+		assertEquals(1, wm.facts.size());
+		assertEquals(runner.populatedData.get("c1"), wm.facts.get(0));
+
+		assertTrue(runner.populatedData.containsKey("c1"));
+		VerifyFact vf = (VerifyFact) sc.assertions[0];
+		for (int i = 0; i < vf.fieldValues.length; i++) {
+			assertTrue(vf.fieldValues[i].success);
+		}
+
+
+	}
+
+
+
 }




More information about the jboss-svn-commits mailing list