[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