[jboss-svn-commits] JBL Code SVN: r9448 - in labs/jbossrules/trunk/drools-testing/src/org/drools/testing/core: exception and 5 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Feb 12 07:03:17 EST 2007
Author: mshaw
Date: 2007-02-12 07:03:17 -0500 (Mon, 12 Feb 2007)
New Revision: 9448
Added:
labs/jbossrules/trunk/drools-testing/src/org/drools/testing/core/exception/CouldNotParseDrlException.java
labs/jbossrules/trunk/drools-testing/src/org/drools/testing/core/filters/
labs/jbossrules/trunk/drools-testing/src/org/drools/testing/core/filters/MultipleRuleAgendaFilter.java
labs/jbossrules/trunk/drools-testing/src/org/drools/testing/core/main/TestSuiteRunner.java
Modified:
labs/jbossrules/trunk/drools-testing/src/org/drools/testing/core/resources/castor/META-INF/test-lang.xsd
labs/jbossrules/trunk/drools-testing/src/org/drools/testing/core/resources/drl/test.drl
labs/jbossrules/trunk/drools-testing/src/org/drools/testing/core/test/TestingTest.java
Log:
Added: labs/jbossrules/trunk/drools-testing/src/org/drools/testing/core/exception/CouldNotParseDrlException.java
===================================================================
--- labs/jbossrules/trunk/drools-testing/src/org/drools/testing/core/exception/CouldNotParseDrlException.java (rev 0)
+++ labs/jbossrules/trunk/drools-testing/src/org/drools/testing/core/exception/CouldNotParseDrlException.java 2007-02-12 12:03:17 UTC (rev 9448)
@@ -0,0 +1,22 @@
+package org.drools.testing.core.exception;
+
+public class CouldNotParseDrlException extends RuleTestLanguageException {
+
+public CouldNotParseDrlException () {
+
+ super();
+
+ }
+
+ public CouldNotParseDrlException (String message) {
+
+ super(message);
+
+ }
+
+ public CouldNotParseDrlException (String message, Throwable cause) {
+
+ super(message,cause);
+
+ }
+}
Added: labs/jbossrules/trunk/drools-testing/src/org/drools/testing/core/filters/MultipleRuleAgendaFilter.java
===================================================================
--- labs/jbossrules/trunk/drools-testing/src/org/drools/testing/core/filters/MultipleRuleAgendaFilter.java (rev 0)
+++ labs/jbossrules/trunk/drools-testing/src/org/drools/testing/core/filters/MultipleRuleAgendaFilter.java 2007-02-12 12:03:17 UTC (rev 9448)
@@ -0,0 +1,37 @@
+/*
+ * Created on 16/09/2005
+ *
+ * TODO To change the template for this generated file go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+package org.drools.testing.core.filters;
+
+import java.util.Collection;
+
+import org.drools.spi.Activation;
+import org.drools.spi.AgendaFilter;
+
+/**
+ * @author mshaw
+ *
+ * TODO To change the template for this generated type comment go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+public class MultipleRuleAgendaFilter implements AgendaFilter {
+
+ private Collection rules;
+ private final boolean accept = false;
+
+ public MultipleRuleAgendaFilter (Collection rules) {
+ this.rules = rules;
+ }
+
+ public boolean accept(Activation activation) {
+
+ if (rules.contains(activation.getRule().getName()))
+ return true;
+ else
+ return false;
+ }
+
+}
Added: labs/jbossrules/trunk/drools-testing/src/org/drools/testing/core/main/TestSuiteRunner.java
===================================================================
--- labs/jbossrules/trunk/drools-testing/src/org/drools/testing/core/main/TestSuiteRunner.java (rev 0)
+++ labs/jbossrules/trunk/drools-testing/src/org/drools/testing/core/main/TestSuiteRunner.java 2007-02-12 12:03:17 UTC (rev 9448)
@@ -0,0 +1,88 @@
+package org.drools.testing.core.main;
+
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.drools.RuleBase;
+import org.drools.RuleBaseFactory;
+import org.drools.WorkingMemory;
+import org.drools.compiler.DrlParser;
+import org.drools.compiler.PackageBuilder;
+import org.drools.event.AfterActivationFiredEvent;
+import org.drools.event.DefaultAgendaEventListener;
+import org.drools.lang.descr.PackageDescr;
+import org.drools.testing.core.beans.Scenario;
+import org.drools.testing.core.exception.CouldNotParseDrlException;
+import org.drools.testing.core.exception.RuleTestLanguageException;
+import org.drools.testing.core.filters.MultipleRuleAgendaFilter;
+import org.drools.testing.core.rules.model.Account;
+import org.drools.testing.core.rules.model.Person;
+
+public class TestSuiteRunner {
+
+ private String file;
+ private RuleBase ruleBase;
+
+ public TestSuiteRunner (String file) throws RuleTestLanguageException {
+ this.file = file;
+ buildRuleBase();
+ }
+
+ /**
+ * Creates a new working memory from the rule base and fires
+ * the specified rules on the TestSuite Object
+ * @throws RuleTestLanguageException
+ */
+ public void runTests (Scenario scenario) throws RuleTestLanguageException {
+ WorkingMemory wm = ruleBase.newWorkingMemory();
+ Collection ruleNames = new ArrayList();
+ org.drools.testing.core.beans.Rule[] rules = scenario.getRule();
+ for (int i=0; i<rules.length; i++)
+ ruleNames.add(rules[i].getName());
+
+ wm.addEventListener( new DefaultAgendaEventListener() {
+ public void afterActivationFired(AfterActivationFiredEvent event) {
+ super.afterActivationFired( event );
+ System.out.println( event );
+ }
+
+ });
+
+ Account account = new Account();
+ account.setStatus("active");
+ account.setBalance(new Integer(0));
+ wm.assertObject(account);
+
+ Person person = new Person();
+ person.setAge(new Integer(25));
+ wm.assertObject(person);
+
+ wm.fireAllRules(new MultipleRuleAgendaFilter(ruleNames));
+ wm.dispose();
+ }
+
+ private void buildRuleBase () throws RuleTestLanguageException {
+
+ try {
+ // read in the source
+ Reader reader = new InputStreamReader( TestSuiteRunner.class.getResourceAsStream( file ) );
+ DrlParser parser = new DrlParser();
+ PackageDescr packageDescr = parser.parse( reader );
+
+
+ //pre build the package
+ PackageBuilder builder = new PackageBuilder();
+ builder.addPackage( packageDescr );
+ org.drools.rule.Package pkg = builder.getPackage();
+
+ //add the package to a rulebase
+ ruleBase = RuleBaseFactory.newRuleBase();
+ ruleBase.addPackage( pkg );
+ }catch (Exception e) {
+ throw new CouldNotParseDrlException("Could not parse drl file: "+file,e);
+ }
+ }
+
+}
Modified: labs/jbossrules/trunk/drools-testing/src/org/drools/testing/core/resources/castor/META-INF/test-lang.xsd
===================================================================
--- labs/jbossrules/trunk/drools-testing/src/org/drools/testing/core/resources/castor/META-INF/test-lang.xsd 2007-02-12 12:02:32 UTC (rev 9447)
+++ labs/jbossrules/trunk/drools-testing/src/org/drools/testing/core/resources/castor/META-INF/test-lang.xsd 2007-02-12 12:03:17 UTC (rev 9448)
@@ -16,7 +16,8 @@
<xs:element name="scenario" type="test:scenarioType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="name" use="required" type="xs:string"/>
- <xs:attribute name="description" type="xs:string"/>
+ <xs:attribute name="description" type="xs:string"/>
+ <xs:attribute name="fileName" use="required" type="xs:string"/>
</xs:complexType>
</xs:element>
Modified: labs/jbossrules/trunk/drools-testing/src/org/drools/testing/core/resources/drl/test.drl
===================================================================
--- labs/jbossrules/trunk/drools-testing/src/org/drools/testing/core/resources/drl/test.drl 2007-02-12 12:02:32 UTC (rev 9447)
+++ labs/jbossrules/trunk/drools-testing/src/org/drools/testing/core/resources/drl/test.drl 2007-02-12 12:03:17 UTC (rev 9448)
@@ -7,9 +7,8 @@
$acc : Account (status == "active", balance == 0)
$person : Person ( age < 60 )
then
- $acc.setBalance(new Integer(0));
+ $acc.setBalance(new Integer(10));
modify($acc);
- System.out.println("firing rule1");
end
rule rule2
@@ -18,7 +17,6 @@
then
$acc.setStatus("overdrawn");
modify($acc);
- System.out.println("Your account is overdrawn. Balance: "+$acc.getBalance());
end
rule rule3
Modified: labs/jbossrules/trunk/drools-testing/src/org/drools/testing/core/test/TestingTest.java
===================================================================
--- labs/jbossrules/trunk/drools-testing/src/org/drools/testing/core/test/TestingTest.java 2007-02-12 12:02:32 UTC (rev 9447)
+++ labs/jbossrules/trunk/drools-testing/src/org/drools/testing/core/test/TestingTest.java 2007-02-12 12:03:17 UTC (rev 9448)
@@ -7,6 +7,7 @@
import org.drools.lang.descr.PackageDescr;
import org.drools.testing.core.beans.Scenario;
import org.drools.testing.core.beans.TestSuite;
+import org.drools.testing.core.main.TestSuiteRunner;
import org.drools.testing.core.main.Testing;
import org.drools.testing.core.main.TransformerService;
@@ -29,4 +30,15 @@
FileWriter out = new FileWriter("rtl/test.rtl");
testSuite.marshal(out);
}
+
+ public void testRunScenario () throws Exception {
+ PackageDescr paDescr = TransformerService.parseDrl("/org/drools/testing/core/resources/drl/test.drl");
+ Testing testing = new Testing("The Test Test Suite", paDescr);
+ Scenario scenario = testing.generateScenario("Scenario One",paDescr.getRules());
+ testing.addScenarioToSuite(scenario);
+ TestSuite testSuite = testing.getTestSuite();
+
+ TestSuiteRunner testSuiteRunner = new TestSuiteRunner("/org/drools/testing/core/resources/drl/test.drl");
+ testSuiteRunner.runTests(scenario);
+ }
}
More information about the jboss-svn-commits
mailing list