[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