[jboss-svn-commits] JBL Code SVN: r18301 - in labs/jbossrules/branches/4.0.x/drools-compiler/src/test: resources/org/drools/integrationtests and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Feb 4 09:18:40 EST 2008
Author: tirelli
Date: 2008-02-04 09:18:40 -0500 (Mon, 04 Feb 2008)
New Revision: 18301
Added:
labs/jbossrules/branches/4.0.x/drools-compiler/src/test/resources/org/drools/integrationtests/test_DynamicRulesEd.drl
labs/jbossrules/branches/4.0.x/drools-compiler/src/test/resources/org/drools/integrationtests/test_DynamicRulesFred.drl
labs/jbossrules/branches/4.0.x/drools-compiler/src/test/resources/org/drools/integrationtests/test_DynamicRulesTom.drl
Modified:
labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/integrationtests/DynamicRulesTest.java
Log:
JBRULES-1329: adding test case
Modified: labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/integrationtests/DynamicRulesTest.java
===================================================================
--- labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/integrationtests/DynamicRulesTest.java 2008-02-04 14:18:10 UTC (rev 18300)
+++ labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/integrationtests/DynamicRulesTest.java 2008-02-04 14:18:40 UTC (rev 18301)
@@ -28,6 +28,7 @@
import org.drools.RuleBaseFactory;
import org.drools.StatefulSession;
import org.drools.WorkingMemory;
+import org.drools.common.InternalFactHandle;
import org.drools.compiler.PackageBuilder;
import org.drools.compiler.PackageBuilderConfiguration;
import org.drools.rule.Package;
@@ -529,6 +530,69 @@
}
+ public void testDynamicRulesAddRemove() {
+ try {
+ RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+
+ PackageBuilder tomBuilder = new PackageBuilder();
+ tomBuilder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_DynamicRulesTom.drl" ) ) );
+ ruleBase.addPackage( tomBuilder.getPackage() );
+
+ StatefulSession session = ruleBase.newStatefulSession();
+ List results = new ArrayList();
+ session.setGlobal( "results", results );
+
+ InternalFactHandle h1 = (InternalFactHandle) session.insert( new Person( "tom", 1 ) );
+ InternalFactHandle h2 = (InternalFactHandle) session.insert( new Person( "fred", 2 ) );
+ InternalFactHandle h3 = (InternalFactHandle) session.insert( new Person( "harry", 3 ) );
+ InternalFactHandle h4 = (InternalFactHandle) session.insert( new Person( "fred", 4 ) );
+ InternalFactHandle h5 = (InternalFactHandle) session.insert( new Person( "ed", 5 ) );
+ InternalFactHandle h6 = (InternalFactHandle) session.insert( new Person( "tom", 6 ) );
+ InternalFactHandle h7 = (InternalFactHandle) session.insert( new Person( "sreeni", 7 ) );
+ InternalFactHandle h8 = (InternalFactHandle) session.insert( new Person( "jill", 8 ) );
+ InternalFactHandle h9 = (InternalFactHandle) session.insert( new Person( "ed", 9 ) );
+ InternalFactHandle h10 = (InternalFactHandle) session.insert( new Person( "tom", 10 ) );
+
+ session.fireAllRules();
+
+ assertEquals( 3, results.size() );
+ assertTrue( results.contains( h1.getObject() ) );
+ assertTrue( results.contains( h6.getObject() ) );
+ assertTrue( results.contains( h10.getObject() ) );
+ results.clear();
+
+ PackageBuilder fredBuilder = new PackageBuilder();
+ fredBuilder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_DynamicRulesFred.drl" ) ) );
+ ruleBase.addPackage( fredBuilder.getPackage() );
+
+ assertEquals( 2, results.size() );
+ assertTrue( results.contains( h2.getObject() ) );
+ assertTrue( results.contains( h4.getObject() ) );
+ results.clear();
+
+ ruleBase.removePackage( "tom" );
+
+ PackageBuilder edBuilder = new PackageBuilder();
+ edBuilder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_DynamicRulesEd.drl" ) ) );
+ ruleBase.addPackage( edBuilder.getPackage() );
+
+ assertEquals( 2, results.size() );
+ assertTrue( results.contains( h5.getObject() ) );
+ assertTrue( results.contains( h9.getObject() ) );
+ results.clear();
+
+ ((Person) h3.getObject()).setName( "ed" );
+ session.update( h3, h3.getObject() );
+ session.fireAllRules();
+
+ assertEquals( 1, results.size() );
+ assertTrue( results.contains( h3.getObject() ) );
+ } catch( Exception e ) {
+ e.printStackTrace();
+ fail( "Should not raise any exception: "+e.getMessage() );
+ }
+ }
+
public class SubvertedClassLoader extends URLClassLoader {
private static final long serialVersionUID = 400L;
Added: labs/jbossrules/branches/4.0.x/drools-compiler/src/test/resources/org/drools/integrationtests/test_DynamicRulesEd.drl
===================================================================
--- labs/jbossrules/branches/4.0.x/drools-compiler/src/test/resources/org/drools/integrationtests/test_DynamicRulesEd.drl (rev 0)
+++ labs/jbossrules/branches/4.0.x/drools-compiler/src/test/resources/org/drools/integrationtests/test_DynamicRulesEd.drl 2008-02-04 14:18:40 UTC (rev 18301)
@@ -0,0 +1,12 @@
+package ed;
+
+import org.drools.Person;
+
+global java.util.List results;
+
+rule "Find ed"
+when
+ $p : Person( name == "ed" )
+then
+ results.add( $p );
+end
Added: labs/jbossrules/branches/4.0.x/drools-compiler/src/test/resources/org/drools/integrationtests/test_DynamicRulesFred.drl
===================================================================
--- labs/jbossrules/branches/4.0.x/drools-compiler/src/test/resources/org/drools/integrationtests/test_DynamicRulesFred.drl (rev 0)
+++ labs/jbossrules/branches/4.0.x/drools-compiler/src/test/resources/org/drools/integrationtests/test_DynamicRulesFred.drl 2008-02-04 14:18:40 UTC (rev 18301)
@@ -0,0 +1,12 @@
+package fred;
+
+import org.drools.Person;
+
+global java.util.List results;
+
+rule "Find fred"
+when
+ $p : Person( name == "fred" )
+then
+ results.add( $p );
+end
Added: labs/jbossrules/branches/4.0.x/drools-compiler/src/test/resources/org/drools/integrationtests/test_DynamicRulesTom.drl
===================================================================
--- labs/jbossrules/branches/4.0.x/drools-compiler/src/test/resources/org/drools/integrationtests/test_DynamicRulesTom.drl (rev 0)
+++ labs/jbossrules/branches/4.0.x/drools-compiler/src/test/resources/org/drools/integrationtests/test_DynamicRulesTom.drl 2008-02-04 14:18:40 UTC (rev 18301)
@@ -0,0 +1,12 @@
+package tom;
+
+import org.drools.Person;
+
+global java.util.List results;
+
+rule "Find tom"
+when
+ $p : Person( name == "tom" )
+then
+ results.add( $p );
+end
More information about the jboss-svn-commits
mailing list