001: /*
002: * $Id: BaseNumericDataTypeTest.java,v 1.4 2005/06/18 01:03:45 ahimanikya Exp $
003: * =======================================================================
004: * Copyright (c) 2003-2005 Axion Development Team. All rights reserved.
005: *
006: * Redistribution and use in source and binary forms, with or without
007: * modification, are permitted provided that the following conditions
008: * are met:
009: *
010: * 1. Redistributions of source code must retain the above
011: * copyright notice, this list of conditions and the following
012: * disclaimer.
013: *
014: * 2. Redistributions in binary form must reproduce the above copyright
015: * notice, this list of conditions and the following disclaimer in
016: * the documentation and/or other materials provided with the
017: * distribution.
018: *
019: * 3. The names "Tigris", "Axion", nor the names of its contributors may
020: * not be used to endorse or promote products derived from this
021: * software without specific prior written permission.
022: *
023: * 4. Products derived from this software may not be called "Axion", nor
024: * may "Tigris" or "Axion" appear in their names without specific prior
025: * written permission.
026: *
027: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
028: * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
029: * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
030: * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
031: * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
032: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
033: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
034: * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
035: * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
036: * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
037: * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
038: * =======================================================================
039: */
040:
041: package org.axiondb.types;
042:
043: import java.math.BigDecimal;
044: import java.math.BigInteger;
045:
046: import org.axiondb.AxionException;
047:
048: /**
049: * @version $Revision: 1.4 $ $Date: 2005/06/18 01:03:45 $
050: * @author Rodney Waldhoff
051: * @author Jonathan Giron
052: */
053: public abstract class BaseNumericDataTypeTest extends BaseDataTypeTest {
054:
055: //------------------------------------------------------------ Conventional
056:
057: public BaseNumericDataTypeTest(String testName) {
058: super (testName);
059: }
060:
061: //------------------------------------------------------------------- Tests
062:
063: public void testAcceptsNumeric() throws Exception {
064: assertTrue("Should accept Byte", getDataType().accepts(
065: new Byte((byte) 3)));
066: assertTrue("Should accept Short", getDataType().accepts(
067: new Short((short) 3)));
068: assertTrue("Should accept Integer", getDataType().accepts(
069: new Integer(3)));
070: assertTrue("Should accept Long", getDataType().accepts(
071: new Long(3L)));
072:
073: assertTrue("Should accept Double", getDataType().accepts(
074: new Double(3.14D)));
075: assertTrue("Should accept Float", getDataType().accepts(
076: new Float(3.14F)));
077: }
078:
079: public void testConvertNonNumericString() throws Exception {
080: expectExceptionWhileConvertingNonNumericString("99999");
081: }
082:
083: public void testToBigDecimal() throws Exception {
084: BigDecimal dec = getDataType().toBigDecimal(
085: getDataType().convert(new Integer(17)));
086: assertNotNull(dec);
087: assertEquals(17, dec.intValue()); // can't assume the scale here, it could be 17, 17.0, 17.00, etc.
088: }
089:
090: public void testToBigInteger() throws Exception {
091: assertEquals(BigInteger.valueOf(17), getDataType()
092: .toBigInteger(getDataType().convert(new Integer(17))));
093: }
094:
095: protected void expectExceptionWhileConvertingNonNumericString(
096: String sqlStateExpected) {
097: final String msg = "Expected AxionException ("
098: + sqlStateExpected + ")";
099: try {
100: getDataType().convert("this is not a number");
101: fail(msg);
102: } catch (AxionException expected) {
103: assertEquals(msg, sqlStateExpected, expected.getSQLState());
104: }
105: }
106: }
|