[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