View Javadoc
1   /*
2    *
3    * The DbUnit Database Testing Framework
4    * Copyright (C)2002-2004, DbUnit.org
5    *
6    * This library is free software; you can redistribute it and/or
7    * modify it under the terms of the GNU Lesser General Public
8    * License as published by the Free Software Foundation; either
9    * version 2.1 of the License, or (at your option) any later version.
10   *
11   * This library is distributed in the hope that it will be useful,
12   * but WITHOUT ANY WARRANTY; without even the implied warranty of
13   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14   * Lesser General Public License for more details.
15   *
16   * You should have received a copy of the GNU Lesser General Public
17   * License along with this library; if not, write to the Free Software
18   * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19   *
20   */
21  package org.dbunit.dataset.datatype;
22  
23  import java.math.BigDecimal;
24  import java.sql.Types;
25  
26  import org.dbunit.dataset.datatype.ToleratedDeltaMap.ToleratedDelta;
27  
28  
29  
30  /**
31   * @author Manuel Laflamme
32   * @since Aug 13, 2003
33   * @version $Revision$
34   */
35  public class DefaultDataTypeFactoryTest extends AbstractDataTypeFactoryTest
36  {
37      public DefaultDataTypeFactoryTest(String s)
38      {
39          super(s);
40      }
41  
42      public IDataTypeFactory createFactory() throws Exception
43      {
44          return new DefaultDataTypeFactory();
45      }
46      
47      public void testCreateNumberTolerantDataType_Numeric() throws Exception
48      {
49          int sqlType = Types.NUMERIC;
50          String sqlTypeName = "NUMBER";
51  
52          DefaultDataTypeFactory factory = new DefaultDataTypeFactory();
53          factory.addToleratedDelta(new ToleratedDelta("TEST_TABLE", "COLUMN0", 1E-5));
54          DataType actual = factory.createDataType(sqlType, sqlTypeName, "TEST_TABLE", "COLUMN0");
55          assertEquals("type", NumberTolerantDataType.class, actual.getClass());
56          assertEquals(new BigDecimal("1.0E-5"), ((NumberTolerantDataType)actual).getToleratedDelta().getDelta());
57      }
58  
59      
60      public void testCreateNumberTolerantDataType_Decimal() throws Exception
61      {
62          int sqlType = Types.DECIMAL;
63          String sqlTypeName = "DECIMAL";
64  
65          DefaultDataTypeFactory factory = new DefaultDataTypeFactory();
66          factory.addToleratedDelta(new ToleratedDelta("TEST_TABLE", "COLUMN0", 1E-5));
67          DataType actual = factory.createDataType(sqlType, sqlTypeName, "TEST_TABLE", "COLUMN0");
68          assertEquals("type", NumberTolerantDataType.class, actual.getClass());
69          assertEquals(new BigDecimal("1.0E-5"), ((NumberTolerantDataType)actual).getToleratedDelta().getDelta());
70      }
71  
72      
73      public void testCreateNumberTolerantDataTypeAndNoToleranceSetForColumn_Numeric() throws Exception
74      {
75          int sqlType = Types.NUMERIC;
76          String sqlTypeName = "NUMBER";
77  
78          DefaultDataTypeFactory factory = new DefaultDataTypeFactory();
79          factory.addToleratedDelta(new ToleratedDelta("TEST_TABLE", "COLUMN0", 1E-5));
80          DataType actual = factory.createDataType(sqlType, sqlTypeName, "TEST_TABLE", "COLUMNXYZ-withoutTolerance");
81          assertSame("type", DataType.NUMERIC, actual);
82      }
83  
84      public void testCreateNumberTolerantDataTypeAndNoToleranceSetForColumn_Decimal() throws Exception
85      {
86          int sqlType = Types.DECIMAL;
87          String sqlTypeName = "DECIMAL";
88  
89          DefaultDataTypeFactory factory = new DefaultDataTypeFactory();
90          factory.addToleratedDelta(new ToleratedDelta("TEST_TABLE", "COLUMN0", 1E-5));
91          DataType actual = factory.createDataType(sqlType, sqlTypeName, "TEST_TABLE", "COLUMNXYZ-withoutTolerance");
92          assertSame("type", DataType.DECIMAL, actual);
93      }
94  
95  }