[jboss-svn-commits] JBL Code SVN: r18984 - labs/jbossrules/branches/ming-serialization/drools-compiler/src/test/java/org/drools/integrationtests.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Mar 14 12:11:23 EDT 2008


Author: mingjin
Date: 2008-03-14 12:11:23 -0400 (Fri, 14 Mar 2008)
New Revision: 18984

Modified:
   labs/jbossrules/branches/ming-serialization/drools-compiler/src/test/java/org/drools/integrationtests/TruthMaintenanceTest.java
Log:
added rulebase serialization to all except the first one

Modified: labs/jbossrules/branches/ming-serialization/drools-compiler/src/test/java/org/drools/integrationtests/TruthMaintenanceTest.java
===================================================================
--- labs/jbossrules/branches/ming-serialization/drools-compiler/src/test/java/org/drools/integrationtests/TruthMaintenanceTest.java	2008-03-14 16:02:05 UTC (rev 18983)
+++ labs/jbossrules/branches/ming-serialization/drools-compiler/src/test/java/org/drools/integrationtests/TruthMaintenanceTest.java	2008-03-14 16:11:23 UTC (rev 18984)
@@ -1,12 +1,6 @@
 package org.drools.integrationtests;
 
-import java.io.InputStreamReader;
-import java.io.Reader;
-import java.util.ArrayList;
-import java.util.List;
-
 import junit.framework.TestCase;
-
 import org.drools.Cheese;
 import org.drools.CheeseEqual;
 import org.drools.FactHandle;
@@ -28,6 +22,11 @@
 import org.drools.rule.Package;
 import org.drools.util.ObjectHashMap;
 
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.util.ArrayList;
+import java.util.List;
+
 public class TruthMaintenanceTest extends TestCase {
     protected RuleBase getRuleBase() throws Exception {
 
@@ -41,13 +40,144 @@
                                             config );
     }
     
+    public void testLogicalInsertionsDynamicRule() throws Exception {
+        PackageBuilder builder = new PackageBuilder();
+        builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_LogicalInsertionsDynamicRule.drl" ) ) );
+        final Package pkg = builder.getPackage();
+
+        org.drools.reteoo.ReteooRuleBase reteooRuleBase = null;
+        // org.drools.leaps.LeapsRuleBase leapsRuleBase = null;
+        RuleBase ruleBase = getRuleBase();
+        if ( ruleBase instanceof org.drools.reteoo.ReteooRuleBase ) {
+            reteooRuleBase = (org.drools.reteoo.ReteooRuleBase) ruleBase;
+            // } else if ( ruleBase instanceof org.drools.leaps.LeapsRuleBase )
+            // {
+            // leapsRuleBase = (org.drools.leaps.LeapsRuleBase) ruleBase;
+        }
+        ruleBase.addPackage( pkg );
+//        ruleBase    = SerializationHelper.serializeObject(ruleBase);
+        final WorkingMemory workingMemory = ruleBase.newStatefulSession();
+
+        // workingMemory.addEventListener(new
+        // org.drools.event.DebugAgendaEventListener());
+        // workingMemory.addEventListener(new
+        // org.drools.event.DebugWorkingMemoryEventListener());
+
+        final Cheese c1 = new Cheese( "a",
+                                      1 );
+        final Cheese c2 = new Cheese( "b",
+                                      2 );
+        final Cheese c3 = new Cheese( "c",
+                                      3 );
+        List list;
+
+        workingMemory.insert( c1 );
+        final FactHandle h = workingMemory.insert( c2 );
+        workingMemory.insert( c3 );
+        workingMemory.fireAllRules();
+
+        // Check logical Insertions where made for c2 and c3
+        list = IteratorToList.convert( workingMemory.iterateObjects( new ClassObjectFilter( Person.class) ) );
+        assertEquals( 2,
+                      list.size() );
+        assertFalse( list.contains( new Person( c1.getType() ) ) );
+        assertTrue( list.contains( new Person( c2.getType() ) ) );
+        assertTrue( list.contains( new Person( c3.getType() ) ) );
+
+        // this rule will make a logical assertion for c1 too
+        final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_LogicalInsertionsDynamicRule2.drl" ) );
+        builder = new PackageBuilder();
+        builder.addPackageFromDrl( reader );
+        final Package pkg2 = builder.getPackage();
+        ruleBase.addPackage( pkg2 );
+//        ruleBase    = SerializationHelper.serializeObject(ruleBase);
+
+        workingMemory.fireAllRules();
+
+        // check all now have just one logical assertion each
+        list = IteratorToList.convert( workingMemory.iterateObjects( new ClassObjectFilter( Person.class) ) );
+        assertEquals( 3,
+                      list.size() );
+        assertTrue( list.contains( new Person( c1.getType() ) ) );
+        assertTrue( list.contains( new Person( c2.getType() ) ) );
+        assertTrue( list.contains( new Person( c3.getType() ) ) );
+
+        // check the packages are correctly populated
+        assertEquals( "org.drools.test",
+                      ruleBase.getPackages()[0].getName() );
+        assertEquals( "org.drools.test2",
+                      ruleBase.getPackages()[1].getName() );
+        assertEquals( "rule1",
+                      ruleBase.getPackages()[0].getRules()[0].getName() );
+        assertEquals( "rule2",
+                      ruleBase.getPackages()[1].getRules()[0].getName() );
+
+        // now remove the first rule
+        if ( reteooRuleBase != null ) {
+            reteooRuleBase.removeRule( ruleBase.getPackages()[0].getName(),
+                                       ruleBase.getPackages()[0].getRules()[0].getName() );
+            // } else if ( leapsRuleBase != null ) {
+            // leapsRuleBase.removeRule( ruleBase.getPackages()[0].getName(),
+            // ruleBase.getPackages()[0].getRules()[0].getName() );
+        }
+
+        // Check the rule was correctly remove
+        assertEquals( 0,
+                      ruleBase.getPackages()[0].getRules().length );
+        assertEquals( 1,
+                      ruleBase.getPackages()[1].getRules().length );
+        assertEquals( "org.drools.test2",
+                      ruleBase.getPackages()[1].getName() );
+        assertEquals( "rule2",
+                      ruleBase.getPackages()[1].getRules()[0].getName() );
+
+        list = IteratorToList.convert( workingMemory.iterateObjects( new ClassObjectFilter( Person.class) ) );
+        assertEquals( "removal of the rule should result in retraction of c3's logical assertion",
+                      2,
+                      list.size() );
+        assertTrue( "c1's logical assertion should not be retracted",
+                    list.contains( new Person( c1.getType() ) ) );
+        assertTrue( "c2's logical assertion should  not be retracted",
+                    list.contains( new Person( c2.getType() ) ) );
+        assertFalse( "c3's logical assertion should be  retracted",
+                     list.contains( new Person( c3.getType() ) ) );
+
+        c2.setPrice( 3 );
+        workingMemory.update( h,
+                                    c2 );
+        list = IteratorToList.convert( workingMemory.iterateObjects( new ClassObjectFilter( Person.class) ) );
+        assertEquals( "c2 now has a higher price, its logical assertion should  be cancelled",
+                      1,
+                      list.size() );
+        assertFalse( "The logical assertion cor c2 should have been retracted",
+                     list.contains( new Person( c2.getType() ) ) );
+        assertTrue( "The logical assertion  for c1 should exist",
+                    list.contains( new Person( c1.getType() ) ) );
+
+        if ( reteooRuleBase != null ) {
+            reteooRuleBase.removeRule( ruleBase.getPackages()[1].getName(),
+                                       ruleBase.getPackages()[1].getRules()[0].getName() );
+            // } else if ( leapsRuleBase != null ) {
+            // leapsRuleBase.removeRule( ruleBase.getPackages()[1].getName(),
+            // ruleBase.getPackages()[1].getRules()[0].getName() );
+        }
+        assertEquals( 0,
+                      ruleBase.getPackages()[0].getRules().length );
+        assertEquals( 0,
+                      ruleBase.getPackages()[1].getRules().length );
+        list = IteratorToList.convert( workingMemory.iterateObjects( new ClassObjectFilter( Person.class) ) );
+        assertEquals( 0,
+                      list.size() );
+    }
+
     public void testLogicalInsertions() throws Exception {
         final PackageBuilder builder = new PackageBuilder();
         builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_LogicalInsertions.drl" ) ) );
         final Package pkg = builder.getPackage();
 
-        final RuleBase ruleBase = getRuleBase();
+        RuleBase ruleBase = getRuleBase();
         ruleBase.addPackage( pkg );
+        ruleBase    = SerializationHelper.serializeObject(ruleBase);
         final WorkingMemory workingMemory = ruleBase.newStatefulSession();
 
         final List list = new ArrayList();
@@ -86,8 +216,9 @@
         builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_LogicalInsertionsBacking.drl" ) ) );
         final Package pkg = builder.getPackage();
 
-        final RuleBase ruleBase = getRuleBase();
+        RuleBase ruleBase = getRuleBase();
         ruleBase.addPackage( pkg );
+        ruleBase    = SerializationHelper.serializeObject(ruleBase);
         final WorkingMemory workingMemory = ruleBase.newStatefulSession();
 
         final Cheese cheese1 = new Cheese( "c",
@@ -139,8 +270,9 @@
         builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_LogicalInsertionsSelfreferencing.drl" ) ) );
         final Package pkg = builder.getPackage();
 
-        final RuleBase ruleBase = getRuleBase();
+        RuleBase ruleBase = getRuleBase();
         ruleBase.addPackage( pkg );
+        ruleBase    = SerializationHelper.serializeObject(ruleBase);
         final WorkingMemory workingMemory = ruleBase.newStatefulSession();
 
         List list;
@@ -182,8 +314,9 @@
         builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_LogicalInsertionsLoop.drl" ) ) );
         final Package pkg = builder.getPackage();
 
-        final RuleBase ruleBase = getRuleBase();
+        RuleBase ruleBase = getRuleBase();
         ruleBase.addPackage( pkg );
+        ruleBase    = SerializationHelper.serializeObject(ruleBase);
         final WorkingMemory workingMemory = ruleBase.newStatefulSession();
 
         List list;
@@ -210,8 +343,9 @@
         builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_LogicalInsertionsNoLoop.drl" ) ) );
         final Package pkg = builder.getPackage();
 
-        final RuleBase ruleBase = getRuleBase();
+        RuleBase ruleBase = getRuleBase();
         ruleBase.addPackage( pkg );
+        ruleBase    = SerializationHelper.serializeObject(ruleBase);
         final WorkingMemory workingMemory = ruleBase.newStatefulSession();
 
         List list;
@@ -238,8 +372,9 @@
         builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_LogicalInsertionsWithUpdate.drl" ) ) );
         final Package pkg = builder.getPackage();
 
-        final RuleBase ruleBase = getRuleBase();
+        RuleBase ruleBase = getRuleBase();
         ruleBase.addPackage( pkg );
+        ruleBase    = SerializationHelper.serializeObject(ruleBase);
         final WorkingMemory workingMemory = ruleBase.newStatefulSession();
         
         final WorkingMemoryEventListener l2 = new DefaultWorkingMemoryEventListener() {
@@ -295,8 +430,9 @@
         builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_LogicalInsertions2.drl" ) ) );
         final Package pkg = builder.getPackage();
 
-        final RuleBase ruleBase = getRuleBase();
+        RuleBase ruleBase = getRuleBase();
         ruleBase.addPackage( pkg );
+        ruleBase    = SerializationHelper.serializeObject(ruleBase);
         final WorkingMemory workingMemory = ruleBase.newStatefulSession();
 
 //        final WorkingMemoryFileLogger logger = new WorkingMemoryFileLogger( workingMemory );
@@ -345,8 +481,9 @@
         builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_LogicalInsertionsNot.drl" ) ) );
         final Package pkg = builder.getPackage();
 
-        final RuleBase ruleBase = getRuleBase();
+        RuleBase ruleBase = getRuleBase();
         ruleBase.addPackage( pkg );
+        ruleBase    = SerializationHelper.serializeObject(ruleBase);
         final WorkingMemory workingMemory = ruleBase.newStatefulSession();
 
         List list;
@@ -402,8 +539,9 @@
         builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_LogicalInsertionsNotPingPong.drl" ) ) );
         final Package pkg = builder.getPackage();
 
-        final RuleBase ruleBase = getRuleBase();
+        RuleBase ruleBase = getRuleBase();
         ruleBase.addPackage( pkg );
+        ruleBase    = SerializationHelper.serializeObject(ruleBase);
         final WorkingMemory workingMemory = ruleBase.newStatefulSession();
 
         // workingMemory.addEventListener(new DebugAgendaEventListener());
@@ -430,141 +568,14 @@
                       list.size() );
     }
 
-    public void testLogicalInsertionsDynamicRule() throws Exception {
-        PackageBuilder builder = new PackageBuilder();
-        builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_LogicalInsertionsDynamicRule.drl" ) ) );
-        final Package pkg = builder.getPackage();
-
-        org.drools.reteoo.ReteooRuleBase reteooRuleBase = null;
-        // org.drools.leaps.LeapsRuleBase leapsRuleBase = null;
-        final RuleBase ruleBase = getRuleBase();
-        if ( ruleBase instanceof org.drools.reteoo.ReteooRuleBase ) {
-            reteooRuleBase = (org.drools.reteoo.ReteooRuleBase) ruleBase;
-            // } else if ( ruleBase instanceof org.drools.leaps.LeapsRuleBase )
-            // {
-            // leapsRuleBase = (org.drools.leaps.LeapsRuleBase) ruleBase;
-        }
-        ruleBase.addPackage( pkg );
-        final WorkingMemory workingMemory = ruleBase.newStatefulSession();
-
-        // workingMemory.addEventListener(new
-        // org.drools.event.DebugAgendaEventListener());
-        // workingMemory.addEventListener(new
-        // org.drools.event.DebugWorkingMemoryEventListener());
-
-        final Cheese c1 = new Cheese( "a",
-                                      1 );
-        final Cheese c2 = new Cheese( "b",
-                                      2 );
-        final Cheese c3 = new Cheese( "c",
-                                      3 );
-        List list;
-
-        workingMemory.insert( c1 );
-        final FactHandle h = workingMemory.insert( c2 );
-        workingMemory.insert( c3 );
-        workingMemory.fireAllRules();
-
-        // Check logical Insertions where made for c2 and c3
-        list = IteratorToList.convert( workingMemory.iterateObjects( new ClassObjectFilter( Person.class) ) );
-        assertEquals( 2,
-                      list.size() );
-        assertFalse( list.contains( new Person( c1.getType() ) ) );
-        assertTrue( list.contains( new Person( c2.getType() ) ) );
-        assertTrue( list.contains( new Person( c3.getType() ) ) );
-
-        // this rule will make a logical assertion for c1 too
-        final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_LogicalInsertionsDynamicRule2.drl" ) );
-        builder = new PackageBuilder();
-        builder.addPackageFromDrl( reader );
-        final Package pkg2 = builder.getPackage();
-        ruleBase.addPackage( pkg2 );
-
-        workingMemory.fireAllRules();
-
-        // check all now have just one logical assertion each
-        list = IteratorToList.convert( workingMemory.iterateObjects( new ClassObjectFilter( Person.class) ) );
-        assertEquals( 3,
-                      list.size() );
-        assertTrue( list.contains( new Person( c1.getType() ) ) );
-        assertTrue( list.contains( new Person( c2.getType() ) ) );
-        assertTrue( list.contains( new Person( c3.getType() ) ) );
-
-        // check the packages are correctly populated
-        assertEquals( "org.drools.test",
-                      ruleBase.getPackages()[0].getName() );
-        assertEquals( "org.drools.test2",
-                      ruleBase.getPackages()[1].getName() );
-        assertEquals( "rule1",
-                      ruleBase.getPackages()[0].getRules()[0].getName() );
-        assertEquals( "rule2",
-                      ruleBase.getPackages()[1].getRules()[0].getName() );
-
-        // now remove the first rule
-        if ( reteooRuleBase != null ) {
-            reteooRuleBase.removeRule( ruleBase.getPackages()[0].getName(),
-                                       ruleBase.getPackages()[0].getRules()[0].getName() );
-            // } else if ( leapsRuleBase != null ) {
-            // leapsRuleBase.removeRule( ruleBase.getPackages()[0].getName(),
-            // ruleBase.getPackages()[0].getRules()[0].getName() );
-        }
-
-        // Check the rule was correctly remove
-        assertEquals( 0,
-                      ruleBase.getPackages()[0].getRules().length );
-        assertEquals( 1,
-                      ruleBase.getPackages()[1].getRules().length );
-        assertEquals( "org.drools.test2",
-                      ruleBase.getPackages()[1].getName() );
-        assertEquals( "rule2",
-                      ruleBase.getPackages()[1].getRules()[0].getName() );
-
-        list = IteratorToList.convert( workingMemory.iterateObjects( new ClassObjectFilter( Person.class) ) );
-        assertEquals( "removal of the rule should result in retraction of c3's logical assertion",
-                      2,
-                      list.size() );
-        assertTrue( "c1's logical assertion should not be retracted",
-                    list.contains( new Person( c1.getType() ) ) );
-        assertTrue( "c2's logical assertion should  not be retracted",
-                    list.contains( new Person( c2.getType() ) ) );
-        assertFalse( "c3's logical assertion should be  retracted",
-                     list.contains( new Person( c3.getType() ) ) );
-
-        c2.setPrice( 3 );
-        workingMemory.update( h,
-                                    c2 );
-        list = IteratorToList.convert( workingMemory.iterateObjects( new ClassObjectFilter( Person.class) ) );
-        assertEquals( "c2 now has a higher price, its logical assertion should  be cancelled",
-                      1,
-                      list.size() );
-        assertFalse( "The logical assertion cor c2 should have been retracted",
-                     list.contains( new Person( c2.getType() ) ) );
-        assertTrue( "The logical assertion  for c1 should exist",
-                    list.contains( new Person( c1.getType() ) ) );
-
-        if ( reteooRuleBase != null ) {
-            reteooRuleBase.removeRule( ruleBase.getPackages()[1].getName(),
-                                       ruleBase.getPackages()[1].getRules()[0].getName() );
-            // } else if ( leapsRuleBase != null ) {
-            // leapsRuleBase.removeRule( ruleBase.getPackages()[1].getName(),
-            // ruleBase.getPackages()[1].getRules()[0].getName() );
-        }
-        assertEquals( 0,
-                      ruleBase.getPackages()[0].getRules().length );
-        assertEquals( 0,
-                      ruleBase.getPackages()[1].getRules().length );
-        list = IteratorToList.convert( workingMemory.iterateObjects( new ClassObjectFilter( Person.class) ) );
-        assertEquals( 0,
-                      list.size() );
-    }
-
     public void testLogicalInsertionsUpdateEqual() throws Exception {
         final PackageBuilder builder = new PackageBuilder();
         builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_LogicalInsertionsUpdateEqual.drl" ) ) );
         final Package pkg = builder.getPackage();
 
-        final RuleBase ruleBase = getRuleBase();
+        RuleBase ruleBase = getRuleBase();
         ruleBase.addPackage( pkg );
+        ruleBase    = SerializationHelper.serializeObject(ruleBase);
         final WorkingMemory workingMemory = ruleBase.newStatefulSession();
 
         List l;
@@ -603,8 +614,9 @@
         builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_LogicalInsertionWithExists.drl" ) ) );
         final Package pkg = builder.getPackage();
 
-        final RuleBase ruleBase = getRuleBase();
+        RuleBase ruleBase = getRuleBase();
         ruleBase.addPackage( pkg );
+        ruleBase    = SerializationHelper.serializeObject(ruleBase);
         final WorkingMemory workingMemory = ruleBase.newStatefulSession();
 
         final Person p1 = new Person( "p1",
@@ -689,8 +701,9 @@
         builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_logicalInsertions3.drl" ) ) );
         final Package pkg = builder.getPackage();
 
-        final RuleBase ruleBase = getRuleBase();
+        RuleBase ruleBase = getRuleBase();
         ruleBase.addPackage( pkg );
+        ruleBase    = SerializationHelper.serializeObject(ruleBase);
         final WorkingMemory workingMemory = ruleBase.newStatefulSession();
 
         final List list = new ArrayList();
@@ -741,8 +754,9 @@
         builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_LogicalInsertionsAccumulatorPattern.drl" ) ) );
         final Package pkg = builder.getPackage();
 
-        final RuleBase ruleBase = getRuleBase();
+        RuleBase ruleBase = getRuleBase();
         ruleBase.addPackage( pkg );
+        ruleBase    = SerializationHelper.serializeObject(ruleBase);
         final WorkingMemory workingMemory = ruleBase.newStatefulSession();
 
         workingMemory.setGlobal( "ga", "a");




More information about the jboss-svn-commits mailing list