[jboss-svn-commits] JBL Code SVN: r16033 - in labs/jbossrules/trunk/drools-compiler/src: main/java/org/drools/testframework and 2 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Oct 23 22:27:22 EDT 2007
Author: michael.neale at jboss.com
Date: 2007-10-23 22:27:21 -0400 (Tue, 23 Oct 2007)
New Revision: 16033
Added:
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/RuleUnit.java
labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/testframework/test_rules2.drl
Modified:
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/Assertion.java
labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/Scenario.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/brms/client/modeldriven/testing/VerifyRuleFired.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
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/TestingEventListenerTest.java
Log:
JBRULES-1271 testing framework
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/Assertion.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/Assertion.java 2007-10-23 21:35:02 UTC (rev 16032)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/Assertion.java 2007-10-24 02:27:21 UTC (rev 16033)
@@ -16,6 +16,12 @@
*/
public interface Assertion extends Serializable {
+ /**
+ * Return false if the assertion
+ * @return
+ */
+ boolean wasSuccessful();
+
}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/Scenario.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/Scenario.java 2007-10-23 21:35:02 UTC (rev 16032)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/Scenario.java 2007-10-24 02:27:21 UTC (rev 16033)
@@ -37,7 +37,20 @@
*/
public ScenarioRules ruleTrace = new ScenarioRules();
+ /**
+ * Returns true if this was a totally successful scenario, based on the results contained.
+ */
+ public boolean wasSuccessful() {
+ for (int i = 0; i < this.assertions.length; i++) {
+ Assertion as = this.assertions[i];
+ if (!as.wasSuccessful()) {
+ return false;
+ }
+ }
+ return true;
+ }
+
}
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 21:35:02 UTC (rev 16032)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/VerifyFact.java 2007-10-24 02:27:21 UTC (rev 16033)
@@ -18,4 +18,15 @@
this.fieldValues = fieldValues;
}
+
+ public boolean wasSuccessful() {
+ for (int i = 0; i < fieldValues.length; i++) {
+ VerifyField vf = fieldValues[i];
+ if (!vf.success) {
+ return false;
+ }
+ }
+ return true;
+ }
+
}
Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/VerifyRuleFired.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/VerifyRuleFired.java 2007-10-23 21:35:02 UTC (rev 16032)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/VerifyRuleFired.java 2007-10-24 02:27:21 UTC (rev 16033)
@@ -12,7 +12,20 @@
*/
public Boolean expectedFire;
+
+ public VerifyRuleFired() {}
+ public VerifyRuleFired(String ruleName, Integer expectedCount, Boolean expectedFire) {
+ this.ruleName = ruleName;
+ this.expectedCount = expectedCount;
+ this.expectedFire = expectedFire;
+ }
+
public Boolean success;
public Integer actual;
+
+ public boolean wasSuccessful() {
+ return success;
+ }
+
}
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 21:35:02 UTC (rev 16032)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/testframework/ScenarioRunner.java 2007-10-24 02:27:21 UTC (rev 16033)
@@ -127,6 +127,7 @@
void verify(VerifyFact value) {
Object fact = this.populatedData.get(value.factName);
+ if (fact == null) fact = this.globalData.get(value.factName);
for (int i = 0; i < value.fieldValues.length; i++) {
VerifyField fld = value.fieldValues[i];
Map<String, Object> st = new HashMap<String, Object>();
Added: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/RuleUnit.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/RuleUnit.java (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/RuleUnit.java 2007-10-24 02:27:21 UTC (rev 16033)
@@ -0,0 +1,35 @@
+package org.drools.testframework;
+
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+import org.drools.RuleBase;
+import org.drools.RuleBaseFactory;
+import org.drools.StatefulSession;
+import org.drools.compiler.DroolsParserException;
+import org.drools.compiler.PackageBuilder;
+
+import junit.framework.TestCase;
+
+/**
+ * A class with some utilities for testing rules.
+ * @author Michael Neale
+ *
+ */
+public abstract class RuleUnit extends TestCase {
+
+ /**
+ * Return a wm ready to go based on the rules in a drl at the specified uri (in the classpath).
+ */
+ public StatefulSession getWorkingMemory(String uri)
+ throws DroolsParserException, IOException, Exception {
+ PackageBuilder builder = new PackageBuilder();
+ builder.addPackageFromDrl(new InputStreamReader(this.getClass()
+ .getResourceAsStream(uri)));
+ assertFalse(builder.getErrors().toString(), builder.hasErrors());
+ RuleBase rb = RuleBaseFactory.newRuleBase();
+ rb.addPackage(builder.getPackage());
+
+ return rb.newStatefulSession();
+ }
+}
Property changes on: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/RuleUnit.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-23 21:35:02 UTC (rev 16032)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/ScenarioRunnerTest.java 2007-10-24 02:27:21 UTC (rev 16033)
@@ -1,5 +1,7 @@
package org.drools.testframework;
+import java.io.IOException;
+import java.io.InputStreamReader;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
@@ -7,237 +9,302 @@
import org.drools.Cheese;
import org.drools.Person;
+import org.drools.RuleBase;
+import org.drools.RuleBaseFactory;
+import org.drools.StatefulSession;
+import org.drools.WorkingMemory;
import org.drools.base.ClassTypeResolver;
import org.drools.base.TypeResolver;
+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;
+import org.drools.compiler.DroolsParserException;
+import org.drools.compiler.PackageBuilder;
import org.drools.rule.TimeMachine;
import junit.framework.TestCase;
-public class ScenarioRunnerTest extends TestCase {
+public class ScenarioRunnerTest extends RuleUnit {
- 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)};
+ 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) }, 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 {
- }
+ Map<String, Integer> firingCounts = new HashMap<String, Integer>();
+ firingCounts.put("foo", 2);
+ firingCounts.put("bar", 1);
+ // and baz, we leave out
- public void testCountVerification() throws Exception {
+ 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());
- Map<String, Integer> firingCounts = new HashMap<String, Integer>();
- firingCounts.put("foo", 2);
- firingCounts.put("bar", 1);
- //and baz, we leave out
+ v = new VerifyRuleFired();
+ v.ruleName = "foo";
+ v.expectedFire = false;
+ runner.verify(v, firingCounts);
+ assertFalse(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.expectedCount = 2;
- v = new VerifyRuleFired();
- v.ruleName = "foo";
- v.expectedFire = false;
- runner.verify(v, firingCounts);
- assertFalse(v.success);
- assertEquals(2, v.actual.intValue());
+ runner.verify(v, firingCounts);
+ assertTrue(v.success);
+ assertEquals(2, v.actual.intValue());
- v = new VerifyRuleFired();
- v.ruleName = "foo";
- v.expectedCount = 2;
+ }
- 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");
- 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"));
- }
+ 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());
- 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");
+ Cheese c = (Cheese) wm.globals.get("c");
+ assertEquals("cheddar", c.getType());
+ Cheese c2 = (Cheese) wm.facts.get(0);
+ assertEquals("stilton", c2.getType());
- 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());
+ @SuppressWarnings("deprecation")
+ // F**** dates in java. What a mess. Someone should die.
+ public void testSimulatedDate() throws Exception {
+ Scenario sc = new Scenario();
+ MockWorkingMemory wm = new MockWorkingMemory();
+ ScenarioRunner run = new ScenarioRunner(sc, null, wm);
+ TimeMachine tm = run.workingMemory.getTimeMachine();
+ // love you
+ long time = tm.getNow().getTimeInMillis();
- }
+ Thread.sleep(100);
+ long future = tm.getNow().getTimeInMillis();
+ assertTrue(future > time);
- public void testSimulatedDate() throws Exception {
- Scenario sc = new Scenario();
- MockWorkingMemory wm = new MockWorkingMemory();
- ScenarioRunner run = new ScenarioRunner(sc, null, wm);
- TimeMachine tm = run.workingMemory.getTimeMachine();
+ sc.scenarioSimulatedDate = new Date("10-Jul-1974");
+ run = new ScenarioRunner(sc, null, wm);
+ tm = run.workingMemory.getTimeMachine();
- //love you
- long time = tm.getNow().getTimeInMillis();
+ long expected = sc.scenarioSimulatedDate.getTime();
+ assertEquals(expected, tm.getNow().getTimeInMillis());
+ Thread.sleep(50);
+ assertEquals(expected, tm.getNow().getTimeInMillis());
- Thread.sleep(100);
- long future = tm.getNow().getTimeInMillis();
- assertTrue(future > time);
+ }
- sc.scenarioSimulatedDate = new Date("10-Jul-1974");
- run = new ScenarioRunner(sc, null, wm);
- tm = run.workingMemory.getTimeMachine();
+ /**
+ * Do a kind of end to end test with some real rules.
+ */
+ public void testIntegration() 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", "p", new FieldData[0] , true)
+ };
- long expected = sc.scenarioSimulatedDate.getTime();
- assertEquals(expected, tm.getNow().getTimeInMillis());
- Thread.sleep(50);
- assertEquals(expected, tm.getNow().getTimeInMillis());
- }
+ sc.ruleTrace.rules = new String[] {"rule1", "rule2" };
+ sc.ruleTrace.inclusive = true;
+ sc.assertions = new Assertion[5];
+ sc.assertions[0] = new VerifyFact("c1", new VerifyField[] {
+ new VerifyField("type", "cheddar")
+ });
+ sc.assertions[1] = new VerifyFact("p", new VerifyField[] {
+ new VerifyField("name", "rule1"),
+ new VerifyField("status", "rule2")
+
+ });
+
+ sc.assertions[2] = new VerifyRuleFired("rule1", 1, null);
+ sc.assertions[3] = new VerifyRuleFired("rule2", 1, null);
+ sc.assertions[4] = new VerifyRuleFired("rule3", 1, null);
+
+ TypeResolver resolver = new ClassTypeResolver(new HashSet<Object>(),
+ Thread.currentThread().getContextClassLoader());
+ resolver.addImport("org.drools.Cheese");
+ resolver.addImport("org.drools.Person");
+
+ WorkingMemory wm = getWorkingMemory("test_rules2.drl");
+
+ ScenarioRunner run = new ScenarioRunner(sc, resolver, (InternalWorkingMemory) wm);
+
+ assertSame(run.scenario, sc);
+
+ assertTrue(sc.wasSuccessful());
+
+ Person p = (Person) run.globalData.get("p");
+ assertEquals("rule1", p.getName());
+ assertEquals("rule2", p.getStatus());
+ assertEquals(0, p.getAge());
+
+
+ }
+
+
+
+
}
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/TestingEventListenerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/TestingEventListenerTest.java 2007-10-23 21:35:02 UTC (rev 16032)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/TestingEventListenerTest.java 2007-10-24 02:27:21 UTC (rev 16033)
@@ -5,32 +5,22 @@
import java.util.HashSet;
import java.util.List;
-import junit.framework.TestCase;
-
import org.drools.Cheese;
import org.drools.RuleBase;
import org.drools.RuleBaseFactory;
import org.drools.StatefulSession;
import org.drools.compiler.PackageBuilder;
-public class TestingEventListenerTest extends TestCase {
+public class TestingEventListenerTest extends RuleUnit {
public void testInclusive() throws Exception {
HashSet<String> set = new HashSet<String>();
set.add("rule1");
set.add("rule2");
- PackageBuilder builder = new PackageBuilder();
- builder.addPackageFromDrl( new InputStreamReader(this.getClass().getResourceAsStream( "test_rules.drl" )) );
+ StatefulSession session = getWorkingMemory("test_rules.drl");
+ TestingEventListener ls = new TestingEventListener(set, session.getRuleBase(), true);
- assertFalse(builder.getErrors().toString(), builder.hasErrors());
-
- RuleBase rb = RuleBaseFactory.newRuleBase();
- rb.addPackage(builder.getPackage());
-
- TestingEventListener ls = new TestingEventListener(set, rb, true);
-
- StatefulSession session = rb.newStatefulSession();
session.addEventListener(ls);
session.insert(new Cheese());
@@ -57,17 +47,11 @@
set.add("rule3");
- PackageBuilder builder = new PackageBuilder();
- builder.addPackageFromDrl( new InputStreamReader(this.getClass().getResourceAsStream( "test_rules.drl" )) );
+ StatefulSession session = getWorkingMemory("test_rules.drl");
- assertFalse(builder.getErrors().toString(), builder.hasErrors());
+ TestingEventListener ls = new TestingEventListener(set, session.getRuleBase(), false);
- RuleBase rb = RuleBaseFactory.newRuleBase();
- rb.addPackage(builder.getPackage());
- TestingEventListener ls = new TestingEventListener(set, rb, false);
-
- StatefulSession session = rb.newStatefulSession();
session.addEventListener(ls);
session.insert(new Cheese());
@@ -87,17 +71,10 @@
HashSet<String> set = new HashSet<String>();
- PackageBuilder builder = new PackageBuilder();
- builder.addPackageFromDrl( new InputStreamReader(this.getClass().getResourceAsStream( "test_rules.drl" )) );
+ StatefulSession session = getWorkingMemory("test_rules.drl");
- assertFalse(builder.getErrors().toString(), builder.hasErrors());
+ TestingEventListener ls = new TestingEventListener(set, session.getRuleBase(), false);
- RuleBase rb = RuleBaseFactory.newRuleBase();
- rb.addPackage(builder.getPackage());
-
- TestingEventListener ls = new TestingEventListener(set, rb, false);
-
- StatefulSession session = rb.newStatefulSession();
session.addEventListener(ls);
session.insert(new Cheese());
Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/testframework/test_rules2.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/testframework/test_rules2.drl (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/testframework/test_rules2.drl 2007-10-24 02:27:21 UTC (rev 16033)
@@ -0,0 +1,30 @@
+package foo.bar
+
+import org.drools.Cheese
+import org.drools.Person
+
+global Person p
+
+rule "rule1"
+ when
+ c: Cheese()
+ then
+ p.setName("rule1");
+end
+
+rule "rule2"
+ when
+ c: Cheese()
+ then
+ p.setStatus("rule2");
+end
+
+rule "rule3"
+ when
+ c: Cheese()
+ then
+ p.setAge(42);
+
+end
+
+
Property changes on: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/testframework/test_rules2.drl
___________________________________________________________________
Name: svn:eol-style
+ native
More information about the jboss-svn-commits
mailing list