[jboss-svn-commits] JBL Code SVN: r13891 - in labs/jbossrules/trunk: drools-compiler/src/test/java/org/drools/integrationtests and 2 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Jul 30 18:37:01 EDT 2007
Author: tirelli
Date: 2007-07-30 18:37:01 -0400 (Mon, 30 Jul 2007)
New Revision: 13891
Added:
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/FirstClass.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/SecondClass.java
labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_DefaultBetaConstraint.drl
Modified:
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DefaultBetaConstraints.java
Log:
JBRULES-1031: fixing bug when using more than 4 indexed constraints
Added: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/FirstClass.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/FirstClass.java (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/FirstClass.java 2007-07-30 22:37:01 UTC (rev 13891)
@@ -0,0 +1,56 @@
+package org.drools;
+
+public class FirstClass {
+ private String item1;
+ private String item2;
+ private String item3;
+ private String item4;
+ private String item5;
+
+ public FirstClass() {
+ }
+
+ public FirstClass(String item1,
+ String item2,
+ String item3,
+ String item4,
+ String item5) {
+ super();
+ this.item1 = item1;
+ this.item2 = item2;
+ this.item3 = item3;
+ this.item4 = item4;
+ this.item5 = item5;
+ }
+ public String getItem1() {
+ return item1;
+ }
+ public void setItem1(String item1) {
+ this.item1 = item1;
+ }
+ public String getItem2() {
+ return item2;
+ }
+ public void setItem2(String item2) {
+ this.item2 = item2;
+ }
+ public String getItem3() {
+ return item3;
+ }
+ public void setItem3(String item3) {
+ this.item3 = item3;
+ }
+ public String getItem4() {
+ return item4;
+ }
+ public void setItem4(String item4) {
+ this.item4 = item4;
+ }
+ public String getItem5() {
+ return item5;
+ }
+ public void setItem5(String item5) {
+ this.item5 = item5;
+ }
+
+}
Added: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/SecondClass.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/SecondClass.java (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/SecondClass.java 2007-07-30 22:37:01 UTC (rev 13891)
@@ -0,0 +1,56 @@
+package org.drools;
+
+public class SecondClass {
+ private String item1;
+ private String item2;
+ private String item3;
+ private String item4;
+ private String item5;
+
+ public SecondClass() {
+ }
+
+ public SecondClass(String item1,
+ String item2,
+ String item3,
+ String item4,
+ String item5) {
+ super();
+ this.item1 = item1;
+ this.item2 = item2;
+ this.item3 = item3;
+ this.item4 = item4;
+ this.item5 = item5;
+ }
+ public String getItem1() {
+ return item1;
+ }
+ public void setItem1(String item1) {
+ this.item1 = item1;
+ }
+ public String getItem2() {
+ return item2;
+ }
+ public void setItem2(String item2) {
+ this.item2 = item2;
+ }
+ public String getItem3() {
+ return item3;
+ }
+ public void setItem3(String item3) {
+ this.item3 = item3;
+ }
+ public String getItem4() {
+ return item4;
+ }
+ public void setItem4(String item4) {
+ this.item4 = item4;
+ }
+ public String getItem5() {
+ return item5;
+ }
+ public void setItem5(String item5) {
+ this.item5 = item5;
+ }
+
+}
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java 2007-07-30 22:06:48 UTC (rev 13890)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java 2007-07-30 22:37:01 UTC (rev 13891)
@@ -43,6 +43,7 @@
import org.drools.Cheesery;
import org.drools.Child;
import org.drools.FactHandle;
+import org.drools.FirstClass;
import org.drools.FromTestClass;
import org.drools.Guess;
import org.drools.IndexedNumber;
@@ -58,6 +59,7 @@
import org.drools.RuleBase;
import org.drools.RuleBaseConfiguration;
import org.drools.RuleBaseFactory;
+import org.drools.SecondClass;
import org.drools.Sensor;
import org.drools.State;
import org.drools.TestParam;
@@ -3412,4 +3414,50 @@
results.size() );
}
+ public void testDefaultBetaConstrains() throws Exception {
+ final PackageBuilder builder = new PackageBuilder();
+ builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_DefaultBetaConstraint.drl" ) ) );
+ final Package pkg = builder.getPackage();
+
+ final RuleBase ruleBase = getRuleBase();
+ ruleBase.addPackage( pkg );
+ final WorkingMemory workingMemory = ruleBase.newStatefulSession();
+
+ final List results = new ArrayList();
+ workingMemory.setGlobal( "results",
+ results );
+ final FirstClass first = new FirstClass("1", "2", "3", "4", "5");
+ final FactHandle handle = workingMemory.insert( first );
+ workingMemory.fireAllRules();
+ assertEquals( 1,
+ results.size() );
+ assertEquals( "NOT",
+ results.get(0) );
+
+ workingMemory.insert( new SecondClass() );
+ workingMemory.update( handle, first );
+ workingMemory.fireAllRules();
+ assertEquals( 2,
+ results.size() );
+ assertEquals( "NOT",
+ results.get(1) );
+
+ workingMemory.update( handle, first );
+ workingMemory.insert( new SecondClass("1", "2", "3", "4", null ) );
+ workingMemory.fireAllRules();
+ assertEquals( 3,
+ results.size() );
+ assertEquals( "NOT",
+ results.get(2) );
+
+ workingMemory.insert( new SecondClass("1", "2", "3", "4", "5" ) );
+ workingMemory.update( handle, first );
+ workingMemory.fireAllRules();
+ assertEquals( 4,
+ results.size() );
+ assertEquals( "EQUALS",
+ results.get(3) );
+
+ }
+
}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_DefaultBetaConstraint.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_DefaultBetaConstraint.drl (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_DefaultBetaConstraint.drl 2007-07-30 22:37:01 UTC (rev 13891)
@@ -0,0 +1,19 @@
+package org.drools;
+
+global java.util.List results;
+
+rule "5+ constraints with not"
+ when
+ FirstClass($i1 : item1, $i2 : item2, $i3 : item3, $i4 : item4, $i5 : item5)
+ not SecondClass( item1 == $i1, item2 == $i2, item3 == $i3, item4 == $i4, item5 == $i5 )
+ then
+ results.add( "NOT" );
+end
+
+rule "5+ constraints with pattern"
+ when
+ FirstClass($i1 : item1, $i2 : item2, $i3 : item3, $i4 : item4, $i5 : item5)
+ SecondClass( item1 == $i1, item2 == $i2, item3 == $i3, item4 == $i4, item5 == $i5 )
+ then
+ results.add( "EQUALS" );
+end
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DefaultBetaConstraints.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DefaultBetaConstraints.java 2007-07-30 22:06:48 UTC (rev 13890)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DefaultBetaConstraints.java 2007-07-30 22:37:01 UTC (rev 13891)
@@ -72,13 +72,13 @@
// First create a LinkedList of constraints, with the indexed constraints first.
for ( int i = 0, length = constraints.length; i < length; i++ ) {
// Determine if this constraint is indexable
- if ( (!disableIndexing) && conf.isIndexLeftBetaMemory() && conf.isIndexRightBetaMemory() && isIndexable( constraints[i] ) ) {
+ if ( (!disableIndexing) && conf.isIndexLeftBetaMemory() && conf.isIndexRightBetaMemory() && isIndexable( constraints[i] ) && ( depth <= this.indexed ) ) {
if ( depth >= 1 && this.indexed == -1 ) {
// first index, so just add to the front
this.constraints.insertAfter( null,
new LinkedListEntry( constraints[i] ) );
this.indexed++;
- } else if ( depth >= this.indexed + 1 ) { //this.indexed is zero based, so adjust
+ } else {
// insert this index after the previous index
this.constraints.insertAfter( findNode( this.indexed++ ),
new LinkedListEntry( constraints[i] ) );
More information about the jboss-svn-commits
mailing list