/** * Copyright 2010 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. */ package org.drools.base.evaluators; import junit.framework.TestCase; import org.drools.spi.InternalReadAccessor; import org.drools.spi.FieldValue; import org.drools.common.InternalWorkingMemory; import org.drools.common.InternalFactHandle; import org.drools.base.ValueType; import org.drools.rule.VariableRestriction; import org.drools.rule.Declaration; import org.drools.reteoo.LeftTuple; import java.lang.reflect.Method; import java.math.BigDecimal; import java.math.BigInteger; /** * @author Michael Neale */ public class BigDecimalEqualityTest extends TestCase { public void testEquality() { EqualityEvaluatorsDefinition.BigDecimalEqualEvaluator d = new EqualityEvaluatorsDefinition.BigDecimalEqualEvaluator(); assertTrue(d.evaluate(null, new MockInternalReadAcessor(new BigDecimal("42")), null, new MockFieldValue(new BigDecimal("42")) )); assertFalse(d.evaluate(null, new MockInternalReadAcessor(new BigDecimal("42")), null, new MockFieldValue(new BigDecimal("43")) )); assertTrue(d.evaluate(null, new MockInternalReadAcessor(new BigDecimal("42.0")), null, new MockFieldValue(new BigDecimal("42")) )); assertFalse(d.evaluate(null, new MockInternalReadAcessor(new BigDecimal("42")), null, new MockFieldValue(new BigDecimal("43.0")) )); assertTrue(d.isEqual(new BigDecimal("42"), new BigDecimal("42"))); assertFalse(d.isEqual(new BigDecimal("42"), new BigDecimal("43"))); assertFalse(d.isEqual(new BigDecimal("42"), 43)); assertFalse(d.isEqual(new BigDecimal("42"), "43")); assertFalse(d.isEqual(new BigDecimal("42"), 42.0)); assertFalse(d.isEqual(43, 43)); assertFalse(d.isEqual("43", new BigDecimal("43"))); } public void testNotEquals() { EqualityEvaluatorsDefinition.BigDecimalNotEqualEvaluator d = new EqualityEvaluatorsDefinition.BigDecimalNotEqualEvaluator(); assertFalse(d.evaluate(null, new MockInternalReadAcessor(new BigDecimal("42")), null, new MockFieldValue(new BigDecimal("42")) )); assertTrue(d.evaluate(null, new MockInternalReadAcessor(new BigDecimal("42")), null, new MockFieldValue(new BigDecimal("43")) )); assertFalse(d.evaluate(null, new MockInternalReadAcessor(new BigDecimal("42.0")), null, new MockFieldValue(new BigDecimal("42")) )); assertTrue(d.evaluate(null, new MockInternalReadAcessor(new BigDecimal("42")), null, new MockFieldValue(new BigDecimal("43.0")) )); } class MockFieldValue implements FieldValue { private BigDecimal val; MockFieldValue(BigDecimal bd) { this.val = bd; } public Object getValue() { return null; //To change body of implemented methods use File | Settings | File Templates. } public char getCharValue() { return 0; //To change body of implemented methods use File | Settings | File Templates. } public BigDecimal getBigDecimalValue() { return val; } public BigInteger getBigIntegerValue() { return null; //To change body of implemented methods use File | Settings | File Templates. } public int getIntValue() { return 0; //To change body of implemented methods use File | Settings | File Templates. } public byte getByteValue() { return 0; //To change body of implemented methods use File | Settings | File Templates. } public short getShortValue() { return 0; //To change body of implemented methods use File | Settings | File Templates. } public long getLongValue() { return 0; //To change body of implemented methods use File | Settings | File Templates. } public float getFloatValue() { return 0; //To change body of implemented methods use File | Settings | File Templates. } public double getDoubleValue() { return 0; //To change body of implemented methods use File | Settings | File Templates. } public boolean getBooleanValue() { return false; //To change body of implemented methods use File | Settings | File Templates. } public boolean isNull() { return false; //To change body of implemented methods use File | Settings | File Templates. } public boolean isBooleanField() { return false; //To change body of implemented methods use File | Settings | File Templates. } public boolean isIntegerNumberField() { return false; //To change body of implemented methods use File | Settings | File Templates. } public boolean isFloatNumberField() { return false; //To change body of implemented methods use File | Settings | File Templates. } public boolean isObjectField() { return false; //To change body of implemented methods use File | Settings | File Templates. } public boolean isCollectionField() { return false; //To change body of implemented methods use File | Settings | File Templates. } public boolean isStringField() { return false; //To change body of implemented methods use File | Settings | File Templates. } } class MockInternalReadAcessor implements InternalReadAccessor { private Object val; MockInternalReadAcessor(Object val) { this.val = val; } public Object getValue(InternalWorkingMemory workingMemory, Object object) { return val; //To change body of implemented methods use File | Settings | File Templates. } public char getCharValue(InternalWorkingMemory workingMemory, Object object) { return 0; //To change body of implemented methods use File | Settings | File Templates. } public int getIntValue(InternalWorkingMemory workingMemory, Object object) { return 0; //To change body of implemented methods use File | Settings | File Templates. } public byte getByteValue(InternalWorkingMemory workingMemory, Object object) { return 0; //To change body of implemented methods use File | Settings | File Templates. } public short getShortValue(InternalWorkingMemory workingMemory, Object object) { return 0; //To change body of implemented methods use File | Settings | File Templates. } public long getLongValue(InternalWorkingMemory workingMemory, Object object) { return 0; //To change body of implemented methods use File | Settings | File Templates. } public float getFloatValue(InternalWorkingMemory workingMemory, Object object) { return 0; //To change body of implemented methods use File | Settings | File Templates. } public double getDoubleValue(InternalWorkingMemory workingMemory, Object object) { return 0; //To change body of implemented methods use File | Settings | File Templates. } public boolean getBooleanValue(InternalWorkingMemory workingMemory, Object object) { return false; //To change body of implemented methods use File | Settings | File Templates. } public boolean isNullValue(InternalWorkingMemory workingMemory, Object object) { return false; //To change body of implemented methods use File | Settings | File Templates. } public int getHashCode(InternalWorkingMemory workingMemory, Object object) { return 0; //To change body of implemented methods use File | Settings | File Templates. } public boolean isGlobal() { return false; //To change body of implemented methods use File | Settings | File Templates. } public boolean isSelfReference() { return false; //To change body of implemented methods use File | Settings | File Templates. } public Object getValue(Object object) { return null; //To change body of implemented methods use File | Settings | File Templates. } public char getCharValue(Object object) { return 0; //To change body of implemented methods use File | Settings | File Templates. } public int getIntValue(Object object) { return 0; //To change body of implemented methods use File | Settings | File Templates. } public byte getByteValue(Object object) { return 0; //To change body of implemented methods use File | Settings | File Templates. } public short getShortValue(Object object) { return 0; //To change body of implemented methods use File | Settings | File Templates. } public long getLongValue(Object object) { return 0; //To change body of implemented methods use File | Settings | File Templates. } public float getFloatValue(Object object) { return 0; //To change body of implemented methods use File | Settings | File Templates. } public double getDoubleValue(Object object) { return 0; //To change body of implemented methods use File | Settings | File Templates. } public boolean getBooleanValue(Object object) { return false; //To change body of implemented methods use File | Settings | File Templates. } public boolean isNullValue(Object object) { return false; //To change body of implemented methods use File | Settings | File Templates. } public ValueType getValueType() { return null; //To change body of implemented methods use File | Settings | File Templates. } public Class<?> getExtractToClass() { return null; //To change body of implemented methods use File | Settings | File Templates. } public String getExtractToClassName() { return null; //To change body of implemented methods use File | Settings | File Templates. } public Method getNativeReadMethod() { return null; //To change body of implemented methods use File | Settings | File Templates. } public int getHashCode(Object object) { return 0; //To change body of implemented methods use File | Settings | File Templates. } public int getIndex() { return 0; //To change body of implemented methods use File | Settings | File Templates. } public BigDecimal getBigDecimalValue(InternalWorkingMemory workingMemory, Object object) { return (BigDecimal) val; //To change body of implemented methods use File | Settings | File Templates. } public BigInteger getBigIntegerValue(InternalWorkingMemory workingMemory, Object object) { return (BigInteger) val; //To change body of implemented methods use File | Settings | File Templates. } public BigDecimal getBigDecimalValue(Object object) { return (BigDecimal) val; //To change body of implemented methods use File | Settings | File Templates. } public BigInteger getBigIntegerValue(Object object) { return (BigInteger) val; //To change body of implemented methods use File | Settings | File Templates. } } }