[jboss-svn-commits] JBL Code SVN: r18300 - in labs/jbossrules/trunk/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:10 EST 2008


Author: tirelli
Date: 2008-02-04 09:18:10 -0500 (Mon, 04 Feb 2008)
New Revision: 18300

Added:
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_DynamicRulesEd.drl
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_DynamicRulesFred.drl
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_DynamicRulesTom.drl
Modified:
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/DynamicRulesTest.java
Log:
JBRULES-1329: adding test case

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/DynamicRulesTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/DynamicRulesTest.java	2008-02-04 13:29:05 UTC (rev 18299)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/DynamicRulesTest.java	2008-02-04 14:18:10 UTC (rev 18300)
@@ -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;
@@ -257,7 +258,7 @@
     public void testDynamicFunction() throws Exception {
         PackageBuilder builder = new PackageBuilder();
         builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_DynamicFunction1.drl" ) ) );
-        
+
         //FIXME JBRULES-1258 serialising a package breaks function removal -- left the serialisation commented out for now
         //final Package pkg = serialisePackage( builder.getPackage() );
         final Package pkg = builder.getPackage();
@@ -511,12 +512,17 @@
         ruleBase.addPackage( pkg );
         final WorkingMemory workingMemory = ruleBase.newStatefulSession();
         List list = new ArrayList();
-        workingMemory.setGlobal( "results", list );
+        workingMemory.setGlobal( "results",
+                                 list );
 
-        workingMemory.insert( new Cheese( "stilton", 10 ) );
-        workingMemory.insert( new Cheese( "brie", 10 ) );
-        workingMemory.insert( new Cheese( "stilton", 10 ) );
-        workingMemory.insert( new Cheese( "muzzarela", 10 ) );
+        workingMemory.insert( new Cheese( "stilton",
+                                          10 ) );
+        workingMemory.insert( new Cheese( "brie",
+                                          10 ) );
+        workingMemory.insert( new Cheese( "stilton",
+                                          10 ) );
+        workingMemory.insert( new Cheese( "muzzarela",
+                                          10 ) );
 
         final PackageBuilder builder2 = new PackageBuilder();
         builder2.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_CollectDynamicRules2.drl" ) ) );
@@ -524,11 +530,76 @@
         ruleBase.addPackage( pkg2 );
 
         // fire all rules is automatic
-        assertEquals( 1, list.size() );
-        assertEquals( 2, ((List)list.get( 0 )).size() );
+        assertEquals( 1,
+                      list.size() );
+        assertEquals( 2,
+                      ((List) list.get( 0 )).size() );
 
     }
 
+    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;
@@ -554,13 +625,14 @@
             return c;
         }
     }
-    
+
     protected Package serialisePackage(Package pkg) {
         try {
-        byte[] bytes = serializeOut( pkg );
-        return (Package) serializeIn( bytes );
+            byte[] bytes = serializeOut( pkg );
+            return (Package) serializeIn( bytes );
         } catch ( Exception e ) {
-            throw new RuntimeException( "trouble serialising package.", e);
+            throw new RuntimeException( "trouble serialising package.",
+                                        e );
         }
     }
 

Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_DynamicRulesEd.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_DynamicRulesEd.drl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_DynamicRulesEd.drl	2008-02-04 14:18:10 UTC (rev 18300)
@@ -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/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_DynamicRulesFred.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_DynamicRulesFred.drl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_DynamicRulesFred.drl	2008-02-04 14:18:10 UTC (rev 18300)
@@ -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/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_DynamicRulesTom.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_DynamicRulesTom.drl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_DynamicRulesTom.drl	2008-02-04 14:18:10 UTC (rev 18300)
@@ -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