[jboss-svn-commits] JBL Code SVN: r16002 - 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
Tue Oct 23 02:08:16 EDT 2007
Author: michael.neale at jboss.com
Date: 2007-10-23 02:08:16 -0400 (Tue, 23 Oct 2007)
New Revision: 16002
Added:
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/MockRuleBase.java
Modified:
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/FactData.java
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/MockWorkingMemory.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/ScenarioRunnerTest.java
Log:
JBRULES-1271 testing framework
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/FactData.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/FactData.java 2007-10-23 05:19:58 UTC (rev 16001)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/FactData.java 2007-10-23 06:08:16 UTC (rev 16002)
@@ -15,13 +15,19 @@
public String name;
+ /**
+ * If its a global, then we will punt it in as a global, not a fact.
+ */
+ public boolean isGlobal;
+
public FieldData[] fieldData;
public FactData() {}
- public FactData(String type, String name, FieldData[] fieldData) {
+ public FactData(String type, String name, FieldData[] fieldData, boolean global) {
this.type = type;
this.name = name;
this.fieldData = fieldData;
+ this.isGlobal = global;
}
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-23 05:19:58 UTC (rev 16001)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/VerifyFact.java 2007-10-23 06:08:16 UTC (rev 16002)
@@ -11,6 +11,7 @@
public String factName;
+
public VerifyFact() {}
public VerifyFact(String factName, VerifyField[] fieldValues) {
this.factName = factName;
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-23 05:19:58 UTC (rev 16001)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/testframework/ScenarioRunner.java 2007-10-23 06:08:16 UTC (rev 16002)
@@ -3,7 +3,6 @@
import static org.mvel.MVEL.eval;
import java.util.Arrays;
-import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
@@ -11,13 +10,14 @@
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;
import org.drools.brms.client.modeldriven.testing.Assertion;
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 org.drools.brms.client.modeldriven.testing.VerifyRuleFired;
+import org.drools.common.InternalWorkingMemory;
/**
* This actually runs the test scenarios.
@@ -28,76 +28,88 @@
public class ScenarioRunner {
final Scenario scenario;
- final Map<String, Object> populatedData;
+ final Map<String, Object> populatedData = new HashMap<String, Object>();
+ final Map<String, Object> globalData = new HashMap<String, Object>();
+ final InternalWorkingMemory workingMemory;
-
/**
- * @param scenario The scenario to run.
- * @param resolver A populated type resolved to be used to resolve the types in the scenario.
+ * @param scenario
+ * The scenario to run.
+ * @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 thread context be set appropriately. The PackageBuilder
- * can provide a suitable TypeResolver for a given package header, and the Package config can provide
- * a classloader.
+ * For info on how to invoke this, see
+ * ContentPackageAssemblerTest.testPackageWithRuleflow in drools-jbrms This
+ * requires that the classloader for the thread context be set
+ * appropriately. The PackageBuilder can provide a suitable TypeResolver for
+ * a given package header, and the Package config can provide a classloader.
*
*/
- public ScenarioRunner(Scenario scenario, TypeResolver resolver, WorkingMemory wm) throws ClassNotFoundException {
- Map<String, Object> factData = new HashMap<String, Object>();
+ public ScenarioRunner(Scenario scenario, TypeResolver resolver,
+ InternalWorkingMemory wm) throws ClassNotFoundException {
this.scenario = scenario;
+ this.workingMemory = wm;
- //have to go and create all the facts
+ // have to go and create all the facts
for (int i = 0; i < scenario.facts.length; i++) {
FactData fact = scenario.facts[i];
Object f = eval("new " + resolver.getFullTypeName(fact.type) + "()");
- factData.put(fact.name, f);
- populate(fact, factData);
+ if (fact.isGlobal) {
+ populateFields(fact, globalData, f);
+ globalData.put(fact.name, f);
+ } else {
+ populateFields(fact, populatedData, f);
+ populatedData.put(fact.name, f);
+ }
}
- this.populatedData = factData;
HashSet<String> ruleList = new HashSet<String>();
ruleList.addAll(Arrays.asList(scenario.ruleTrace.rules));
- TestingEventListener listener = new TestingEventListener(ruleList, wm.getRuleBase(), scenario.ruleTrace.inclusive);
+ TestingEventListener listener = new TestingEventListener(ruleList, wm
+ .getRuleBase(), scenario.ruleTrace.inclusive);
wm.addEventListener(listener);
- //now run the rules...
- insertData(wm, this.populatedData);
+ // now run the rules...
+ applyData(wm, this.populatedData, this.globalData);
wm.fireAllRules(scenario.maxRuleFirings);
scenario.ruleTrace.firingCounts = listener.firingCounts;
- //now check the results...
+ // now check the results...
for (int i = 0; i < scenario.assertions.length; i++) {
Assertion assertion = scenario.assertions[i];
if (assertion instanceof VerifyFact) {
- verify((VerifyFact)assertion);
+ verify((VerifyFact) assertion);
} else if (assertion instanceof VerifyRuleFired) {
verify((VerifyRuleFired) assertion, listener.firingCounts);
}
- }
+ }
}
-
-
void verify(VerifyRuleFired assertion, Map<String, Integer> firingCounts) {
- assertion.actual = firingCounts.containsKey(assertion.ruleName) ? firingCounts.get(assertion.ruleName) : 0;
+ assertion.actual = firingCounts.containsKey(assertion.ruleName) ? firingCounts
+ .get(assertion.ruleName)
+ : 0;
if (assertion.expectedFire != null) {
- assertion.success = assertion.expectedFire ? assertion.actual > 0 : assertion.actual == 0;
+ assertion.success = assertion.expectedFire ? assertion.actual > 0
+ : assertion.actual == 0;
}
if (assertion.expectedCount != null) {
- assertion.success = assertion.actual.equals(assertion.expectedCount);
+ assertion.success = assertion.actual
+ .equals(assertion.expectedCount);
}
}
-
-
- private void insertData(WorkingMemory wm, Map<String, Object> data) {
- for (Iterator<Object> iterator = data.values().iterator(); iterator.hasNext();) {
- wm.insert(iterator.next());
+ private void applyData(WorkingMemory wm, Map<String, Object> facts, Map<String, Object> globals) {
+ for (Map.Entry<String, Object> e : globals.entrySet()) {
+ wm.setGlobal(e.getKey(), e.getValue());
}
+ for (Object f : facts.values()) {
+ wm.insert(f);
+ }
}
-
-
void verify(VerifyFact value) {
Object fact = this.populatedData.get(value.factName);
for (int i = 0; i < value.fieldValues.length; i++) {
@@ -105,21 +117,20 @@
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();
- }
+ fld.success = (Boolean) eval("__fact__." + fld.fieldName
+ + " == __expected__", st);
+ if (!fld.success) {
+ fld.actual = eval("__fact__." + fld.fieldName, st).toString();
+ }
}
}
-
-
- private void populate(FactData fact, Map<String, Object> factData) {
+ private Object populateFields(FactData fact, Map<String, Object> factData, Object factObject) {
for (int i = 0; i < fact.fieldData.length; i++) {
FieldData field = fact.fieldData[i];
Object val;
if (field.isExpression) {
- //eval the val into existence
+ // eval the val into existence
val = eval(field.value, factData);
} else {
val = field.value;
@@ -127,13 +138,10 @@
Map<String, Object> vars = new HashMap<String, Object>();
vars.putAll(factData);
vars.put("__val__", val);
- eval(fact.name + "." + field.name + " = __val__", vars);
+ vars.put("__fact__", factObject);
+ eval("__fact__." + field.name + " = __val__", vars);
}
+ return factObject;
}
-
-
-
-
-
}
Added: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/MockRuleBase.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/MockRuleBase.java (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/MockRuleBase.java 2007-10-23 06:08:16 UTC (rev 16002)
@@ -0,0 +1,117 @@
+package org.drools.testframework;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.List;
+
+import org.drools.RuleBase;
+import org.drools.StatefulSession;
+import org.drools.StatelessSession;
+import org.drools.event.RuleBaseEventListener;
+import org.drools.rule.Package;
+
+public class MockRuleBase implements RuleBase {
+
+ public void addPackage(Package pkg) throws Exception {
+ // TODO Auto-generated method stub
+
+ }
+
+ public int getAdditionsSinceLock() {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ public Package getPackage(String name) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public Package[] getPackages() {
+
+ return new Package[0];
+ }
+
+ public int getRemovalsSinceLock() {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ public StatefulSession[] getStatefulSessions() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public void lock() {
+ // TODO Auto-generated method stub
+
+ }
+
+ public StatefulSession newStatefulSession() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public StatefulSession newStatefulSession(boolean keepReference) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public StatefulSession newStatefulSession(InputStream stream)
+ throws IOException, ClassNotFoundException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public StatefulSession newStatefulSession(InputStream stream,
+ boolean keepReference) throws IOException, ClassNotFoundException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public StatelessSession newStatelessSession() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public void removeFunction(String packageName, String functionName) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void removePackage(String packageName) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void removeProcess(String id) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void removeRule(String packageName, String ruleName) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void unlock() {
+ // 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/MockRuleBase.java
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: 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 2007-10-23 05:19:58 UTC (rev 16001)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/MockWorkingMemory.java 2007-10-23 06:08:16 UTC (rev 16002)
@@ -1,8 +1,10 @@
package org.drools.testframework;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
+import java.util.Map;
import org.drools.Agenda;
import org.drools.FactException;
@@ -38,6 +40,9 @@
public class MockWorkingMemory implements InternalWorkingMemory {
List<Object> facts = new ArrayList<Object>();
+ AgendaEventListener agendaEventListener;
+ TimeMachine timeMachine;
+ Map<String, Object> globals = new HashMap<String, Object>();
public void addLIANodePropagation(LIANodePropagation liaNodePropagation) {
// TODO Auto-generated method stub
@@ -49,6 +54,8 @@
}
+
+
public void executeQueuedActions() {
// TODO Auto-generated method stub
@@ -221,8 +228,7 @@
}
public RuleBase getRuleBase() {
- // TODO Auto-generated method stub
- return null;
+ return new MockRuleBase();
}
public void halt() {
@@ -292,7 +298,7 @@
}
public void setGlobal(String identifier, Object value) {
- // TODO Auto-generated method stub
+ this.globals.put(identifier, value);
}
@@ -317,8 +323,7 @@
}
public void addEventListener(AgendaEventListener listener) {
- // TODO Auto-generated method stub
-
+ this.agendaEventListener = listener;
}
public void addEventListener(RuleFlowEventListener listener) {
@@ -371,4 +376,9 @@
}
+ public void setTimeMachine(TimeMachine tm) {
+ this.timeMachine = tm;
+
+ }
+
}
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-23 05:19:58 UTC (rev 16001)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/ScenarioRunnerTest.java 2007-10-23 06:08:16 UTC (rev 16002)
@@ -19,158 +19,200 @@
public class ScenarioRunnerTest extends TestCase {
- public void testPopulateFacts() 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)
- }),
- new FactData("Person", "p1", new FieldData[] {
- new FieldData("name", "mic", false),
- new FieldData("age", "30 + 3", true)
- })};
+ public void testPopulateFacts() 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)
+ }, false),
+ new FactData("Person", "p1", new FieldData[] {
+ new FieldData("name", "mic", false),
+ new FieldData("age", "30 + 3", true)
+ }, false)};
- 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, new MockWorkingMemory());
+ 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, new MockWorkingMemory());
- assertTrue(runner.populatedData.containsKey("c1"));
- assertTrue(runner.populatedData.containsKey("p1"));
+ assertTrue(runner.populatedData.containsKey("c1"));
+ assertTrue(runner.populatedData.containsKey("p1"));
- Cheese c = (Cheese) runner.populatedData.get("c1");
- assertEquals("cheddar", c.getType());
- assertEquals(42, c.getPrice());
+ Cheese c = (Cheese) runner.populatedData.get("c1");
+ assertEquals("cheddar", c.getType());
+ assertEquals(42, c.getPrice());
- Person p = (Person) runner.populatedData.get("p1");
- assertEquals("mic", p.getName());
- assertEquals(33, p.getAge());
+ Person p = (Person) runner.populatedData.get("p1");
+ assertEquals("mic", p.getName());
+ assertEquals(33, p.getAge());
- }
+ }
- public void testVerifyFacts() throws Exception {
+ public void testVerifyFacts() throws Exception {
- ScenarioRunner runner = new ScenarioRunner(new Scenario(), null, new MockWorkingMemory());
- Cheese f1 = new Cheese("cheddar", 42);
- runner.populatedData.put("f1", f1);
+ ScenarioRunner runner = new ScenarioRunner(new Scenario(), null, new MockWorkingMemory());
+ Cheese f1 = new Cheese("cheddar", 42);
+ runner.populatedData.put("f1", f1);
- Person f2 = new Person("michael", 33);
- runner.populatedData.put("f2", f2);
+ 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") } ;
+ //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);
- }
+ 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") } ;
+ 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);
- }
+ 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") } ;
+ //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);
+ 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);
+ 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") } ;
+ //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);
+ 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("michael", vf.fieldValues[0].actual);
+ assertEquals("mark", vf.fieldValues[0].expected);
- assertEquals("33", vf.fieldValues[1].actual);
- assertEquals("32", vf.fieldValues[1].expected);
+ assertEquals("33", vf.fieldValues[1].actual);
+ assertEquals("32", vf.fieldValues[1].expected);
- }
+ }
- 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)
- })};
+ 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)
+ }, false)};
- sc.assertions = new VerifyFact[] {
- new VerifyFact("c1", new VerifyField[] {
- new VerifyField("type", "cheddar"),
- new VerifyField("price", "42")
- })
- };
+ 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");
+ 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));
+ 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);
- }
+ 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);
+ }
- }
+ }
- public void testCountVerification() throws Exception {
+ public void testCountVerification() throws Exception {
- Map<String, Integer> firingCounts = new HashMap<String, Integer>();
- firingCounts.put("foo", 2);
- firingCounts.put("bar", 1);
- //and baz, we leave out
+ Map<String, Integer> firingCounts = new HashMap<String, Integer>();
+ firingCounts.put("foo", 2);
+ firingCounts.put("bar", 1);
+ //and baz, we leave out
- ScenarioRunner runner = new ScenarioRunner(new Scenario(), null, new MockWorkingMemory());
- VerifyRuleFired v = new VerifyRuleFired();
- v.ruleName = "foo";
- v.expectedFire = true;
- runner.verify(v, firingCounts);
- assertTrue(v.success);
- assertEquals(2, v.actual.intValue());
+ ScenarioRunner runner = new ScenarioRunner(new Scenario(), null, new MockWorkingMemory());
+ VerifyRuleFired v = new VerifyRuleFired();
+ v.ruleName = "foo";
+ v.expectedFire = true;
+ runner.verify(v, firingCounts);
+ assertTrue(v.success);
+ assertEquals(2, v.actual.intValue());
- v = new VerifyRuleFired();
- v.ruleName = "foo";
- v.expectedFire = false;
- runner.verify(v, firingCounts);
- assertFalse(v.success);
- assertEquals(2, v.actual.intValue());
+ v = new VerifyRuleFired();
+ v.ruleName = "foo";
+ v.expectedFire = false;
+ runner.verify(v, firingCounts);
+ assertFalse(v.success);
+ assertEquals(2, v.actual.intValue());
- v = new VerifyRuleFired();
- v.ruleName = "foo";
- v.expectedCount = 2;
+ v = new VerifyRuleFired();
+ v.ruleName = "foo";
+ v.expectedCount = 2;
- runner.verify(v, firingCounts);
- assertTrue(v.success);
- assertEquals(2, v.actual.intValue());
+ runner.verify(v, firingCounts);
+ assertTrue(v.success);
+ assertEquals(2, v.actual.intValue());
- }
+ }
+ public void testTestingEventListener() throws Exception {
+ Scenario sc = new Scenario();
+ sc.ruleTrace.rules = new String[] {"foo", "bar"};
+ MockWorkingMemory wm = new MockWorkingMemory();
+ ScenarioRunner run = new ScenarioRunner(sc, null, wm);
+ assertEquals(wm, run.workingMemory);
+ assertNotNull(wm.agendaEventListener);
+ assertTrue(wm.agendaEventListener instanceof TestingEventListener);
+ TestingEventListener lnr = (TestingEventListener) wm.agendaEventListener;
+ assertEquals(2, lnr.ruleNames.size());
+ assertTrue(lnr.ruleNames.contains("foo"));
+ assertTrue(lnr.ruleNames.contains("bar"));
+ }
+ public void testWithGlobals() throws Exception {
+ Scenario sc = new Scenario();
+ sc.facts = new FactData[] {
+ new FactData("Cheese", "c", new FieldData[] {
+ new FieldData("type", "cheddar", false)
+ }, true),
+ new FactData("Cheese", "c2", new FieldData[] {
+ new FieldData("type", "stilton", false)
+ }, false)
+ };
+ TypeResolver resolver = new ClassTypeResolver(new HashSet<Object>(), Thread.currentThread().getContextClassLoader());
+ resolver.addImport("org.drools.Cheese");
+ MockWorkingMemory wm = new MockWorkingMemory();
+ ScenarioRunner run = new ScenarioRunner(sc, resolver, wm);
+ assertEquals(1, wm.globals.size());
+ assertEquals(1, run.globalData.size());
+ assertEquals(1, run.populatedData.size());
+ assertEquals(1, wm.facts.size());
+ Cheese c = (Cheese) wm.globals.get("c");
+ assertEquals("cheddar", c.getType());
+ Cheese c2 = (Cheese) wm.facts.get(0);
+ assertEquals("stilton", c2.getType());
+
+ }
+
+
+
+
+
}
More information about the jboss-svn-commits
mailing list