[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