[jboss-svn-commits] JBL Code SVN: r5649 - in labs/jbossrules/trunk/drools-core/src: main/java/org/drools/base main/java/org/drools/base/evaluators test/java/org/drools/base test/java/org/drools/facttemplates
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Aug 9 12:45:18 EDT 2006
Author: michael.neale at jboss.com
Date: 2006-08-09 12:45:05 -0400 (Wed, 09 Aug 2006)
New Revision: 5649
Added:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/BigDecimalFactory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/BigIntegerFactory.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/FieldFactoryTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/facttemplates/FactTemplateFieldExtractorTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/facttemplates/FactTemplateTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/facttemplates/FieldTemplateTest.java
Removed:
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/facttemplates/TestFactTemplate.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/facttemplates/TestFactTemplateFieldExtractor.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/facttemplates/TestFieldTemplate.java
Modified:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/FieldFactory.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ValueType.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/EvaluatorFactoryTest.java
Log:
JBRULES-392 - BigDecimal etc. support
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/FieldFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/FieldFactory.java 2006-08-09 16:43:13 UTC (rev 5648)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/FieldFactory.java 2006-08-09 16:45:05 UTC (rev 5649)
@@ -16,6 +16,9 @@
* limitations under the License.
*/
+import java.math.BigDecimal;
+import java.math.BigInteger;
+
import org.drools.spi.Evaluator;
import org.drools.spi.FieldValue;
@@ -65,6 +68,10 @@
field = new FieldImpl( value );
} else if ( valueType == ValueType.OBJECT_TYPE ) {
field = new FieldImpl( value );
+ } else if ( valueType == ValueType.BIG_DECIMAL_TYPE ) {
+ field = new FieldImpl( new BigDecimal(value) );
+ } else if ( valueType == ValueType.BIG_INTEGER_TYPE ) {
+ field = new FieldImpl( new BigInteger(value) );
}
return field;
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ValueType.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ValueType.java 2006-08-09 16:43:13 UTC (rev 5648)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ValueType.java 2006-08-09 16:45:05 UTC (rev 5649)
@@ -1,10 +1,14 @@
package org.drools.base;
import java.io.Serializable;
+import java.math.BigDecimal;
+import java.math.BigInteger;
import java.util.Date;
import org.drools.RuntimeDroolsException;
import org.drools.base.evaluators.ArrayFactory;
+import org.drools.base.evaluators.BigDecimalFactory;
+import org.drools.base.evaluators.BigIntegerFactory;
import org.drools.base.evaluators.BooleanFactory;
import org.drools.base.evaluators.ByteFactory;
import org.drools.base.evaluators.CharacterFactory;
@@ -39,6 +43,8 @@
public static final ValueType STRING_TYPE = new ValueType( "String", String.class, StringFactory.getInstance() );
public static final ValueType OBJECT_TYPE = new ValueType( "Object", Object.class, ObjectFactory.getInstance() );
public static final ValueType FACTTEMPLATE_TYPE = new ValueType( "FactTemplate", FactTemplate.class, ObjectFactory.getInstance() );
+ public static final ValueType BIG_DECIMAL_TYPE = new ValueType( "BigDecimal", BigDecimal.class, BigDecimalFactory.getInstance() );
+ public static final ValueType BIG_INTEGER_TYPE = new ValueType( "BigInteger", BigInteger.class, BigIntegerFactory.getInstance() );
private final String name;
private final Class classType;
@@ -94,7 +100,14 @@
return ValueType .DATE_TYPE;
} else if ( clazz.isAssignableFrom( Object[].class ) ) {
return ValueType .ARRAY_TYPE;
- } else if ( clazz == String.class ) {
+ } else if ( clazz == BigDecimal.class ) {
+ return ValueType .BIG_DECIMAL_TYPE;
+
+ }
+ else if ( clazz == BigInteger.class ) {
+ return ValueType .BIG_INTEGER_TYPE;
+ }
+ else if ( clazz == String.class ) {
return ValueType .STRING_TYPE;
} else if ( clazz instanceof Object ) {
return ValueType .OBJECT_TYPE;
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/BigDecimalFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/BigDecimalFactory.java 2006-08-09 16:43:13 UTC (rev 5648)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/BigDecimalFactory.java 2006-08-09 16:45:05 UTC (rev 5649)
@@ -0,0 +1,194 @@
+package org.drools.base.evaluators;
+
+/*
+ * Copyright 2005 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.math.BigDecimal;
+
+import org.drools.base.BaseEvaluator;
+import org.drools.base.ValueType;
+import org.drools.spi.Evaluator;
+
+public class BigDecimalFactory implements EvaluatorFactory {
+ private static EvaluatorFactory INSTANCE = new BigDecimalFactory();
+
+ private BigDecimalFactory() {
+
+ }
+
+ public static EvaluatorFactory getInstance() {
+ if ( INSTANCE == null ) {
+ INSTANCE = new BigDecimalFactory();
+ }
+ return INSTANCE;
+ }
+
+ public Evaluator getEvaluator(final Operator operator) {
+ if ( operator == Operator.EQUAL ) {
+ return BigDecimalEqualEvaluator.INSTANCE;
+ } else if ( operator == Operator.NOT_EQUAL ) {
+ return BigDecimalNotEqualEvaluator.INSTANCE;
+ } else if ( operator == Operator.LESS ) {
+ return BigDecimalLessEvaluator.INSTANCE;
+ } else if ( operator == Operator.LESS_OR_EQUAL ) {
+ return BigDecimalLessOrEqualEvaluator.INSTANCE;
+ } else if ( operator == Operator.GREATER ) {
+ return BigDecimalGreaterEvaluator.INSTANCE;
+ } else if ( operator == Operator.GREATER_OR_EQUAL ) {
+ return BigDecimalGreaterOrEqualEvaluator.INSTANCE;
+ } else {
+ throw new RuntimeException( "Operator '" + operator + "' does not exist for BigDecimalEvaluator" );
+ }
+ }
+
+ static class BigDecimalEqualEvaluator extends BaseEvaluator {
+ /**
+ *
+ */
+ private static final long serialVersionUID = 320;
+ public final static Evaluator INSTANCE = new BigDecimalEqualEvaluator();
+
+ private BigDecimalEqualEvaluator() {
+ super( ValueType.BIG_DECIMAL_TYPE,
+ Operator.EQUAL );
+ }
+
+ public boolean evaluate(final Object object1,
+ final Object object2) {
+ if ( object1 == null ) {
+ return object2 == null;
+ }
+ return ((Number) object1).equals( object2 );
+ }
+
+ public String toString() {
+ return "BigDecimal ==";
+ }
+ }
+
+ static class BigDecimalNotEqualEvaluator extends BaseEvaluator {
+ /**
+ *
+ */
+ private static final long serialVersionUID = 320;
+ public final static Evaluator INSTANCE = new BigDecimalNotEqualEvaluator();
+
+ private BigDecimalNotEqualEvaluator() {
+ super( ValueType.BIG_DECIMAL_TYPE,
+ Operator.NOT_EQUAL );
+ }
+
+ public boolean evaluate(final Object object1,
+ final Object object2) {
+ if ( object1 == null ) {
+ return object2 != null;
+ }
+ return !((BigDecimal) object1).equals( object2 );
+ }
+
+ public String toString() {
+ return "BigDecimal !=";
+ }
+ }
+
+ static class BigDecimalLessEvaluator extends BaseEvaluator {
+ /**
+ *
+ */
+ private static final long serialVersionUID = 320;
+ public final static Evaluator INSTANCE = new BigDecimalLessEvaluator();
+
+ private BigDecimalLessEvaluator() {
+ super( ValueType.BIG_DECIMAL_TYPE,
+ Operator.LESS );
+ }
+
+ public boolean evaluate(final Object object1,
+ final Object object2) {
+ return ((BigDecimal) object1).compareTo( (BigDecimal) object2) < 0;
+ }
+
+ public String toString() {
+ return "BigDecimal <";
+ }
+ }
+
+ static class BigDecimalLessOrEqualEvaluator extends BaseEvaluator {
+ /**
+ *
+ */
+ private static final long serialVersionUID = 320;
+ public final static Evaluator INSTANCE = new BigDecimalLessOrEqualEvaluator();
+
+ private BigDecimalLessOrEqualEvaluator() {
+ super( ValueType.BIG_DECIMAL_TYPE,
+ Operator.LESS_OR_EQUAL );
+ }
+
+ public boolean evaluate(final Object object1,
+ final Object object2) {
+ return ((BigDecimal) object1).compareTo((BigDecimal)object2) <= 0;
+ }
+
+ public String toString() {
+ return "BigDecimal <=";
+ }
+ }
+
+ static class BigDecimalGreaterEvaluator extends BaseEvaluator {
+ /**
+ *
+ */
+ private static final long serialVersionUID = 320;
+ public final static Evaluator INSTANCE = new BigDecimalGreaterEvaluator();
+
+ private BigDecimalGreaterEvaluator() {
+ super( ValueType.BIG_DECIMAL_TYPE,
+ Operator.GREATER );
+ }
+
+ public boolean evaluate(final Object object1,
+ final Object object2) {
+ return ((BigDecimal) object1).compareTo((BigDecimal)object2) > 0;
+ }
+
+ public String toString() {
+ return "BigDecimal >";
+ }
+ }
+
+ static class BigDecimalGreaterOrEqualEvaluator extends BaseEvaluator {
+ /**
+ *
+ */
+ private static final long serialVersionUID = 320;
+ private final static Evaluator INSTANCE = new BigDecimalGreaterOrEqualEvaluator();
+
+ private BigDecimalGreaterOrEqualEvaluator() {
+ super( ValueType.BIG_DECIMAL_TYPE,
+ Operator.GREATER_OR_EQUAL );
+ }
+
+ public boolean evaluate(final Object object1,
+ final Object object2) {
+ return ((BigDecimal) object1).compareTo((BigDecimal)object2) >= 0;
+ }
+
+ public String toString() {
+ return "BigDecimal >=";
+ }
+ }
+}
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/BigIntegerFactory.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/BigIntegerFactory.java 2006-08-09 16:43:13 UTC (rev 5648)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/evaluators/BigIntegerFactory.java 2006-08-09 16:45:05 UTC (rev 5649)
@@ -0,0 +1,194 @@
+package org.drools.base.evaluators;
+
+/*
+ * Copyright 2005 JBoss Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.math.BigInteger;
+
+import org.drools.base.BaseEvaluator;
+import org.drools.base.ValueType;
+import org.drools.spi.Evaluator;
+
+public class BigIntegerFactory implements EvaluatorFactory {
+ private static EvaluatorFactory INSTANCE = new BigIntegerFactory();
+
+ private BigIntegerFactory() {
+
+ }
+
+ public static EvaluatorFactory getInstance() {
+ if ( INSTANCE == null ) {
+ INSTANCE = new BigIntegerFactory();
+ }
+ return INSTANCE;
+ }
+
+ public Evaluator getEvaluator(final Operator operator) {
+ if ( operator == Operator.EQUAL ) {
+ return BigIntegerEqualEvaluator.INSTANCE;
+ } else if ( operator == Operator.NOT_EQUAL ) {
+ return BigIntegerNotEqualEvaluator.INSTANCE;
+ } else if ( operator == Operator.LESS ) {
+ return BigIntegerLessEvaluator.INSTANCE;
+ } else if ( operator == Operator.LESS_OR_EQUAL ) {
+ return BigIntegerLessOrEqualEvaluator.INSTANCE;
+ } else if ( operator == Operator.GREATER ) {
+ return BigIntegerGreaterEvaluator.INSTANCE;
+ } else if ( operator == Operator.GREATER_OR_EQUAL ) {
+ return BigIntegerGreaterOrEqualEvaluator.INSTANCE;
+ } else {
+ throw new RuntimeException( "Operator '" + operator + "' does not exist for BigIntegerEvaluator" );
+ }
+ }
+
+ static class BigIntegerEqualEvaluator extends BaseEvaluator {
+ /**
+ *
+ */
+ private static final long serialVersionUID = 320;
+ public final static Evaluator INSTANCE = new BigIntegerEqualEvaluator();
+
+ private BigIntegerEqualEvaluator() {
+ super( ValueType.BIG_INTEGER_TYPE,
+ Operator.EQUAL );
+ }
+
+ public boolean evaluate(final Object object1,
+ final Object object2) {
+ if ( object1 == null ) {
+ return object2 == null;
+ }
+ return ((Number) object1).equals( object2 );
+ }
+
+ public String toString() {
+ return "BigInteger ==";
+ }
+ }
+
+ static class BigIntegerNotEqualEvaluator extends BaseEvaluator {
+ /**
+ *
+ */
+ private static final long serialVersionUID = 320;
+ public final static Evaluator INSTANCE = new BigIntegerNotEqualEvaluator();
+
+ private BigIntegerNotEqualEvaluator() {
+ super( ValueType.BIG_INTEGER_TYPE,
+ Operator.NOT_EQUAL );
+ }
+
+ public boolean evaluate(final Object object1,
+ final Object object2) {
+ if ( object1 == null ) {
+ return object2 != null;
+ }
+ return !((BigInteger) object1).equals( object2 );
+ }
+
+ public String toString() {
+ return "BigInteger !=";
+ }
+ }
+
+ static class BigIntegerLessEvaluator extends BaseEvaluator {
+ /**
+ *
+ */
+ private static final long serialVersionUID = 320;
+ public final static Evaluator INSTANCE = new BigIntegerLessEvaluator();
+
+ private BigIntegerLessEvaluator() {
+ super( ValueType.BIG_INTEGER_TYPE,
+ Operator.LESS );
+ }
+
+ public boolean evaluate(final Object object1,
+ final Object object2) {
+ return ((BigInteger) object1).compareTo( (BigInteger) object2) < 0;
+ }
+
+ public String toString() {
+ return "BigInteger <";
+ }
+ }
+
+ static class BigIntegerLessOrEqualEvaluator extends BaseEvaluator {
+ /**
+ *
+ */
+ private static final long serialVersionUID = 320;
+ public final static Evaluator INSTANCE = new BigIntegerLessOrEqualEvaluator();
+
+ private BigIntegerLessOrEqualEvaluator() {
+ super( ValueType.BIG_INTEGER_TYPE,
+ Operator.LESS_OR_EQUAL );
+ }
+
+ public boolean evaluate(final Object object1,
+ final Object object2) {
+ return ((BigInteger) object1).compareTo((BigInteger)object2) <= 0;
+ }
+
+ public String toString() {
+ return "BigInteger <=";
+ }
+ }
+
+ static class BigIntegerGreaterEvaluator extends BaseEvaluator {
+ /**
+ *
+ */
+ private static final long serialVersionUID = 320;
+ public final static Evaluator INSTANCE = new BigIntegerGreaterEvaluator();
+
+ private BigIntegerGreaterEvaluator() {
+ super( ValueType.BIG_INTEGER_TYPE,
+ Operator.GREATER );
+ }
+
+ public boolean evaluate(final Object object1,
+ final Object object2) {
+ return ((BigInteger) object1).compareTo((BigInteger)object2) > 0;
+ }
+
+ public String toString() {
+ return "BigInteger >";
+ }
+ }
+
+ static class BigIntegerGreaterOrEqualEvaluator extends BaseEvaluator {
+ /**
+ *
+ */
+ private static final long serialVersionUID = 320;
+ private final static Evaluator INSTANCE = new BigIntegerGreaterOrEqualEvaluator();
+
+ private BigIntegerGreaterOrEqualEvaluator() {
+ super( ValueType.BIG_INTEGER_TYPE,
+ Operator.GREATER_OR_EQUAL );
+ }
+
+ public boolean evaluate(final Object object1,
+ final Object object2) {
+ return ((BigInteger) object1).compareTo((BigInteger)object2) >= 0;
+ }
+
+ public String toString() {
+ return "BigInteger >=";
+ }
+ }
+}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/EvaluatorFactoryTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/EvaluatorFactoryTest.java 2006-08-09 16:43:13 UTC (rev 5648)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/EvaluatorFactoryTest.java 2006-08-09 16:45:05 UTC (rev 5649)
@@ -88,7 +88,44 @@
ValueType.INTEGER_TYPE );
}
+
+ public void testBigDecimal() {
+ ValueType type = ValueType.determineValueType(BigDecimal.class);
+ assertSame(type, ValueType.BIG_DECIMAL_TYPE);
+
+ final Object[][] data = {{new BigDecimal( 42 ), "==", new BigDecimal( 42 ), Boolean.TRUE},
+ {new BigDecimal( 42 ), "<", new BigDecimal( 43 ), Boolean.TRUE}, {new BigDecimal( 42 ), ">=", new BigDecimal( 41 ), Boolean.TRUE},
+ {new BigDecimal( 42 ), "!=", new BigDecimal( 41 ), Boolean.TRUE}, {new BigDecimal( 42 ), ">", new BigDecimal( 41 ), Boolean.TRUE}, {new BigDecimal( 42 ), "<=", new BigDecimal( 42 ), Boolean.TRUE},
+ {new BigDecimal( 42 ), ">", new BigDecimal( 100 ), Boolean.FALSE}, {new BigDecimal( 42 ), "==", null, Boolean.FALSE}, {new BigDecimal( 42 ), "!=", null, Boolean.TRUE}, {null, "==", new BigDecimal( 42 ), Boolean.FALSE},
+ {null, "!=", new BigDecimal( 42 ), Boolean.TRUE}};
+
+ runEvaluatorTest( data,
+ ValueType.BIG_DECIMAL_TYPE );
+
+
+
+ }
+
+ public void testBigInteger() {
+
+ ValueType type = ValueType.determineValueType(BigInteger.class);
+ assertSame(type, ValueType.BIG_INTEGER_TYPE);
+
+ final Object[][] data = {{new BigInteger( "42" ), "==", new BigInteger( "42" ), Boolean.TRUE},
+ {new BigInteger( "42" ), "<", new BigInteger( "43" ), Boolean.TRUE}, {new BigInteger( "42" ), ">=", new BigInteger( "41" ), Boolean.TRUE},
+ {new BigInteger( "42" ), "!=", new BigInteger( "41" ), Boolean.TRUE}, {new BigInteger( "42" ), ">", new BigInteger( "41" ), Boolean.TRUE}, {new BigInteger( "42" ), "<=", new BigInteger( "42" ), Boolean.TRUE},
+ {new BigInteger( "42" ), ">", new BigInteger( "100" ), Boolean.FALSE}, {new BigInteger( "42" ), "==", null, Boolean.FALSE}, {new BigInteger( "42" ), "!=", null, Boolean.TRUE}, {null, "==", new BigInteger( "42" ), Boolean.FALSE},
+ {null, "!=", new BigInteger( "42" ), Boolean.TRUE}};
+
+ runEvaluatorTest( data,
+ ValueType.BIG_INTEGER_TYPE );
+
+
+
+ }
+
+
public void testShort() {
//Test data: Obj1, Operand, Obj2
Added: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/FieldFactoryTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/FieldFactoryTest.java 2006-08-09 16:43:13 UTC (rev 5648)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/base/FieldFactoryTest.java 2006-08-09 16:45:05 UTC (rev 5649)
@@ -0,0 +1,24 @@
+package org.drools.base;
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+
+import org.drools.spi.FieldValue;
+
+import junit.framework.TestCase;
+
+public class FieldFactoryTest extends TestCase {
+
+ public void testBigDecimal() {
+ FieldValue val = FieldFactory.getFieldValue("42.42", ValueType.BIG_DECIMAL_TYPE);
+ assertEquals(BigDecimal.class, val.getValue().getClass());
+ assertTrue(val.getValue().equals(new BigDecimal("42.42")));
+ }
+
+ public void testBigInteger() {
+ FieldValue val = FieldFactory.getFieldValue("424242", ValueType.BIG_INTEGER_TYPE);
+ assertEquals(BigInteger.class, val.getValue().getClass());
+ assertTrue(val.getValue().equals(new BigInteger("424242")));
+ }
+
+}
Copied: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/facttemplates/FactTemplateFieldExtractorTest.java (from rev 5636, labs/jbossrules/trunk/drools-core/src/test/java/org/drools/facttemplates/TestFactTemplateFieldExtractor.java)
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/facttemplates/TestFactTemplateFieldExtractor.java 2006-08-09 13:55:57 UTC (rev 5636)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/facttemplates/FactTemplateFieldExtractorTest.java 2006-08-09 16:45:05 UTC (rev 5649)
@@ -0,0 +1,86 @@
+package org.drools.facttemplates;
+
+import org.drools.Cheese;
+import org.drools.rule.Declaration;
+import org.drools.rule.Package;
+import org.drools.spi.Extractor;
+
+import junit.framework.TestCase;
+
+public class FactTemplateFieldExtractorTest extends TestCase {
+ public void testExtractor() {
+ Package pkg = new Package( "org.store" );
+
+ FieldTemplate cheeseName = new FieldTemplateImpl( "name",
+ 0,
+ String.class );
+ FieldTemplate cheesePrice = new FieldTemplateImpl( "price",
+ 1,
+ Integer.class );
+ FieldTemplate[] fields = new FieldTemplate[]{cheeseName, cheesePrice};
+ FactTemplate cheese = new FactTemplateImpl( pkg,
+ "Cheese",
+ fields );
+
+ Extractor extractName = new FactTemplateFieldExtractor( cheese,
+ 0 );
+ Extractor extractPrice = new FactTemplateFieldExtractor( cheese,
+ 1 );
+
+ Fact stilton = cheese.createFact( 10 );
+ stilton.setFieldValue( "name",
+ "stilton" );
+ stilton.setFieldValue( "price",
+ new Integer( 200 ) );
+
+ assertEquals( "stilton",
+ extractName.getValue( stilton ) );
+
+ assertEquals( new Integer( 200 ),
+ extractPrice.getValue( stilton ) );
+
+ Fact brie = cheese.createFact( 12 );
+ brie.setFieldValue( "name",
+ "brie" );
+ brie.setFieldValue( "price",
+ new Integer( 55 ) );
+
+ assertEquals( "brie",
+ extractName.getValue( brie ) );
+
+ assertEquals( new Integer( 55 ),
+ extractPrice.getValue( brie ) );
+ }
+
+ public void testDeclaration() {
+ Package pkg = new Package( "org.store" );
+
+ FieldTemplate cheeseName = new FieldTemplateImpl( "name",
+ 0,
+ String.class );
+ FieldTemplate cheesePrice = new FieldTemplateImpl( "price",
+ 1,
+ Integer.class );
+ FieldTemplate[] fields = new FieldTemplate[]{cheeseName, cheesePrice};
+ FactTemplate cheese = new FactTemplateImpl( pkg,
+ "Cheese",
+ fields );
+
+ Extractor extractName = new FactTemplateFieldExtractor( cheese,
+ 0 );
+
+ final Declaration declaration = new Declaration( "typeOfCheese",
+ extractName,
+ 0 );
+
+ Fact brie = cheese.createFact( 12 );
+ brie.setFieldValue( "name",
+ "brie" );
+ brie.setFieldValue( "price",
+ new Integer( 55 ) );
+
+ // Check we can extract Declarations correctly
+ assertEquals( "brie",
+ declaration.getValue( brie ) );
+ }
+}
Copied: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/facttemplates/FactTemplateTest.java (from rev 5636, labs/jbossrules/trunk/drools-core/src/test/java/org/drools/facttemplates/TestFactTemplate.java)
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/facttemplates/TestFactTemplate.java 2006-08-09 13:55:57 UTC (rev 5636)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/facttemplates/FactTemplateTest.java 2006-08-09 16:45:05 UTC (rev 5649)
@@ -0,0 +1,130 @@
+package org.drools.facttemplates;
+
+import org.drools.rule.Package;
+
+import junit.framework.TestCase;
+
+public class FactTemplateTest extends TestCase {
+ public void testFieldsAndGetters() {
+ Package pkg = new Package( "org.store" );
+ FieldTemplate cheeseName = new FieldTemplateImpl( "name",
+ 0,
+ String.class );
+ FieldTemplate cheesePrice = new FieldTemplateImpl( "price",
+ 1,
+ Integer.class );
+ FieldTemplate[] fields = new FieldTemplate[]{cheeseName, cheesePrice};
+ FactTemplate cheese = new FactTemplateImpl( pkg,
+ "Cheese",
+ fields );
+
+ assertEquals( "org.store",
+ cheese.getPackage().getName() );
+ assertEquals( "Cheese",
+ cheese.getName() );
+
+ assertEquals( 2,
+ cheese.getNumberOfFields() );
+
+ assertSame( fields,
+ cheese.getAllFieldTemplates() );
+
+ assertSame( cheeseName,
+ cheese.getFieldTemplate( 0 ) );
+ assertSame( cheesePrice,
+ cheese.getFieldTemplate( 1 ) );
+
+ assertSame( cheeseName,
+ cheese.getFieldTemplate( "name" ) );
+ assertSame( cheesePrice,
+ cheese.getFieldTemplate( "price" ) );
+
+ assertEquals( 0,
+ cheese.getFieldTemplateIndex( "name" ) );
+ assertEquals( 1,
+ cheese.getFieldTemplateIndex( "price" ) );
+ }
+
+ public void testEqualsAndHashCode() {
+ Package pkg = new Package( "org.store" );
+
+ // Create cheese1 with name and price fields
+ FieldTemplate cheeseName = new FieldTemplateImpl( "name",
+ 0,
+ String.class );
+ FieldTemplate cheesePrice = new FieldTemplateImpl( "price",
+ 1,
+ Integer.class );
+ FieldTemplate[] fields1 = new FieldTemplate[]{cheeseName, cheesePrice};
+ FactTemplate cheese1 = new FactTemplateImpl( pkg,
+ "Cheese",
+ fields1 );
+
+ // Create cheese2 with type and price fields
+ FieldTemplate cheeseType = new FieldTemplateImpl( "type",
+ 0,
+ String.class );
+ FieldTemplate[] fields2 = new FieldTemplate[]{cheeseType, cheesePrice};
+ FactTemplate cheese2 = new FactTemplateImpl( pkg,
+ "Cheese",
+ fields2 );
+
+ assertNotSame( cheese1, cheese2 );
+
+ assertFalse( cheese1.equals( cheese2 ) );
+
+ assertFalse( cheese1.hashCode() == cheese2.hashCode() );
+
+
+
+ // create cheese3 with name and price fields, using new instances
+ FieldTemplate cheeseName2 = new FieldTemplateImpl( "name",
+ 0,
+ String.class );
+ FieldTemplate cheesePrice2 = new FieldTemplateImpl( "price",
+ 1,
+ Integer.class );
+ FieldTemplate[] fields3 = new FieldTemplate[]{cheeseName2, cheesePrice2};
+ FactTemplate cheese3 = new FactTemplateImpl( pkg,
+ "Cheese",
+ fields3 );
+
+ assertNotSame( cheese1, cheese3 );
+ assertNotSame( cheese1.getAllFieldTemplates(), cheese3.getAllFieldTemplates() );
+ assertEquals( cheese1, cheese3 );
+ assertEquals( cheese1.hashCode(), cheese3.hashCode() );
+ }
+
+ public void testFacts() {
+ Package pkg = new Package( "org.store" );
+ FieldTemplate cheeseName = new FieldTemplateImpl( "name",
+ 0,
+ String.class );
+ FieldTemplate cheesePrice = new FieldTemplateImpl( "price",
+ 1,
+ Integer.class );
+ FieldTemplate[] fields1 = new FieldTemplate[]{cheeseName, cheesePrice};
+ FactTemplate cheese1 = new FactTemplateImpl( pkg,
+ "Cheese",
+ fields1 );
+
+ Fact stilton1 = cheese1.createFact( 10 );
+ stilton1.setFieldValue( "name", "stilton" );
+ stilton1.setFieldValue( "price", new Integer( 200 ) );
+
+ Fact stilton2 = cheese1.createFact( 11 );
+ stilton2.setFieldValue( 0, "stilton" );
+ stilton2.setFieldValue( 1, new Integer( 200 ) );
+
+ assertEquals( stilton1, stilton2 );
+ assertEquals( stilton1.hashCode(), stilton2.hashCode() );
+
+ Fact brie = cheese1.createFact( 12 );
+ brie.setFieldValue( "name", "brie" );
+ brie.setFieldValue( "price", new Integer( 55 ) );
+
+ assertFalse( stilton1.equals( brie ));
+ assertFalse( stilton1.hashCode() == brie.hashCode() );
+
+ }
+}
Copied: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/facttemplates/FieldTemplateTest.java (from rev 5636, labs/jbossrules/trunk/drools-core/src/test/java/org/drools/facttemplates/TestFieldTemplate.java)
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/facttemplates/TestFieldTemplate.java 2006-08-09 13:55:57 UTC (rev 5636)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/facttemplates/FieldTemplateTest.java 2006-08-09 16:45:05 UTC (rev 5649)
@@ -0,0 +1,15 @@
+package org.drools.facttemplates;
+
+import org.drools.base.ValueType;
+
+import junit.framework.TestCase;
+
+public class FieldTemplateTest extends TestCase {
+ public void testFieldTemplate() {
+ FieldTemplate cheeseName = new FieldTemplateImpl("name", 5, String.class);
+ assertEquals( "name", cheeseName.getName() );
+ assertEquals( ValueType.STRING_TYPE, cheeseName.getValueType() );
+ assertEquals( 5, cheeseName.getIndex() );
+
+ }
+}
Deleted: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/facttemplates/TestFactTemplate.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/facttemplates/TestFactTemplate.java 2006-08-09 16:43:13 UTC (rev 5648)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/facttemplates/TestFactTemplate.java 2006-08-09 16:45:05 UTC (rev 5649)
@@ -1,130 +0,0 @@
-package org.drools.facttemplates;
-
-import org.drools.rule.Package;
-
-import junit.framework.TestCase;
-
-public class TestFactTemplate extends TestCase {
- public void testFieldsAndGetters() {
- Package pkg = new Package( "org.store" );
- FieldTemplate cheeseName = new FieldTemplateImpl( "name",
- 0,
- String.class );
- FieldTemplate cheesePrice = new FieldTemplateImpl( "price",
- 1,
- Integer.class );
- FieldTemplate[] fields = new FieldTemplate[]{cheeseName, cheesePrice};
- FactTemplate cheese = new FactTemplateImpl( pkg,
- "Cheese",
- fields );
-
- assertEquals( "org.store",
- cheese.getPackage() );
- assertEquals( "Cheese",
- cheese.getName() );
-
- assertEquals( 2,
- cheese.getNumberOfFields() );
-
- assertSame( fields,
- cheese.getAllFieldTemplates() );
-
- assertSame( cheeseName,
- cheese.getFieldTemplate( 0 ) );
- assertSame( cheesePrice,
- cheese.getFieldTemplate( 1 ) );
-
- assertSame( cheeseName,
- cheese.getFieldTemplate( "name" ) );
- assertSame( cheesePrice,
- cheese.getFieldTemplate( "price" ) );
-
- assertEquals( 0,
- cheese.getFieldTemplateIndex( "name" ) );
- assertEquals( 1,
- cheese.getFieldTemplateIndex( "price" ) );
- }
-
- public void testEqualsAndHashCode() {
- Package pkg = new Package( "org.store" );
-
- // Create cheese1 with name and price fields
- FieldTemplate cheeseName = new FieldTemplateImpl( "name",
- 0,
- String.class );
- FieldTemplate cheesePrice = new FieldTemplateImpl( "price",
- 1,
- Integer.class );
- FieldTemplate[] fields1 = new FieldTemplate[]{cheeseName, cheesePrice};
- FactTemplate cheese1 = new FactTemplateImpl( pkg,
- "Cheese",
- fields1 );
-
- // Create cheese2 with type and price fields
- FieldTemplate cheeseType = new FieldTemplateImpl( "type",
- 0,
- String.class );
- FieldTemplate[] fields2 = new FieldTemplate[]{cheeseType, cheesePrice};
- FactTemplate cheese2 = new FactTemplateImpl( pkg,
- "Cheese",
- fields2 );
-
- assertNotSame( cheese1, cheese2 );
-
- assertFalse( cheese1.equals( cheese2 ) );
-
- assertFalse( cheese1.hashCode() == cheese2.hashCode() );
-
-
-
- // create cheese3 with name and price fields, using new instances
- FieldTemplate cheeseName2 = new FieldTemplateImpl( "name",
- 0,
- String.class );
- FieldTemplate cheesePrice2 = new FieldTemplateImpl( "price",
- 1,
- Integer.class );
- FieldTemplate[] fields3 = new FieldTemplate[]{cheeseName2, cheesePrice2};
- FactTemplate cheese3 = new FactTemplateImpl( pkg,
- "Cheese",
- fields3 );
-
- assertNotSame( cheese1, cheese3 );
- assertNotSame( cheese1.getAllFieldTemplates(), cheese3.getAllFieldTemplates() );
- assertEquals( cheese1, cheese3 );
- assertEquals( cheese1.hashCode(), cheese3.hashCode() );
- }
-
- public void testFacts() {
- Package pkg = new Package( "org.store" );
- FieldTemplate cheeseName = new FieldTemplateImpl( "name",
- 0,
- String.class );
- FieldTemplate cheesePrice = new FieldTemplateImpl( "price",
- 1,
- Integer.class );
- FieldTemplate[] fields1 = new FieldTemplate[]{cheeseName, cheesePrice};
- FactTemplate cheese1 = new FactTemplateImpl( pkg,
- "Cheese",
- fields1 );
-
- Fact stilton1 = cheese1.createFact( 10 );
- stilton1.setFieldValue( "name", "stilton" );
- stilton1.setFieldValue( "price", new Integer( 200 ) );
-
- Fact stilton2 = cheese1.createFact( 11 );
- stilton2.setFieldValue( 0, "stilton" );
- stilton2.setFieldValue( 1, new Integer( 200 ) );
-
- assertEquals( stilton1, stilton2 );
- assertEquals( stilton1.hashCode(), stilton2.hashCode() );
-
- Fact brie = cheese1.createFact( 12 );
- brie.setFieldValue( "name", "brie" );
- brie.setFieldValue( "price", new Integer( 55 ) );
-
- assertFalse( stilton1.equals( brie ));
- assertFalse( stilton1.hashCode() == brie.hashCode() );
-
- }
-}
Deleted: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/facttemplates/TestFactTemplateFieldExtractor.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/facttemplates/TestFactTemplateFieldExtractor.java 2006-08-09 16:43:13 UTC (rev 5648)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/facttemplates/TestFactTemplateFieldExtractor.java 2006-08-09 16:45:05 UTC (rev 5649)
@@ -1,86 +0,0 @@
-package org.drools.facttemplates;
-
-import org.drools.Cheese;
-import org.drools.rule.Declaration;
-import org.drools.rule.Package;
-import org.drools.spi.Extractor;
-
-import junit.framework.TestCase;
-
-public class TestFactTemplateFieldExtractor extends TestCase {
- public void testExtractor() {
- Package pkg = new Package( "org.store" );
-
- FieldTemplate cheeseName = new FieldTemplateImpl( "name",
- 0,
- String.class );
- FieldTemplate cheesePrice = new FieldTemplateImpl( "price",
- 1,
- Integer.class );
- FieldTemplate[] fields = new FieldTemplate[]{cheeseName, cheesePrice};
- FactTemplate cheese = new FactTemplateImpl( pkg,
- "Cheese",
- fields );
-
- Extractor extractName = new FactTemplateFieldExtractor( cheese,
- 0 );
- Extractor extractPrice = new FactTemplateFieldExtractor( cheese,
- 1 );
-
- Fact stilton = cheese.createFact( 10 );
- stilton.setFieldValue( "name",
- "stilton" );
- stilton.setFieldValue( "price",
- new Integer( 200 ) );
-
- assertEquals( "stilton",
- extractName.getValue( stilton ) );
-
- assertEquals( new Integer( 200 ),
- extractPrice.getValue( stilton ) );
-
- Fact brie = cheese.createFact( 12 );
- brie.setFieldValue( "name",
- "brie" );
- brie.setFieldValue( "price",
- new Integer( 55 ) );
-
- assertEquals( "brie",
- extractName.getValue( brie ) );
-
- assertEquals( new Integer( 55 ),
- extractPrice.getValue( brie ) );
- }
-
- public void testDeclaration() {
- Package pkg = new Package( "org.store" );
-
- FieldTemplate cheeseName = new FieldTemplateImpl( "name",
- 0,
- String.class );
- FieldTemplate cheesePrice = new FieldTemplateImpl( "price",
- 1,
- Integer.class );
- FieldTemplate[] fields = new FieldTemplate[]{cheeseName, cheesePrice};
- FactTemplate cheese = new FactTemplateImpl( pkg,
- "Cheese",
- fields );
-
- Extractor extractName = new FactTemplateFieldExtractor( cheese,
- 0 );
-
- final Declaration declaration = new Declaration( "typeOfCheese",
- extractName,
- 0 );
-
- Fact brie = cheese.createFact( 12 );
- brie.setFieldValue( "name",
- "brie" );
- brie.setFieldValue( "price",
- new Integer( 55 ) );
-
- // Check we can extract Declarations correctly
- assertEquals( "brie",
- declaration.getValue( brie ) );
- }
-}
Deleted: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/facttemplates/TestFieldTemplate.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/facttemplates/TestFieldTemplate.java 2006-08-09 16:43:13 UTC (rev 5648)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/facttemplates/TestFieldTemplate.java 2006-08-09 16:45:05 UTC (rev 5649)
@@ -1,15 +0,0 @@
-package org.drools.facttemplates;
-
-import org.drools.base.ValueType;
-
-import junit.framework.TestCase;
-
-public class TestFieldTemplate extends TestCase {
- public void testFieldTemplate() {
- FieldTemplate cheeseName = new FieldTemplateImpl("name", 5, String.class);
- assertEquals( "name", cheeseName.getName() );
- assertEquals( ValueType.STRING_TYPE, cheeseName.getValueType() );
- assertEquals( 5, cheeseName.getIndex() );
-
- }
-}
More information about the jboss-svn-commits
mailing list