[jboss-svn-commits] JBL Code SVN: r14397 - in labs/jbossrules/trunk/drools-core/src: test/java/org/drools/common and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Aug 20 22:14:52 EDT 2007
Author: mark.proctor at jboss.com
Date: 2007-08-20 22:14:51 -0400 (Mon, 20 Aug 2007)
New Revision: 14397
Added:
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/common/BaseBetaConstraintsTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/common/DoubleBetaConstraintsTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/common/SingleBetaConstraintsTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/common/TripleBetaConstraintsTest.java
Modified:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/BetaConstraints.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DefaultBetaConstraints.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DoubleBetaConstraints.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/EmptyBetaConstraints.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/QuadroupleBetaConstraints.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/SingleBetaConstraints.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/TripleBetaConstraints.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/common/DefaultBetaConstraintsTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/common/QuadroupleBetaConstraintsTest.java
Log:
JBRULES-1102 Bug in DefaultBetaConstraint class indexing to never turn on
-Updated the comprehensive unit test to do all BetaConstraints
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/BetaConstraints.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/BetaConstraints.java 2007-08-21 00:51:41 UTC (rev 14396)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/BetaConstraints.java 2007-08-21 02:14:51 UTC (rev 14397)
@@ -24,6 +24,8 @@
public LinkedList getConstraints();
public boolean isIndexed();
+
+ public int getIndexCount();
public boolean isEmpty();
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-08-21 00:51:41 UTC (rev 14396)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DefaultBetaConstraints.java 2007-08-21 02:14:51 UTC (rev 14397)
@@ -30,9 +30,11 @@
import org.drools.rule.VariableConstraint;
import org.drools.spi.BetaNodeFieldConstraint;
import org.drools.spi.Constraint;
+import org.drools.util.Entry;
import org.drools.util.FactHashTable;
import org.drools.util.FactHandleIndexHashTable;
import org.drools.util.FactList;
+import org.drools.util.Iterator;
import org.drools.util.LinkedList;
import org.drools.util.LinkedListEntry;
import org.drools.util.TupleHashTable;
@@ -194,8 +196,8 @@
}
public int getIndexCount() {
- return this.indexed;
- }
+ return this.indexed+1;
+ }
public boolean isEmpty() {
return false;
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DoubleBetaConstraints.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DoubleBetaConstraints.java 2007-08-21 00:51:41 UTC (rev 14396)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/DoubleBetaConstraints.java 2007-08-21 02:14:51 UTC (rev 14397)
@@ -115,7 +115,7 @@
} else {
return false;
}
- }
+ }
/* (non-Javadoc)
* @see org.drools.common.BetaNodeConstraints#updateFromTuple(org.drools.reteoo.ReteTuple)
@@ -160,6 +160,17 @@
public boolean isIndexed() {
return this.indexed0;
}
+
+ public int getIndexCount() {
+ int count = 0;
+ if ( this.indexed0 ) {
+ count++;
+ }
+ if ( this.indexed1 ) {
+ count++;
+ }
+ return count;
+ }
public boolean isEmpty() {
return false;
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/EmptyBetaConstraints.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/EmptyBetaConstraints.java 2007-08-21 00:51:41 UTC (rev 14396)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/EmptyBetaConstraints.java 2007-08-21 02:14:51 UTC (rev 14397)
@@ -77,6 +77,10 @@
public boolean isIndexed() {
return false;
}
+
+ public int getIndexCount() {
+ return 0;
+ }
public boolean isEmpty() {
return true;
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/QuadroupleBetaConstraints.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/QuadroupleBetaConstraints.java 2007-08-21 00:51:41 UTC (rev 14396)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/QuadroupleBetaConstraints.java 2007-08-21 02:14:51 UTC (rev 14397)
@@ -232,6 +232,23 @@
public boolean isIndexed() {
return this.indexed0;
}
+
+ public int getIndexCount() {
+ int count = 0;
+ if ( this.indexed0 ) {
+ count++;
+ }
+ if ( this.indexed1 ) {
+ count++;
+ }
+ if ( this.indexed2 ) {
+ count++;
+ }
+ if ( this.indexed3 ) {
+ count++;
+ }
+ return count;
+ }
public boolean isEmpty() {
return false;
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/SingleBetaConstraints.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/SingleBetaConstraints.java 2007-08-21 00:51:41 UTC (rev 14396)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/SingleBetaConstraints.java 2007-08-21 02:14:51 UTC (rev 14397)
@@ -52,6 +52,13 @@
private boolean indexed;
private RuleBaseConfiguration conf;
+
+ public SingleBetaConstraints(final BetaNodeFieldConstraint[] constraint,
+ final RuleBaseConfiguration conf) {
+ this( constraint[0],
+ conf,
+ false );
+ }
public SingleBetaConstraints(final BetaNodeFieldConstraint constraint,
final RuleBaseConfiguration conf) {
@@ -122,6 +129,10 @@
public boolean isIndexed() {
return this.indexed;
}
+
+ public int getIndexCount() {
+ return ( this.indexed ? 1 : 0 );
+ }
public boolean isEmpty() {
return false;
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/TripleBetaConstraints.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/TripleBetaConstraints.java 2007-08-21 00:51:41 UTC (rev 14396)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/TripleBetaConstraints.java 2007-08-21 02:14:51 UTC (rev 14397)
@@ -194,6 +194,20 @@
public boolean isIndexed() {
return this.indexed0;
}
+
+ public int getIndexCount() {
+ int count = 0;
+ if ( this.indexed0 ) {
+ count++;
+ }
+ if ( this.indexed1 ) {
+ count++;
+ }
+ if ( this.indexed2 ) {
+ count++;
+ }
+ return count;
+ }
public boolean isEmpty() {
return false;
Added: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/common/BaseBetaConstraintsTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/common/BaseBetaConstraintsTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/common/BaseBetaConstraintsTest.java 2007-08-21 02:14:51 UTC (rev 14397)
@@ -0,0 +1,124 @@
+package org.drools.common;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.drools.RuleBaseConfiguration;
+import org.drools.base.ClassFieldExtractorCache;
+import org.drools.base.ClassObjectType;
+import org.drools.base.evaluators.Operator;
+import org.drools.base.evaluators.StringFactory;
+import org.drools.reteoo.BetaMemory;
+import org.drools.rule.Declaration;
+import org.drools.rule.Pattern;
+import org.drools.rule.VariableConstraint;
+import org.drools.spi.BetaNodeFieldConstraint;
+import org.drools.spi.Evaluator;
+import org.drools.spi.FieldExtractor;
+import org.drools.util.FactHandleIndexHashTable;
+import org.drools.util.FactHashTable;
+import org.drools.util.LinkedList;
+import org.drools.util.LinkedListEntry;
+import org.drools.util.TupleHashTable;
+import org.drools.util.TupleIndexHashTable;
+import org.drools.util.AbstractHashTable.FieldIndex;
+import org.drools.util.AbstractHashTable.Index;
+
+import junit.framework.TestCase;
+
+public abstract class BaseBetaConstraintsTest extends TestCase {
+
+ protected BetaNodeFieldConstraint getConstraint(String identifier,
+ Operator operator,
+ String fieldName,
+ Class clazz) {
+ FieldExtractor extractor = ClassFieldExtractorCache.getExtractor( clazz,
+ fieldName,
+ getClass().getClassLoader() );
+ Declaration declaration = new Declaration( identifier,
+ extractor,
+ new Pattern( 0,
+ new ClassObjectType( clazz ) ) );
+ Evaluator evaluator = StringFactory.getInstance().getEvaluator( operator );
+ return new VariableConstraint( extractor,
+ declaration,
+ evaluator );
+ }
+
+
+ protected void checkBetaConstraints(VariableConstraint[] constraints, Class cls) {
+ RuleBaseConfiguration config = new RuleBaseConfiguration();
+ int depth = config.getCompositeKeyDepth();
+
+ BetaConstraints betaConstraints = null;
+
+ try {
+ betaConstraints = ( BetaConstraints ) cls.getConstructor( new Class[] { BetaNodeFieldConstraint[].class, RuleBaseConfiguration.class } ).newInstance( new Object[] { constraints, config } );
+ } catch ( Exception e ) {
+ throw new RuntimeException( "could not invoke constructor for " + cls.getName() );
+ }
+
+ //BetaConstraints betaConstraints = new DefaultBetaConstraints(constraints, config );
+
+ constraints = convertToConstraints( betaConstraints.getConstraints() );
+
+ List list = new ArrayList();
+
+ // get indexed positions
+ for ( int i = 0; i < constraints.length && list.size() < depth; i++ ) {
+ if ( constraints[i].getEvaluator().getOperator() == Operator.EQUAL ) {
+ list.add( new Integer(i) );
+ }
+ }
+
+ // convert to array
+ int[] indexedPositions = new int[ list.size() ];
+ for ( int i = 0; i < list.size(); i++ ) {
+ indexedPositions[i] = i;
+ }
+
+ assertEquals( ( indexedPositions.length > 0 ), betaConstraints.isIndexed() );
+ assertEquals(indexedPositions.length, betaConstraints.getIndexCount() );
+ BetaMemory betaMemory = betaConstraints.createBetaMemory( config );
+
+ if ( indexedPositions.length > 0 ) {
+ TupleIndexHashTable tupleHashTable = ( TupleIndexHashTable ) betaMemory.getTupleMemory();
+ assertTrue( tupleHashTable.isIndexed() );
+ Index index = tupleHashTable.getIndex();
+
+ for ( int i = 0; i < indexedPositions.length; i++ ) {
+ checkSameConstraintForIndex( constraints[indexedPositions[i]], index.getFieldIndex(i) );
+ }
+
+ FactHandleIndexHashTable factHashTable = ( FactHandleIndexHashTable ) betaMemory.getFactHandleMemory();
+ assertTrue( factHashTable.isIndexed() );
+ index = factHashTable.getIndex();
+
+ for ( int i = 0; i < indexedPositions.length; i++ ) {
+ checkSameConstraintForIndex( constraints[indexedPositions[i]], index.getFieldIndex(i) );
+ }
+ } else {
+ TupleHashTable tupleHashTable = ( TupleHashTable ) betaMemory.getTupleMemory();
+ assertFalse( tupleHashTable.isIndexed() );
+
+ FactHashTable factHashTable = ( FactHashTable ) betaMemory.getFactHandleMemory();
+ assertFalse( factHashTable.isIndexed() );
+ }
+ }
+
+
+ protected void checkSameConstraintForIndex(VariableConstraint constraint, FieldIndex fieldIndex) {
+ assertSame( constraint.getRequiredDeclarations()[0], fieldIndex.getDeclaration() );
+ assertSame( constraint.getEvaluator(), fieldIndex.getEvaluator() );
+ assertSame( constraint.getFieldExtractor(), fieldIndex.getExtractor() );
+ }
+
+ protected VariableConstraint[] convertToConstraints(LinkedList list) {
+ final VariableConstraint[] array = new VariableConstraint[list.size()];
+ int i = 0;
+ for ( LinkedListEntry entry = (LinkedListEntry) list.getFirst(); entry != null; entry = (LinkedListEntry) entry.getNext() ) {
+ array[i++] = (VariableConstraint) entry.getObject();
+ }
+ return array;
+ }
+}
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/common/DefaultBetaConstraintsTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/common/DefaultBetaConstraintsTest.java 2007-08-21 00:51:41 UTC (rev 14396)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/common/DefaultBetaConstraintsTest.java 2007-08-21 02:14:51 UTC (rev 14397)
@@ -1,101 +1,69 @@
package org.drools.common;
-import java.util.ArrayList;
-import java.util.List;
-
import org.drools.Cheese;
-import org.drools.Person;
-import org.drools.RuleBaseConfiguration;
-import org.drools.RuleBaseFactory;
-import org.drools.base.ClassFieldExtractor;
-import org.drools.base.ClassFieldExtractorCache;
-import org.drools.base.ClassObjectType;
-import org.drools.base.FieldFactory;
-import org.drools.base.ValueType;
import org.drools.base.evaluators.Operator;
-import org.drools.base.evaluators.StringFactory;
-import org.drools.reteoo.BetaMemory;
-import org.drools.reteoo.ReteooRuleBase;
-import org.drools.rule.Declaration;
-import org.drools.rule.LiteralConstraint;
-import org.drools.rule.Pattern;
import org.drools.rule.VariableConstraint;
-import org.drools.spi.BetaNodeFieldConstraint;
-import org.drools.spi.Evaluator;
-import org.drools.spi.FieldExtractor;
-import org.drools.spi.FieldValue;
-import org.drools.util.FactHandleIndexHashTable;
-import org.drools.util.FactHashTable;
-import org.drools.util.TupleHashTable;
-import org.drools.util.TupleIndexHashTable;
-import org.drools.util.AbstractHashTable.DoubleCompositeIndex;
-import org.drools.util.AbstractHashTable.FieldIndex;
-import org.drools.util.AbstractHashTable.Index;
-import org.drools.util.AbstractHashTable.SingleIndex;
-import org.drools.util.AbstractHashTable.TripleCompositeIndex;
-import junit.framework.TestCase;
-
-public class DefaultBetaConstraintsTest extends TestCase {
+public class DefaultBetaConstraintsTest extends BaseBetaConstraintsTest {
public void testNoIndexConstraints() {
VariableConstraint constraint0 = ( VariableConstraint ) getConstraint( "cheeseType0", Operator.NOT_EQUAL, "type", Cheese.class );
VariableConstraint[] constraints = new VariableConstraint[] { constraint0 };
- checkBetaConstraints( constraints );
+ checkBetaConstraints( constraints, DefaultBetaConstraints.class );
VariableConstraint constraint1 = ( VariableConstraint ) getConstraint( "cheeseType1", Operator.NOT_EQUAL, "type", Cheese.class );
constraints = new VariableConstraint[] { constraint0, constraint1 };
- checkBetaConstraints( constraints );
+ checkBetaConstraints( constraints, DefaultBetaConstraints.class );
VariableConstraint constraint2 = ( VariableConstraint ) getConstraint( "cheeseType2", Operator.NOT_EQUAL, "type", Cheese.class );
constraints = new VariableConstraint[] { constraint0, constraint1, constraint2 };
- checkBetaConstraints( constraints );
+ checkBetaConstraints( constraints, DefaultBetaConstraints.class );
VariableConstraint constraint3 = ( VariableConstraint ) getConstraint( "cheeseType3", Operator.NOT_EQUAL, "type", Cheese.class );
constraints = new VariableConstraint[] { constraint0, constraint1, constraint2, constraint3 };
- checkBetaConstraints( constraints );
+ checkBetaConstraints( constraints, DefaultBetaConstraints.class );
VariableConstraint constraint4 = ( VariableConstraint ) getConstraint( "cheeseType4", Operator.NOT_EQUAL, "type", Cheese.class );
constraints = new VariableConstraint[] { constraint0, constraint1, constraint2, constraint3, constraint4 };
- checkBetaConstraints( constraints );
+ checkBetaConstraints( constraints, DefaultBetaConstraints.class );
VariableConstraint constraint5 = ( VariableConstraint ) getConstraint( "cheeseType5", Operator.NOT_EQUAL, "type", Cheese.class );
constraints = new VariableConstraint[] { constraint0, constraint1, constraint2, constraint3,constraint5 };
- checkBetaConstraints( constraints );
+ checkBetaConstraints( constraints, DefaultBetaConstraints.class );
VariableConstraint constraint6 = ( VariableConstraint ) getConstraint( "cheeseType6", Operator.NOT_EQUAL, "type", Cheese.class );
constraints = new VariableConstraint[] { constraint0, constraint1, constraint2, constraint3, constraint4, constraint5, constraint6 };
- checkBetaConstraints( constraints );
+ checkBetaConstraints( constraints, DefaultBetaConstraints.class );
}
public void testIndexedConstraint() {
VariableConstraint constraint0 = ( VariableConstraint ) getConstraint( "cheeseType0", Operator.EQUAL, "type", Cheese.class );
VariableConstraint[] constraints = new VariableConstraint[] { constraint0 };
- checkBetaConstraints( constraints );
+ checkBetaConstraints( constraints, DefaultBetaConstraints.class );
VariableConstraint constraint1 = ( VariableConstraint ) getConstraint( "cheeseType1", Operator.EQUAL, "type", Cheese.class );
constraints = new VariableConstraint[] { constraint0, constraint1 };
- checkBetaConstraints( constraints );
+ checkBetaConstraints( constraints, DefaultBetaConstraints.class );
VariableConstraint constraint2 = ( VariableConstraint ) getConstraint( "cheeseType2", Operator.EQUAL, "type", Cheese.class );
constraints = new VariableConstraint[] { constraint0, constraint1, constraint2 };
- checkBetaConstraints( constraints );
+ checkBetaConstraints( constraints, DefaultBetaConstraints.class );
VariableConstraint constraint3 = ( VariableConstraint ) getConstraint( "cheeseType3", Operator.EQUAL, "type", Cheese.class );
constraints = new VariableConstraint[] { constraint0, constraint1, constraint2, constraint3 };
- checkBetaConstraints( constraints );
+ checkBetaConstraints( constraints, DefaultBetaConstraints.class );
VariableConstraint constraint4 = ( VariableConstraint ) getConstraint( "cheeseType4", Operator.EQUAL, "type", Cheese.class );
constraints = new VariableConstraint[] { constraint0, constraint1, constraint2, constraint3, constraint4 };
- checkBetaConstraints( constraints );
+ checkBetaConstraints( constraints, DefaultBetaConstraints.class );
VariableConstraint constraint5 = ( VariableConstraint ) getConstraint( "cheeseType5", Operator.EQUAL, "type", Cheese.class );
constraints = new VariableConstraint[] { constraint0, constraint1, constraint2, constraint3, constraint4, constraint5 };
- checkBetaConstraints( constraints );
+ checkBetaConstraints( constraints, DefaultBetaConstraints.class );
VariableConstraint constraint6 = ( VariableConstraint ) getConstraint( "cheeseType6", Operator.EQUAL, "type", Cheese.class );
constraints = new VariableConstraint[] { constraint0, constraint1, constraint2, constraint3, constraint4, constraint5, constraint6 };
- checkBetaConstraints( constraints );
+ checkBetaConstraints( constraints, DefaultBetaConstraints.class );
}
@@ -107,7 +75,7 @@
VariableConstraint constraint4 = ( VariableConstraint ) getConstraint( "cheeseType5", Operator.NOT_EQUAL, "type", Cheese.class );
VariableConstraint[] constraints = new VariableConstraint[] { constraint0, constraint1, constraint2, constraint3, constraint4 };
- checkBetaConstraints( constraints );
+ checkBetaConstraints( constraints, DefaultBetaConstraints.class );
}
public void testSingleIndexNotFirst() {
@@ -119,7 +87,7 @@
VariableConstraint[] constraints = new VariableConstraint[] { constraint0, constraint1, constraint2, constraint3, constraint4 };
- checkBetaConstraints( constraints );
+ checkBetaConstraints( constraints, DefaultBetaConstraints.class );
}
public void testDoubleIndex() {
@@ -131,7 +99,7 @@
VariableConstraint[] constraints = new VariableConstraint[] { constraint0, constraint1, constraint2, constraint3, constraint4 };
- checkBetaConstraints( constraints );
+ checkBetaConstraints( constraints, DefaultBetaConstraints.class );
}
public void testDoubleIndexNotFirst() {
@@ -143,7 +111,7 @@
VariableConstraint[] constraints = new VariableConstraint[] { constraint0, constraint1, constraint2, constraint3, constraint4 };
- checkBetaConstraints( constraints );
+ checkBetaConstraints( constraints, DefaultBetaConstraints.class );
}
@@ -156,7 +124,7 @@
VariableConstraint[] constraints = new VariableConstraint[] { constraint0, constraint1, constraint2, constraint3, constraint4 };
- checkBetaConstraints( constraints );
+ checkBetaConstraints( constraints, DefaultBetaConstraints.class );
}
public void testTripleIndexNotFirst() {
@@ -168,82 +136,7 @@
VariableConstraint[] constraints = new VariableConstraint[] { constraint0, constraint1, constraint2, constraint3, constraint4 };
- checkBetaConstraints( constraints );
+ checkBetaConstraints( constraints, DefaultBetaConstraints.class );
}
- private BetaNodeFieldConstraint getConstraint(String identifier,
- Operator operator,
- String fieldName,
- Class clazz) {
- FieldExtractor extractor = ClassFieldExtractorCache.getExtractor( clazz,
- fieldName,
- getClass().getClassLoader() );
- Declaration declaration = new Declaration( identifier,
- extractor,
- new Pattern( 0,
- new ClassObjectType( clazz ) ) );
- Evaluator evaluator = StringFactory.getInstance().getEvaluator( operator );
- return new VariableConstraint( extractor,
- declaration,
- evaluator );
- }
-
-
- private void checkBetaConstraints(VariableConstraint[] constraints) {
- RuleBaseConfiguration config = new RuleBaseConfiguration();
- int depth = config.getCompositeKeyDepth();
-
- List list = new ArrayList();
-
- // get indexed positions
- for ( int i = 0; i < constraints.length && list.size() < depth; i++ ) {
- if ( constraints[i].getEvaluator().getOperator() == Operator.EQUAL ) {
- list.add( new Integer(i) );
- }
- }
-
- // convert to array
- int[] indexedPositions = new int[ list.size() ];
- for ( int i = 0; i < list.size(); i++ ) {
- indexedPositions[i] = ( (Integer)list.get( i ) ).intValue();
- }
-
- DefaultBetaConstraints betaConstraints = new DefaultBetaConstraints(constraints, config );
-
- assertEquals( ( indexedPositions.length > 0 ), betaConstraints.isIndexed() );
- assertEquals(indexedPositions.length-1, betaConstraints.getIndexCount() );
- BetaMemory betaMemory = betaConstraints.createBetaMemory( config );
-
- // test tuple side
- if ( indexedPositions.length > 0 ) {
- TupleIndexHashTable tupleHashTable = ( TupleIndexHashTable ) betaMemory.getTupleMemory();
- assertTrue( tupleHashTable.isIndexed() );
- Index index = tupleHashTable.getIndex();
-
- for ( int i = 0; i < indexedPositions.length; i++ ) {
- checkSameConstraintForIndex( constraints[indexedPositions[i]], index.getFieldIndex(i) );
- }
-
- FactHandleIndexHashTable factHashTable = ( FactHandleIndexHashTable ) betaMemory.getFactHandleMemory();
- assertTrue( factHashTable.isIndexed() );
- index = factHashTable.getIndex();
-
- for ( int i = 0; i < indexedPositions.length; i++ ) {
- checkSameConstraintForIndex( constraints[indexedPositions[i]], index.getFieldIndex(i) );
- }
- } else {
- TupleHashTable tupleHashTable = ( TupleHashTable ) betaMemory.getTupleMemory();
- assertFalse( tupleHashTable.isIndexed() );
-
- FactHashTable factHashTable = ( FactHashTable ) betaMemory.getFactHandleMemory();
- assertFalse( factHashTable.isIndexed() );
- }
- }
-
-
- private void checkSameConstraintForIndex(VariableConstraint constraint, FieldIndex fieldIndex) {
- assertSame( constraint.getRequiredDeclarations()[0], fieldIndex.getDeclaration() );
- assertSame( constraint.getEvaluator(), fieldIndex.getEvaluator() );
- assertSame( constraint.getFieldExtractor(), fieldIndex.getExtractor() );
- }
}
Added: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/common/DoubleBetaConstraintsTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/common/DoubleBetaConstraintsTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/common/DoubleBetaConstraintsTest.java 2007-08-21 02:14:51 UTC (rev 14397)
@@ -0,0 +1,35 @@
+package org.drools.common;
+
+import org.drools.Cheese;
+import org.drools.base.evaluators.Operator;
+import org.drools.rule.VariableConstraint;
+
+public class DoubleBetaConstraintsTest extends BaseBetaConstraintsTest {
+
+ public void testAllNoneIndxed() {
+ VariableConstraint constraint0 = ( VariableConstraint ) getConstraint( "cheeseType0", Operator.NOT_EQUAL, "type", Cheese.class );
+ VariableConstraint constraint1 = ( VariableConstraint ) getConstraint( "cheeseType1", Operator.NOT_EQUAL, "type", Cheese.class );
+ VariableConstraint[] constraints = new VariableConstraint[] { constraint0, constraint1 };
+ checkBetaConstraints( constraints, DoubleBetaConstraints.class );
+ }
+
+ public void testOneIndxed() {
+ VariableConstraint constraint0 = ( VariableConstraint ) getConstraint( "cheeseType0", Operator.EQUAL, "type", Cheese.class );
+ VariableConstraint constraint1 = ( VariableConstraint ) getConstraint( "cheeseType1", Operator.NOT_EQUAL, "type", Cheese.class );
+ VariableConstraint[] constraints = new VariableConstraint[] { constraint0, constraint1 };
+ checkBetaConstraints( constraints, DoubleBetaConstraints.class );
+
+ constraint0 = ( VariableConstraint ) getConstraint( "cheeseType0", Operator.NOT_EQUAL, "type", Cheese.class );
+ constraint1 = ( VariableConstraint ) getConstraint( "cheeseType1", Operator.EQUAL, "type", Cheese.class );
+ constraints = new VariableConstraint[] { constraint0, constraint1 };
+ checkBetaConstraints( constraints, DoubleBetaConstraints.class );
+ }
+
+ public void testTwoIndxed() {
+ VariableConstraint constraint0 = ( VariableConstraint ) getConstraint( "cheeseType0", Operator.EQUAL, "type", Cheese.class );
+ VariableConstraint constraint1 = ( VariableConstraint ) getConstraint( "cheeseType1", Operator.EQUAL, "type", Cheese.class );
+ VariableConstraint[] constraints = new VariableConstraint[] { constraint0, constraint1 };
+ checkBetaConstraints( constraints, DoubleBetaConstraints.class );
+ }
+
+}
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/common/QuadroupleBetaConstraintsTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/common/QuadroupleBetaConstraintsTest.java 2007-08-21 00:51:41 UTC (rev 14396)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/common/QuadroupleBetaConstraintsTest.java 2007-08-21 02:14:51 UTC (rev 14397)
@@ -3,83 +3,136 @@
*/
package org.drools.common;
-import org.drools.Person;
-import org.drools.RuleBaseConfiguration;
-import org.drools.base.ClassFieldExtractorCache;
-import org.drools.base.ClassFieldExtractorFactory;
-import org.drools.base.ClassObjectType;
+import org.drools.Cheese;
import org.drools.base.evaluators.Operator;
-import org.drools.base.evaluators.StringFactory;
-import org.drools.rule.Pattern;
-import org.drools.rule.Declaration;
import org.drools.rule.VariableConstraint;
-import org.drools.spi.BetaNodeFieldConstraint;
-import org.drools.spi.Evaluator;
-import org.drools.spi.FieldExtractor;
-import junit.framework.TestCase;
-
/**
* @author etirelli
*
*/
-public class QuadroupleBetaConstraintsTest extends TestCase {
+public class QuadroupleBetaConstraintsTest extends BaseBetaConstraintsTest {
- private RuleBaseConfiguration conf;
- private BetaNodeFieldConstraint[] constraints;
+ public void testNoneIndxed() {
+ VariableConstraint constraint0 = ( VariableConstraint ) getConstraint( "cheeseType0", Operator.NOT_EQUAL, "type", Cheese.class );
+ VariableConstraint constraint1 = ( VariableConstraint ) getConstraint( "cheeseType1", Operator.NOT_EQUAL, "type", Cheese.class );
+ VariableConstraint constraint3 = ( VariableConstraint ) getConstraint( "cheeseType2", Operator.NOT_EQUAL, "type", Cheese.class );
+ VariableConstraint constraint4 = ( VariableConstraint ) getConstraint( "cheeseType3", Operator.NOT_EQUAL, "type", Cheese.class );
+ VariableConstraint[] constraints = new VariableConstraint[] { constraint0, constraint1, constraint3, constraint4 };
+ checkBetaConstraints( constraints, QuadroupleBetaConstraints.class );
+ }
+
+ public void testOneIndxed() {
+ VariableConstraint constraint0 = ( VariableConstraint ) getConstraint( "cheeseType0", Operator.EQUAL, "type", Cheese.class );
+ VariableConstraint constraint1 = ( VariableConstraint ) getConstraint( "cheeseType1", Operator.NOT_EQUAL, "type", Cheese.class );
+ VariableConstraint constraint3 = ( VariableConstraint ) getConstraint( "cheeseType2", Operator.NOT_EQUAL, "type", Cheese.class );
+ VariableConstraint constraint4 = ( VariableConstraint ) getConstraint( "cheeseType3", Operator.NOT_EQUAL, "type", Cheese.class );
+ VariableConstraint[] constraints = new VariableConstraint[] { constraint0, constraint1, constraint3, constraint4 };
+ checkBetaConstraints( constraints, QuadroupleBetaConstraints.class );
+
+ constraint0 = ( VariableConstraint ) getConstraint( "cheeseType0", Operator.NOT_EQUAL, "type", Cheese.class );
+ constraint1 = ( VariableConstraint ) getConstraint( "cheeseType1", Operator.EQUAL, "type", Cheese.class );
+ constraint3 = ( VariableConstraint ) getConstraint( "cheeseType2", Operator.NOT_EQUAL, "type", Cheese.class );
+ constraint4 = ( VariableConstraint ) getConstraint( "cheeseType3", Operator.NOT_EQUAL, "type", Cheese.class );
+ constraints = new VariableConstraint[] { constraint0, constraint1, constraint3, constraint4 };
+ checkBetaConstraints( constraints, QuadroupleBetaConstraints.class );
+
+ constraint0 = ( VariableConstraint ) getConstraint( "cheeseType0", Operator.NOT_EQUAL, "type", Cheese.class );
+ constraint1 = ( VariableConstraint ) getConstraint( "cheeseType1", Operator.NOT_EQUAL, "type", Cheese.class );
+ constraint3 = ( VariableConstraint ) getConstraint( "cheeseType2", Operator.EQUAL, "type", Cheese.class );
+ constraint4 = ( VariableConstraint ) getConstraint( "cheeseType3", Operator.NOT_EQUAL, "type", Cheese.class );
+ constraints = new VariableConstraint[] { constraint0, constraint1, constraint3, constraint4 };
+ checkBetaConstraints( constraints, QuadroupleBetaConstraints.class );
+
+ constraint0 = ( VariableConstraint ) getConstraint( "cheeseType0", Operator.NOT_EQUAL, "type", Cheese.class );
+ constraint1 = ( VariableConstraint ) getConstraint( "cheeseType1", Operator.NOT_EQUAL, "type", Cheese.class );
+ constraint3 = ( VariableConstraint ) getConstraint( "cheeseType2", Operator.NOT_EQUAL, "type", Cheese.class );
+ constraint4 = ( VariableConstraint ) getConstraint( "cheeseType3", Operator.EQUAL, "type", Cheese.class );
+ constraints = new VariableConstraint[] { constraint0, constraint1, constraint3, constraint4 };
+ checkBetaConstraints( constraints, QuadroupleBetaConstraints.class );
+ }
- /* (non-Javadoc)
- * @see junit.framework.TestCase#setUp()
- */
- protected void setUp() throws Exception {
- conf = new RuleBaseConfiguration();
+ public void testTwoIndxed() {
+ VariableConstraint constraint0 = ( VariableConstraint ) getConstraint( "cheeseType0", Operator.EQUAL, "type", Cheese.class );
+ VariableConstraint constraint1 = ( VariableConstraint ) getConstraint( "cheeseType1", Operator.EQUAL, "type", Cheese.class );
+ VariableConstraint constraint3 = ( VariableConstraint ) getConstraint( "cheeseType2", Operator.NOT_EQUAL, "type", Cheese.class );
+ VariableConstraint constraint4 = ( VariableConstraint ) getConstraint( "cheeseType3", Operator.NOT_EQUAL, "type", Cheese.class );
+ VariableConstraint[] constraints = new VariableConstraint[] { constraint0, constraint1, constraint3, constraint4 };
+ checkBetaConstraints( constraints, QuadroupleBetaConstraints.class );
+
+ constraint0 = ( VariableConstraint ) getConstraint( "cheeseType0", Operator.EQUAL, "type", Cheese.class );
+ constraint1 = ( VariableConstraint ) getConstraint( "cheeseType1", Operator.NOT_EQUAL, "type", Cheese.class );
+ constraint3 = ( VariableConstraint ) getConstraint( "cheeseType2", Operator.EQUAL, "type", Cheese.class );
+ constraint4 = ( VariableConstraint ) getConstraint( "cheeseType3", Operator.NOT_EQUAL, "type", Cheese.class );
+ constraints = new VariableConstraint[] { constraint0, constraint1, constraint3, constraint4 };
+ checkBetaConstraints( constraints, QuadroupleBetaConstraints.class );
+
+ constraint0 = ( VariableConstraint ) getConstraint( "cheeseType0", Operator.EQUAL, "type", Cheese.class );
+ constraint1 = ( VariableConstraint ) getConstraint( "cheeseType1", Operator.NOT_EQUAL, "type", Cheese.class );
+ constraint3 = ( VariableConstraint ) getConstraint( "cheeseType2", Operator.NOT_EQUAL, "type", Cheese.class );
+ constraint4 = ( VariableConstraint ) getConstraint( "cheeseType3", Operator.EQUAL, "type", Cheese.class );
+ constraints = new VariableConstraint[] { constraint0, constraint1, constraint3, constraint4 };
+ checkBetaConstraints( constraints, QuadroupleBetaConstraints.class );
+
+ constraint0 = ( VariableConstraint ) getConstraint( "cheeseType0", Operator.NOT_EQUAL, "type", Cheese.class );
+ constraint1 = ( VariableConstraint ) getConstraint( "cheeseType1", Operator.EQUAL, "type", Cheese.class );
+ constraint3 = ( VariableConstraint ) getConstraint( "cheeseType2", Operator.EQUAL, "type", Cheese.class );
+ constraint4 = ( VariableConstraint ) getConstraint( "cheeseType3", Operator.NOT_EQUAL, "type", Cheese.class );
+ constraints = new VariableConstraint[] { constraint0, constraint1, constraint3, constraint4 };
+ checkBetaConstraints( constraints, QuadroupleBetaConstraints.class );
+
+ constraint0 = ( VariableConstraint ) getConstraint( "cheeseType0", Operator.NOT_EQUAL, "type", Cheese.class );
+ constraint1 = ( VariableConstraint ) getConstraint( "cheeseType1", Operator.EQUAL, "type", Cheese.class );
+ constraint3 = ( VariableConstraint ) getConstraint( "cheeseType2", Operator.NOT_EQUAL, "type", Cheese.class );
+ constraint4 = ( VariableConstraint ) getConstraint( "cheeseType3", Operator.EQUAL, "type", Cheese.class );
+ constraints = new VariableConstraint[] { constraint0, constraint1, constraint3, constraint4 };
+ checkBetaConstraints( constraints, QuadroupleBetaConstraints.class );
+
+ constraint0 = ( VariableConstraint ) getConstraint( "cheeseType0", Operator.NOT_EQUAL, "type", Cheese.class );
+ constraint1 = ( VariableConstraint ) getConstraint( "cheeseType1", Operator.NOT_EQUAL, "type", Cheese.class );
+ constraint3 = ( VariableConstraint ) getConstraint( "cheeseType2", Operator.EQUAL, "type", Cheese.class );
+ constraint4 = ( VariableConstraint ) getConstraint( "cheeseType3", Operator.EQUAL, "type", Cheese.class );
+ constraints = new VariableConstraint[] { constraint0, constraint1, constraint3, constraint4 };
+ checkBetaConstraints( constraints, QuadroupleBetaConstraints.class );
+ }
- constraints = new BetaNodeFieldConstraint[4];
- Class clazz = Person.class;
- constraints[0] = getConstraint( "street",
- clazz );
- constraints[1] = getConstraint( "city",
- clazz );
- constraints[2] = getConstraint( "state",
- clazz );
- constraints[3] = getConstraint( "country",
- clazz );
- super.setUp();
- }
+ public void testThreeIndxed() {
+ VariableConstraint constraint0 = ( VariableConstraint ) getConstraint( "cheeseType0", Operator.EQUAL, "type", Cheese.class );
+ VariableConstraint constraint1 = ( VariableConstraint ) getConstraint( "cheeseType1", Operator.EQUAL, "type", Cheese.class );
+ VariableConstraint constraint3 = ( VariableConstraint ) getConstraint( "cheeseType2", Operator.EQUAL, "type", Cheese.class );
+ VariableConstraint constraint4 = ( VariableConstraint ) getConstraint( "cheeseType3", Operator.NOT_EQUAL, "type", Cheese.class );
+ VariableConstraint[] constraints = new VariableConstraint[] { constraint0, constraint1, constraint3, constraint4 };
+ checkBetaConstraints( constraints, QuadroupleBetaConstraints.class );
+
+ constraint0 = ( VariableConstraint ) getConstraint( "cheeseType0", Operator.EQUAL, "type", Cheese.class );
+ constraint1 = ( VariableConstraint ) getConstraint( "cheeseType1", Operator.EQUAL, "type", Cheese.class );
+ constraint3 = ( VariableConstraint ) getConstraint( "cheeseType2", Operator.NOT_EQUAL, "type", Cheese.class );
+ constraint4 = ( VariableConstraint ) getConstraint( "cheeseType3", Operator.EQUAL, "type", Cheese.class );
+ constraints = new VariableConstraint[] { constraint0, constraint1, constraint3, constraint4 };
+ checkBetaConstraints( constraints, QuadroupleBetaConstraints.class );
+
+ constraint0 = ( VariableConstraint ) getConstraint( "cheeseType0", Operator.EQUAL, "type", Cheese.class );
+ constraint1 = ( VariableConstraint ) getConstraint( "cheeseType1", Operator.NOT_EQUAL, "type", Cheese.class );
+ constraint3 = ( VariableConstraint ) getConstraint( "cheeseType2", Operator.EQUAL, "type", Cheese.class );
+ constraint4 = ( VariableConstraint ) getConstraint( "cheeseType3", Operator.EQUAL, "type", Cheese.class );
+ constraints = new VariableConstraint[] { constraint0, constraint1, constraint3, constraint4 };
+ checkBetaConstraints( constraints, QuadroupleBetaConstraints.class );
+
+ constraint0 = ( VariableConstraint ) getConstraint( "cheeseType0", Operator.NOT_EQUAL, "type", Cheese.class );
+ constraint1 = ( VariableConstraint ) getConstraint( "cheeseType1", Operator.EQUAL, "type", Cheese.class );
+ constraint3 = ( VariableConstraint ) getConstraint( "cheeseType2", Operator.EQUAL, "type", Cheese.class );
+ constraint4 = ( VariableConstraint ) getConstraint( "cheeseType3", Operator.EQUAL, "type", Cheese.class );
+ constraints = new VariableConstraint[] { constraint0, constraint1, constraint3, constraint4 };
+ checkBetaConstraints( constraints, QuadroupleBetaConstraints.class );
+ }
+
+ public void testFourIndxed() {
+ VariableConstraint constraint0 = ( VariableConstraint ) getConstraint( "cheeseType0", Operator.EQUAL, "type", Cheese.class );
+ VariableConstraint constraint1 = ( VariableConstraint ) getConstraint( "cheeseType1", Operator.EQUAL, "type", Cheese.class );
+ VariableConstraint constraint3 = ( VariableConstraint ) getConstraint( "cheeseType2", Operator.EQUAL, "type", Cheese.class );
+ VariableConstraint constraint4 = ( VariableConstraint ) getConstraint( "cheeseType3", Operator.EQUAL, "type", Cheese.class );
+ VariableConstraint[] constraints = new VariableConstraint[] { constraint0, constraint1, constraint3, constraint4 };
+ checkBetaConstraints( constraints, QuadroupleBetaConstraints.class );
+ }
- private BetaNodeFieldConstraint getConstraint(String fieldName,
- Class clazz) {
- FieldExtractor extractor = ClassFieldExtractorCache.getExtractor( clazz,
- fieldName,
- getClass().getClassLoader() );
- Declaration declaration = new Declaration( fieldName,
- extractor,
- new Pattern( 0,
- new ClassObjectType( clazz ) ) );
- Evaluator evaluator = StringFactory.getInstance().getEvaluator( Operator.EQUAL );
- return new VariableConstraint( extractor,
- declaration,
- evaluator );
- }
-
- /* (non-Javadoc)
- * @see junit.framework.TestCase#tearDown()
- */
- protected void tearDown() throws Exception {
- super.tearDown();
- }
-
- /**
- * Test method for {@link org.drools.common.QuadroupleBetaConstraints#QuadroupleBetaConstraints(org.drools.spi.BetaNodeFieldConstraint[], org.drools.RuleBaseConfiguration)}.
- */
- public void testQuadroupleBetaConstraints() {
- try {
- QuadroupleBetaConstraints qbc = new QuadroupleBetaConstraints( constraints,
- conf );
- } catch ( Exception e ) {
- fail( "Should not raise any exception: " + e.getMessage() );
- }
-
- }
-
}
Added: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/common/SingleBetaConstraintsTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/common/SingleBetaConstraintsTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/common/SingleBetaConstraintsTest.java 2007-08-21 02:14:51 UTC (rev 14397)
@@ -0,0 +1,21 @@
+package org.drools.common;
+
+import org.drools.Cheese;
+import org.drools.base.evaluators.Operator;
+import org.drools.rule.VariableConstraint;
+
+public class SingleBetaConstraintsTest extends BaseBetaConstraintsTest {
+
+ public void testIndxed() {
+ VariableConstraint constraint0 = ( VariableConstraint ) getConstraint( "cheeseType0", Operator.EQUAL, "type", Cheese.class );
+ VariableConstraint[] constraints = new VariableConstraint[] { constraint0 };
+ checkBetaConstraints( constraints, SingleBetaConstraints.class );
+ }
+
+ public void testNotIndxed() {
+ VariableConstraint constraint0 = ( VariableConstraint ) getConstraint( "cheeseType0", Operator.NOT_EQUAL, "type", Cheese.class );
+ VariableConstraint[] constraints = new VariableConstraint[] { constraint0 };
+ checkBetaConstraints( constraints, SingleBetaConstraints.class );
+ }
+
+}
Added: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/common/TripleBetaConstraintsTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/common/TripleBetaConstraintsTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/common/TripleBetaConstraintsTest.java 2007-08-21 02:14:51 UTC (rev 14397)
@@ -0,0 +1,86 @@
+package org.drools.common;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.drools.Cheese;
+import org.drools.RuleBaseConfiguration;
+import org.drools.base.ClassFieldExtractorCache;
+import org.drools.base.ClassObjectType;
+import org.drools.base.evaluators.Operator;
+import org.drools.base.evaluators.StringFactory;
+import org.drools.reteoo.BetaMemory;
+import org.drools.rule.Declaration;
+import org.drools.rule.Pattern;
+import org.drools.rule.VariableConstraint;
+import org.drools.spi.BetaNodeFieldConstraint;
+import org.drools.spi.Evaluator;
+import org.drools.spi.FieldExtractor;
+import org.drools.util.FactHandleIndexHashTable;
+import org.drools.util.FactHashTable;
+import org.drools.util.TupleHashTable;
+import org.drools.util.TupleIndexHashTable;
+import org.drools.util.AbstractHashTable.FieldIndex;
+import org.drools.util.AbstractHashTable.Index;
+
+import junit.framework.TestCase;
+
+public class TripleBetaConstraintsTest extends BaseBetaConstraintsTest {
+
+
+ public void testNoneIndxed() {
+ VariableConstraint constraint0 = ( VariableConstraint ) getConstraint( "cheeseType0", Operator.NOT_EQUAL, "type", Cheese.class );
+ VariableConstraint constraint1 = ( VariableConstraint ) getConstraint( "cheeseType1", Operator.NOT_EQUAL, "type", Cheese.class );
+ VariableConstraint constraint3 = ( VariableConstraint ) getConstraint( "cheeseType2", Operator.NOT_EQUAL, "type", Cheese.class );
+ VariableConstraint[] constraints = new VariableConstraint[] { constraint0, constraint1, constraint3 };
+ checkBetaConstraints( constraints, TripleBetaConstraints.class );
+ }
+
+ public void testOneIndxed() {
+ VariableConstraint constraint0 = ( VariableConstraint ) getConstraint( "cheeseType0", Operator.EQUAL, "type", Cheese.class );
+ VariableConstraint constraint1 = ( VariableConstraint ) getConstraint( "cheeseType1", Operator.NOT_EQUAL, "type", Cheese.class );
+ VariableConstraint constraint3 = ( VariableConstraint ) getConstraint( "cheeseType2", Operator.NOT_EQUAL, "type", Cheese.class );
+ VariableConstraint[] constraints = new VariableConstraint[] { constraint0, constraint1, constraint3 };
+ checkBetaConstraints( constraints, TripleBetaConstraints.class );
+
+ constraint0 = ( VariableConstraint ) getConstraint( "cheeseType0", Operator.NOT_EQUAL, "type", Cheese.class );
+ constraint1 = ( VariableConstraint ) getConstraint( "cheeseType1", Operator.EQUAL, "type", Cheese.class );
+ constraint3 = ( VariableConstraint ) getConstraint( "cheeseType2", Operator.NOT_EQUAL, "type", Cheese.class );
+ constraints = new VariableConstraint[] { constraint0, constraint1, constraint3 };
+ checkBetaConstraints( constraints, TripleBetaConstraints.class );
+
+ constraint0 = ( VariableConstraint ) getConstraint( "cheeseType0", Operator.NOT_EQUAL, "type", Cheese.class );
+ constraint1 = ( VariableConstraint ) getConstraint( "cheeseType1", Operator.NOT_EQUAL, "type", Cheese.class );
+ constraint3 = ( VariableConstraint ) getConstraint( "cheeseType2", Operator.EQUAL, "type", Cheese.class );
+ constraints = new VariableConstraint[] { constraint0, constraint1, constraint3 };
+ checkBetaConstraints( constraints, TripleBetaConstraints.class );
+ }
+
+ public void testTwoIndxed() {
+ VariableConstraint constraint0 = ( VariableConstraint ) getConstraint( "cheeseType0", Operator.EQUAL, "type", Cheese.class );
+ VariableConstraint constraint1 = ( VariableConstraint ) getConstraint( "cheeseType1", Operator.EQUAL, "type", Cheese.class );
+ VariableConstraint constraint3 = ( VariableConstraint ) getConstraint( "cheeseType2", Operator.NOT_EQUAL, "type", Cheese.class );
+ VariableConstraint[] constraints = new VariableConstraint[] { constraint0, constraint1, constraint3 };
+ checkBetaConstraints( constraints, TripleBetaConstraints.class );
+
+ constraint0 = ( VariableConstraint ) getConstraint( "cheeseType0", Operator.EQUAL, "type", Cheese.class );
+ constraint1 = ( VariableConstraint ) getConstraint( "cheeseType1", Operator.NOT_EQUAL, "type", Cheese.class );
+ constraint3 = ( VariableConstraint ) getConstraint( "cheeseType2", Operator.EQUAL, "type", Cheese.class );
+ constraints = new VariableConstraint[] { constraint0, constraint1, constraint3 };
+ checkBetaConstraints( constraints, TripleBetaConstraints.class );
+
+ constraint0 = ( VariableConstraint ) getConstraint( "cheeseType0", Operator.NOT_EQUAL, "type", Cheese.class );
+ constraint1 = ( VariableConstraint ) getConstraint( "cheeseType1", Operator.EQUAL, "type", Cheese.class );
+ constraint3 = ( VariableConstraint ) getConstraint( "cheeseType2", Operator.EQUAL, "type", Cheese.class );
+ constraints = new VariableConstraint[] { constraint0, constraint1, constraint3 };
+ checkBetaConstraints( constraints, TripleBetaConstraints.class );
+ }
+
+ public void testThreeIndxed() {
+ VariableConstraint constraint0 = ( VariableConstraint ) getConstraint( "cheeseType0", Operator.EQUAL, "type", Cheese.class );
+ VariableConstraint constraint1 = ( VariableConstraint ) getConstraint( "cheeseType1", Operator.EQUAL, "type", Cheese.class );
+ VariableConstraint constraint3 = ( VariableConstraint ) getConstraint( "cheeseType2", Operator.EQUAL, "type", Cheese.class );
+ VariableConstraint[] constraints = new VariableConstraint[] { constraint0, constraint1, constraint3 };
+ checkBetaConstraints( constraints, TripleBetaConstraints.class );
+ }
+}
More information about the jboss-svn-commits
mailing list