From: <jbo...@li...> - 2006-04-26 19:55:16
|
Author: tirelli Date: 2006-04-26 15:55:00 -0400 (Wed, 26 Apr 2006) New Revision: 3978 Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/ObjectEqualConstrLeftMemory.java labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/ObjectNotEqualConstrLeftMemory.java labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/BaseBetaLeftMemoryTestClass.java labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/BaseBetaRightMemoryTestClass.java labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/BooleanConstrainedLeftMemoryTest.java labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/BooleanConstrainedRightMemoryTest.java labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/DefaultLeftMemoryTest.java labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/DefaultRightMemoryTest.java labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/ObjectEqualConstrLeftMemoryTest.java labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/ObjectEqualConstrRightMemoryTest.java labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/ObjectNotEqualConstrLeftMemoryTest.java labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/ObjectNotEqualConstrRightMemoryTest.java Log: JBRULES-242: * Fixing bug where ObjectEqualsConstrLeftMemory and ObjectNotEqualsConstrLeftMemory where not delegating calls on selectPossibleMatches() method. * Added unit test to ensure all Beta Memory implementations will have that call. Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/ObjectEqualConstrLeftMemory.java =================================================================== --- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/ObjectEqualConstrLeftMemory.java 2006-04-26 17:34:05 UTC (rev 3977) +++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/ObjectEqualConstrLeftMemory.java 2006-04-26 19:55:00 UTC (rev 3978) @@ -259,6 +259,11 @@ Object select = this.extractor.getValue( handle.getObject() ); Integer hash = (select != null) ? new Integer( select.hashCode() ) : new Integer( 0 ); this.selectedList = (MultiLinkedList) this.memoryMap.get( hash ); + + if ( this.childMemory != null ) { + this.childMemory.selectPossibleMatches( workingMemory, + handle ); + } } /** Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/ObjectNotEqualConstrLeftMemory.java =================================================================== --- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/ObjectNotEqualConstrLeftMemory.java 2006-04-26 17:34:05 UTC (rev 3977) +++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/beta/ObjectNotEqualConstrLeftMemory.java 2006-04-26 19:55:00 UTC (rev 3978) @@ -247,6 +247,11 @@ InternalFactHandle handle) { Object select = this.extractor.getValue( handle.getObject() ); this.noMatchList = (MultiLinkedList) this.memoryMap.get( select ); + + if ( this.innerMemory != null ) { + this.innerMemory.selectPossibleMatches( workingMemory, + handle ); + } } /** Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/BaseBetaLeftMemoryTestClass.java =================================================================== --- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/BaseBetaLeftMemoryTestClass.java 2006-04-26 17:34:05 UTC (rev 3977) +++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/BaseBetaLeftMemoryTestClass.java 2006-04-26 19:55:00 UTC (rev 3978) @@ -21,6 +21,8 @@ import junit.framework.Assert; import junit.framework.TestCase; +import org.drools.WorkingMemory; +import org.drools.common.InternalFactHandle; import org.drools.reteoo.DefaultFactHandleFactory; import org.drools.reteoo.FactHandleImpl; import org.drools.reteoo.ReteTuple; @@ -37,21 +39,23 @@ * Created: 28/02/2006 */ public abstract class BaseBetaLeftMemoryTestClass extends TestCase { - protected WorkingMemoryImpl workingMemory; - protected BetaLeftMemory memory; - protected DummyValueObject obj0; - protected DummyValueObject obj1; - protected DummyValueObject obj2; - protected FactHandleFactory factory; - protected FactHandleImpl f0; - protected FactHandleImpl f1; - protected FactHandleImpl f2; - protected ReteTuple tuple0; - protected ReteTuple tuple1; - protected ReteTuple tuple2; + protected WorkingMemoryImpl workingMemory; + protected BetaLeftMemory memory; + protected MockBetaLeftMemory child; + protected DummyValueObject obj0; + protected DummyValueObject obj1; + protected DummyValueObject obj2; + protected FactHandleFactory factory; + protected FactHandleImpl f0; + protected FactHandleImpl f1; + protected FactHandleImpl f2; + protected ReteTuple tuple0; + protected ReteTuple tuple1; + protected ReteTuple tuple2; public BaseBetaLeftMemoryTestClass() { this.memory = null; + this.child = new MockBetaLeftMemory(); } protected void setUp() throws Exception { @@ -349,6 +353,12 @@ Assert.fail( "BetaRightMemory was not supposed to throw ClassCastException: " + e.getMessage() ); } } + + public void testSelectPossibleMatches2() { + int counter = this.child.getCounter(); + this.memory.selectPossibleMatches( this.workingMemory, this.f0 ); + Assert.assertEquals( "Should have called inner memory", counter+1, this.child.getCounter() ); + } public abstract void testIterator(); @@ -360,4 +370,64 @@ */ public abstract void testModifyObjectAttribute(); + + public static class MockBetaLeftMemory implements BetaLeftMemory { + private int callCounter = 0; + + public void add(WorkingMemory workingMemory, + MultiLinkedListNodeWrapper tuple) { + this.callCounter++; + } + + public void add(WorkingMemory workingMemory, + ReteTuple tuple) { + this.callCounter++; + } + + public boolean isEmpty() { + this.callCounter++; + return false; + } + + public boolean isPossibleMatch(MultiLinkedListNodeWrapper tuple) { + this.callCounter++; + return true; + } + + public Iterator iterator(WorkingMemory workingMemory, + InternalFactHandle handle) { + this.callCounter++; + return null; + } + + public Iterator iterator() { + this.callCounter++; + return null; + } + + public void remove(WorkingMemory workingMemory, + MultiLinkedListNodeWrapper tuple) { + this.callCounter++; + } + + public void remove(WorkingMemory workingMemory, + ReteTuple tuple) { + this.callCounter++; + } + + public void selectPossibleMatches(WorkingMemory workingMemory, + InternalFactHandle handle) { + this.callCounter++; + } + + public int size() { + this.callCounter++; + return 0; + } + + public int getCounter() { + return this.callCounter; + } + }; + } Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/BaseBetaRightMemoryTestClass.java =================================================================== --- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/BaseBetaRightMemoryTestClass.java 2006-04-26 17:34:05 UTC (rev 3977) +++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/BaseBetaRightMemoryTestClass.java 2006-04-26 19:55:00 UTC (rev 3978) @@ -21,6 +21,7 @@ import junit.framework.Assert; import junit.framework.TestCase; +import org.drools.WorkingMemory; import org.drools.reteoo.DefaultFactHandleFactory; import org.drools.reteoo.FactHandleImpl; import org.drools.reteoo.ObjectMatches; @@ -42,6 +43,7 @@ public abstract class BaseBetaRightMemoryTestClass extends TestCase { protected WorkingMemoryImpl workingMemory; protected BetaRightMemory memory; + protected MockBetaRightMemory child; protected DummyValueObject obj0; protected DummyValueObject obj1; protected DummyValueObject obj2; @@ -58,6 +60,7 @@ public BaseBetaRightMemoryTestClass() { this.memory = null; + this.child = new MockBetaRightMemory(); } protected void setUp() throws Exception { @@ -343,6 +346,12 @@ } } + public void testSelectPossibleMatches2() { + int counter = this.child.getCounter(); + this.memory.selectPossibleMatches( this.workingMemory, this.tuple0 ); + Assert.assertEquals( "Should have called inner memory", counter+1, this.child.getCounter() ); + } + /* * Test method for 'org.drools.reteoo.beta.DefaultRightMemory.selectPossibleMatches(WorkingMemory, ReteTuple)' */ @@ -358,4 +367,62 @@ * a remove; */ public abstract void testModifyObjectAttribute(); + + public static class MockBetaRightMemory implements BetaRightMemory { + private int callCounter = 0; + + public void add(WorkingMemory workingMemory, + ObjectMatches matches) { + this.callCounter++; + } + + public void add(WorkingMemory workingMemory, + MultiLinkedListNodeWrapper matches) { + this.callCounter++; + } + + public boolean isEmpty() { + this.callCounter++; + return false; + } + + public boolean isPossibleMatch(MultiLinkedListNodeWrapper matches) { + this.callCounter++; + return true; + } + + public Iterator iterator(WorkingMemory workingMemory, + ReteTuple tuple) { + this.callCounter++; + return null; + } + + public Iterator iterator() { + this.callCounter++; + return null; + } + + public void remove(WorkingMemory workingMemory, + ObjectMatches matches) { + this.callCounter++; + } + + public void remove(WorkingMemory workingMemory, + MultiLinkedListNodeWrapper matches) { + this.callCounter++; + } + + public void selectPossibleMatches(WorkingMemory workingMemory, + ReteTuple tuple) { + this.callCounter++; + } + + public int size() { + return 0; + } + + public int getCounter() { + return this.callCounter; + } + } } Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/BooleanConstrainedLeftMemoryTest.java =================================================================== --- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/BooleanConstrainedLeftMemoryTest.java 2006-04-26 17:34:05 UTC (rev 3977) +++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/BooleanConstrainedLeftMemoryTest.java 2006-04-26 19:55:00 UTC (rev 3978) @@ -52,7 +52,8 @@ this.memory = new BooleanConstrainedLeftMemory( extractor, declaration, - evaluator ); + evaluator, + this.child); } protected void tearDown() throws Exception { Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/BooleanConstrainedRightMemoryTest.java =================================================================== --- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/BooleanConstrainedRightMemoryTest.java 2006-04-26 17:34:05 UTC (rev 3977) +++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/BooleanConstrainedRightMemoryTest.java 2006-04-26 19:55:00 UTC (rev 3978) @@ -51,11 +51,10 @@ Evaluator evaluator = EvaluatorFactory.getEvaluator( Evaluator.BOOLEAN_TYPE, Evaluator.EQUAL ); - BetaRightMemory defaultMem = new DefaultRightMemory(); this.memory = new BooleanConstrainedRightMemory( extractor, declaration, evaluator, - defaultMem ); + this.child ); } protected void tearDown() throws Exception { Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/DefaultLeftMemoryTest.java =================================================================== --- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/DefaultLeftMemoryTest.java 2006-04-26 17:34:05 UTC (rev 3977) +++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/DefaultLeftMemoryTest.java 2006-04-26 19:55:00 UTC (rev 3978) @@ -41,6 +41,10 @@ super.tearDown(); } + public void testSelectPossibleMatches2() { + // do nothing as there is no child memory + } + /* * Test method for 'org.drools.reteoo.beta.DefaultLeftMemory.iterator(WorkingMemory, FactHandleImpl)' */ Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/DefaultRightMemoryTest.java =================================================================== --- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/DefaultRightMemoryTest.java 2006-04-26 17:34:05 UTC (rev 3977) +++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/DefaultRightMemoryTest.java 2006-04-26 19:55:00 UTC (rev 3978) @@ -47,6 +47,10 @@ super.tearDown(); } + public void testSelectPossibleMatches2() { + // do nothing as there is no child memory + } + /* * Test method for 'org.drools.reteoo.beta.DefaultRightMemory.iterator(WorkingMemory, ReteTuple)' */ Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/ObjectEqualConstrLeftMemoryTest.java =================================================================== --- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/ObjectEqualConstrLeftMemoryTest.java 2006-04-26 17:34:05 UTC (rev 3977) +++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/ObjectEqualConstrLeftMemoryTest.java 2006-04-26 19:55:00 UTC (rev 3978) @@ -51,7 +51,8 @@ this.memory = new ObjectEqualConstrLeftMemory( extractor, declaration, - evaluator ); + evaluator, + this.child); } protected void tearDown() throws Exception { Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/ObjectEqualConstrRightMemoryTest.java =================================================================== --- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/ObjectEqualConstrRightMemoryTest.java 2006-04-26 17:34:05 UTC (rev 3977) +++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/ObjectEqualConstrRightMemoryTest.java 2006-04-26 19:55:00 UTC (rev 3978) @@ -51,11 +51,10 @@ Evaluator evaluator = EvaluatorFactory.getEvaluator( Evaluator.OBJECT_TYPE, Evaluator.EQUAL ); - BetaRightMemory defaultMem = new DefaultRightMemory(); this.memory = new ObjectEqualConstrRightMemory( extractor, declaration, evaluator, - defaultMem ); + this.child ); } protected void tearDown() throws Exception { Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/ObjectNotEqualConstrLeftMemoryTest.java =================================================================== --- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/ObjectNotEqualConstrLeftMemoryTest.java 2006-04-26 17:34:05 UTC (rev 3977) +++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/ObjectNotEqualConstrLeftMemoryTest.java 2006-04-26 19:55:00 UTC (rev 3978) @@ -52,7 +52,8 @@ this.memory = new ObjectNotEqualConstrLeftMemory( extractor, declaration, - evaluator ); + evaluator, + this.child); } protected void tearDown() throws Exception { Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/ObjectNotEqualConstrRightMemoryTest.java =================================================================== --- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/ObjectNotEqualConstrRightMemoryTest.java 2006-04-26 17:34:05 UTC (rev 3977) +++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/beta/ObjectNotEqualConstrRightMemoryTest.java 2006-04-26 19:55:00 UTC (rev 3978) @@ -51,11 +51,10 @@ Evaluator evaluator = EvaluatorFactory.getEvaluator( Evaluator.OBJECT_TYPE, Evaluator.NOT_EQUAL ); - BetaRightMemory defaultMem = new DefaultRightMemory(); this.memory = new ObjectNotEqualConstrRightMemory( extractor, declaration, evaluator, - defaultMem ); + this.child ); } protected void tearDown() throws Exception { |