[jboss-svn-commits] JBL Code SVN: r10985 - in labs/jbossrules/trunk/drools-core/src: test/java/org/drools and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sun Apr 15 20:00:07 EDT 2007


Author: mark.proctor at jboss.com
Date: 2007-04-15 20:00:07 -0400 (Sun, 15 Apr 2007)
New Revision: 10985

Added:
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/common/
   labs/jbossrules/trunk/drools-core/src/test/java/org/drools/common/EqualityKeyTest.java
Modified:
   labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/EqualityKey.java
Log:
JBRULES-796 IndexOutOfBoundException on EqualityKey on removeFactHandle

Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/EqualityKey.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/EqualityKey.java	2007-04-15 22:34:21 UTC (rev 10984)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/EqualityKey.java	2007-04-16 00:00:07 UTC (rev 10985)
@@ -80,6 +80,9 @@
                 this.handle = null;
             } else {
                 this.handle = (InternalFactHandle) this.instances.remove( 0 );
+                if ( this.instances.isEmpty() ) {
+                    this.instances = null;
+                }                
             }
         } else {
             this.instances.remove( handle );

Added: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/common/EqualityKeyTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/common/EqualityKeyTest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/common/EqualityKeyTest.java	2007-04-16 00:00:07 UTC (rev 10985)
@@ -0,0 +1,47 @@
+package org.drools.common;
+
+import org.drools.Cheese;
+import org.drools.reteoo.ReteooFactHandleFactory;
+import org.drools.spi.FactHandleFactory;
+
+import junit.framework.TestCase;
+
+public class EqualityKeyTest extends TestCase {
+    public void test1() {
+        ReteooFactHandleFactory factory = new ReteooFactHandleFactory();
+        
+        InternalFactHandle ch1 = factory.newFactHandle( new Cheese ("c", 10) );
+        EqualityKey key = new EqualityKey( ch1 );
+        
+        assertSame( ch1, key.getFactHandle() );
+        assertNull( key.getOtherFactHandle() );
+        
+        InternalFactHandle ch2 = factory.newFactHandle( new Cheese ("c", 10) );
+        key.addFactHandle( ch2 );
+        
+        assertEquals( 1, key.getOtherFactHandle().size() );
+        assertEquals( ch2, key.getOtherFactHandle().get( 0 ) );
+        
+        key.removeFactHandle( ch1 );
+        assertSame( ch2, key.getFactHandle() );
+        assertNull( key.getOtherFactHandle() );
+        
+        key.removeFactHandle( ch2 );
+        assertNull( key.getFactHandle() );
+        assertNull( key.getOtherFactHandle() );         
+        
+        key = new EqualityKey( ch2 );
+        key.addFactHandle( ch1 );
+        assertSame( ch2, key.getFactHandle() );
+        assertEquals( 1, key.getOtherFactHandle().size() );
+        assertEquals( ch1, key.getOtherFactHandle().get( 0 ) );    
+        
+        key.removeFactHandle( ch1 );
+        assertSame( ch2, key.getFactHandle() );
+        assertNull( key.getOtherFactHandle() );
+        
+        key.removeFactHandle( ch2 );
+        assertNull( key.getFactHandle() );
+        assertNull( key.getOtherFactHandle() );        
+    }
+}




More information about the jboss-svn-commits mailing list