[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