[jboss-svn-commits] JBL Code SVN: r15828 - in labs/jbossrules/trunk/drools-compiler/src: main/java/org/drools/brms/client/modeldriven/testing and 2 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Oct 15 02:04:01 EDT 2007


Author: michael.neale at jboss.com
Date: 2007-10-15 02:04:01 -0400 (Mon, 15 Oct 2007)
New Revision: 15828

Added:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/
   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/FieldData.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/testframework/ScenarioRunner.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/ScenarioRunnerTest.java
Removed:
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/TestScenarioCriteria.java
Modified:
   labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/testframework/TestingEventListener.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/FactPopulatorTest.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/TestingEventListenerTest.java
Log:
JBRULES-1271 Test populator.

Added: 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	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/FactData.java	2007-10-15 06:04:01 UTC (rev 15828)
@@ -0,0 +1,29 @@
+package org.drools.brms.client.modeldriven.testing;
+
+import java.io.Serializable;
+
+public class FactData implements Serializable {
+
+
+	public FactData() {}
+	public FactData(String type, String name, FieldData[] fieldData) {
+		this.type = type;
+		this.name = name;
+		this.fieldData = fieldData;
+	}
+
+	/**
+	 * The type (class)
+	 */
+	public String type;
+
+	/**
+	 * The name of the "variable"
+	 */
+	public String name;
+
+
+	public FieldData[] fieldData;
+
+
+}


Property changes on: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/FactData.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/FieldData.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/FieldData.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/FieldData.java	2007-10-15 06:04:01 UTC (rev 15828)
@@ -0,0 +1,22 @@
+package org.drools.brms.client.modeldriven.testing;
+
+import java.io.Serializable;
+
+public class FieldData implements Serializable {
+
+	public String name;
+	public String value;
+
+
+	public FieldData() {}
+	public FieldData(String name, String value, boolean isExpression) {
+		this.name = name;
+		this.value = value;
+		this.isExpression = isExpression;
+	}
+
+	/**
+	 * If it is an expression, the value itself will be evaled, and then used to set the field.
+	 */
+	public boolean isExpression = false;
+}


Property changes on: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/FieldData.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: 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	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/Scenario.java	2007-10-15 06:04:01 UTC (rev 15828)
@@ -0,0 +1,13 @@
+package org.drools.brms.client.modeldriven.testing;
+
+import java.io.Serializable;
+
+public class Scenario implements Serializable {
+
+	public FactData[] facts;
+
+
+
+}
+
+


Property changes on: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/brms/client/modeldriven/testing/Scenario.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: 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	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/testframework/ScenarioRunner.java	2007-10-15 06:04:01 UTC (rev 15828)
@@ -0,0 +1,68 @@
+package org.drools.testframework;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.drools.base.TypeResolver;
+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 static org.mvel.MVEL.*;
+
+/**
+ * This actually runs the test scenarios.
+ *
+ * @author Michael Neale
+ *
+ */
+public class ScenarioRunner {
+
+	final Scenario scenario;
+	final Map<String, Object> populatedData;
+
+
+	/**
+	 * @param scenario The scenario to run.
+	 * @param resolver A populated type resolved to be used to resolve the types in the scenario.
+	 */
+	public ScenarioRunner(Scenario scenario, TypeResolver resolver) throws ClassNotFoundException {
+		Map<String, Object> factData = new HashMap<String, Object>();
+		this.scenario = scenario;
+
+		//have to go and instansiate 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);
+		}
+
+		this.populatedData = factData;
+	}
+
+
+	private void populate(FactData fact, Map<String, Object> factData) {
+		for (int i = 0; i < fact.fieldData.length; i++) {
+			FieldData field = fact.fieldData[i];
+			Object val;
+			if (field.isExpression) {
+				//eval the val into existence
+				val = eval(field.value, factData);
+			} else {
+				val = field.value;
+			}
+			Map vars = new HashMap();
+			vars.putAll(factData);
+			vars.put("__val__", val);
+			eval(fact.name + "." + field.name + " = __val__", vars);
+		}
+	}
+
+
+
+
+
+}


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

Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/testframework/TestingEventListener.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/testframework/TestingEventListener.java	2007-10-15 05:24:50 UTC (rev 15827)
+++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/testframework/TestingEventListener.java	2007-10-15 06:04:01 UTC (rev 15828)
@@ -16,8 +16,6 @@
 import org.drools.event.BeforeActivationFiredEvent;
 import org.drools.rule.Package;
 import org.drools.rule.Rule;
-import org.drools.spi.Activation;
-import org.drools.spi.AgendaFilter;
 import org.drools.spi.Consequence;
 import org.drools.spi.KnowledgeHelper;
 
@@ -32,9 +30,9 @@
  */
 public class TestingEventListener implements AgendaEventListener {
 
-    final Map	firingCounts = new HashMap(100);
+    final Map<String, Integer>	firingCounts = new HashMap<String, Integer>(100);
 
-    HashSet	ruleNames = new HashSet();
+    HashSet<String>	ruleNames = new HashSet<String>();
 
 
     /**
@@ -43,7 +41,7 @@
      * Inclusive means only the rules on the given set are allowed to fire.
      * The other rules will have their activation counted but not be allowed to fire.
      */
-    public TestingEventListener(HashSet ruleNames, RuleBase ruleBase, boolean inclusive) {
+    public TestingEventListener(HashSet<String> ruleNames, RuleBase ruleBase, boolean inclusive) {
     	if (inclusive) {
     		Package[] pkgs = ruleBase.getPackages();
     		for (int i = 0; i < pkgs.length; i++) {
@@ -87,16 +85,10 @@
     	recordFiring(event.getActivation().getRule());
     }
 
-
-
-
-
 	private void recordFiring(Rule rule) {
 		record(rule, this.firingCounts);
 	}
 
-
-
 	public void agendaGroupPopped(AgendaGroupPoppedEvent event,
             WorkingMemory workingMemory) {
     }
@@ -106,20 +98,14 @@
     }
 
 	public void beforeActivationFired(BeforeActivationFiredEvent event, WorkingMemory workingMemory) {
-
 	}
 
-
-
-
-
-	private void record(Rule rule, Map counts) {
+	private void record(Rule rule, Map<String, Integer> counts) {
 		String name = rule.getName();
 		if (!counts.containsKey(name)) {
-			counts.put(name, new Integer(1));
+			counts.put(name, 1);
 		} else {
-			Integer count = (Integer) counts.get(name);
-			counts.put(name, new Integer(count.intValue() + 1));
+			counts.put(name, counts.get(name) + 1);
 		}
 	}
 

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/FactPopulatorTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/FactPopulatorTest.java	2007-10-15 05:24:50 UTC (rev 15827)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/FactPopulatorTest.java	2007-10-15 06:04:01 UTC (rev 15828)
@@ -44,7 +44,7 @@
 
 	}
 
-	public void testMVELFactChecked() throws Exception {
+	public void testMVELFactChecker() throws Exception {
 		//now we have a bean check it can be verified
 		final DumbFact d = new DumbFact();
 		d.setAge(42);

Added: 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	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/ScenarioRunnerTest.java	2007-10-15 06:04:01 UTC (rev 15828)
@@ -0,0 +1,47 @@
+package org.drools.testframework;
+
+import java.util.HashSet;
+
+import org.drools.Cheese;
+import org.drools.Person;
+import org.drools.base.ClassTypeResolver;
+import org.drools.base.TypeResolver;
+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 junit.framework.TestCase;
+
+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)
+									})};
+
+		TypeResolver resolver = new ClassTypeResolver(new HashSet(), Thread.currentThread().getContextClassLoader());
+		resolver.addImport("org.drools.Cheese");
+		resolver.addImport("org.drools.Person");
+		ScenarioRunner runner = new ScenarioRunner(sc, resolver);
+
+		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());
+
+		Person p = (Person) runner.populatedData.get("p1");
+		assertEquals("mic", p.getName());
+		assertEquals(33, p.getAge());
+
+
+	}
+
+}


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

Deleted: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/TestScenarioCriteria.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/TestScenarioCriteria.java	2007-10-15 05:24:50 UTC (rev 15827)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/TestScenarioCriteria.java	2007-10-15 06:04:01 UTC (rev 15828)
@@ -1,38 +0,0 @@
-package org.drools.testframework;
-
-
-public class TestScenarioCriteria {
-
-
-    /**
-     * This ensures that these rules are NOT fired - all other rules may be fired.
-     */
-    public String[] rulesToExclude;
-
-
-    /**
-     * The list of rules that may be fired (all other activations are ignored).
-     */
-    public String[] rulesToInclude;
-
-
-    /**
-     * No rules will fire.
-     */
-    public boolean preventAllFiring = false;
-
-
-
-    /**
-     * Activation counts. ?? do I need to count firing versus activations ??????
-     */
-
-
-
-    /**
-     * Collect and show statistics.
-     */
-    boolean collectStats = false;
-
-
-}

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-15 05:24:50 UTC (rev 15827)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/testframework/TestingEventListenerTest.java	2007-10-15 06:04:01 UTC (rev 15828)
@@ -3,26 +3,18 @@
 import java.io.InputStreamReader;
 import java.util.HashSet;
 
+import junit.framework.TestCase;
+
 import org.drools.Cheese;
 import org.drools.RuleBase;
 import org.drools.RuleBaseFactory;
 import org.drools.StatefulSession;
-import org.drools.WorkingMemory;
 import org.drools.compiler.PackageBuilder;
-import org.drools.event.ActivationCancelledEvent;
-import org.drools.event.ActivationCreatedEvent;
-import org.drools.event.AfterActivationFiredEvent;
-import org.drools.event.AgendaEventListener;
-import org.drools.event.AgendaGroupPoppedEvent;
-import org.drools.event.AgendaGroupPushedEvent;
-import org.drools.event.BeforeActivationFiredEvent;
 
-import junit.framework.TestCase;
-
 public class TestingEventListenerTest extends TestCase {
 
 	public void testInclusive() throws Exception {
-		HashSet set = new HashSet();
+		HashSet<String> set = new HashSet<String>();
 		set.add("rule1");
 		set.add("rule2");
 
@@ -59,7 +51,7 @@
 
 
 	public void testExclusive() throws Exception {
-		HashSet set = new HashSet();
+		HashSet<String> set = new HashSet<String>();
 		set.add("rule3");
 
 




More information about the jboss-svn-commits mailing list