[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