/* * Copyright 2015, The Querydsl Team (http://www.querydsl.com/team) * * 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 com.querydsl.sql; import static org.junit.Assert.assertEquals; import java.math.BigDecimal; import java.math.BigInteger; import java.sql.Blob; import java.sql.Types; import org.junit.Test; import org.junit.experimental.categories.Category; import com.querydsl.core.testutil.ReportingOnly; public class JDBCTypeMappingTest { private JDBCTypeMapping typeMapping = new JDBCTypeMapping(); @Test public void get() { assertEquals(Float.class, typeMapping.get(Types.FLOAT,0,0)); assertEquals(Float.class, typeMapping.get(Types.REAL,0,0)); } @Test public void stringTypes() { assertEquals(String.class, typeMapping.get(Types.CHAR,0,0)); assertEquals(String.class, typeMapping.get(Types.NCHAR,0,0)); assertEquals(String.class, typeMapping.get(Types.CLOB,0,0)); assertEquals(String.class, typeMapping.get(Types.NCLOB,0,0)); assertEquals(String.class, typeMapping.get(Types.LONGVARCHAR,0,0)); assertEquals(String.class, typeMapping.get(Types.LONGNVARCHAR,0,0)); assertEquals(String.class, typeMapping.get(Types.SQLXML,0,0)); assertEquals(String.class, typeMapping.get(Types.VARCHAR,0,0)); assertEquals(String.class, typeMapping.get(Types.NVARCHAR,0,0)); } @Test public void blobTypes() { assertEquals(Blob.class, typeMapping.get(Types.BLOB,0,0)); } @Test public void bytesTypes() { assertEquals(byte[].class, typeMapping.get(Types.BINARY,0,0)); assertEquals(byte[].class, typeMapping.get(Types.VARBINARY,0,0)); assertEquals(byte[].class, typeMapping.get(Types.LONGVARBINARY,0,0)); } @Test public void numericTypes() { // 19,0 -> BigInteger // 10-18,0 -> Long // 5-9,0 -> Integer // 3-4,0 -> Short // 1-2,0 -> Byte // ?,? -> BigDecimal assertEquals(typeMapping.get(Types.NUMERIC, 20, 0), BigInteger.class); assertEquals(typeMapping.get(Types.NUMERIC, 19, 0), BigInteger.class); assertEquals(typeMapping.get(Types.NUMERIC, 15, 0), Long.class); assertEquals(typeMapping.get(Types.NUMERIC, 6, 0), Integer.class); assertEquals(typeMapping.get(Types.NUMERIC, 5, 0), Integer.class); assertEquals(typeMapping.get(Types.NUMERIC, 4, 0), Short.class); assertEquals(typeMapping.get(Types.NUMERIC, 3, 0), Short.class); assertEquals(typeMapping.get(Types.NUMERIC, 2, 0), Byte.class); assertEquals(typeMapping.get(Types.NUMERIC, 1, 0), Byte.class); assertEquals(typeMapping.get(Types.NUMERIC, 0, 0), BigInteger.class); assertEquals(typeMapping.get(Types.NUMERIC, 17, 2), BigDecimal.class); assertEquals(typeMapping.get(Types.NUMERIC, 5, 2), BigDecimal.class); } @Test @Category(ReportingOnly.class) public void max() { System.err.println("Byte: " + String.valueOf(Byte.MAX_VALUE).length()); System.err.println("Short: " + String.valueOf(Short.MAX_VALUE).length()); System.err.println("Integer: " + String.valueOf(Integer.MAX_VALUE).length()); System.err.println("Long: " + String.valueOf(Long.MAX_VALUE).length()); } @Test public void numericOverriden() { typeMapping.registerNumeric(19, 0, BigInteger.class); assertEquals(typeMapping.get(Types.NUMERIC, 19, 0), BigInteger.class); } @Test public void numericOverriden2() { typeMapping.registerNumeric(19, 0, BigInteger.class); assertEquals(typeMapping.get(Types.INTEGER, 19, 0), BigInteger.class); assertEquals(typeMapping.get(Types.INTEGER, 18, 0), Integer.class); } @Test public void numericOverriden3() { typeMapping.registerNumeric(5, 2, BigDecimal.class); assertEquals(typeMapping.get(Types.DOUBLE, 5, 2), BigDecimal.class); assertEquals(typeMapping.get(Types.DOUBLE, 5, 1), Double.class); } }