package com.tesora.dve.db.mysql;
/*
* #%L
* Tesora Inc.
* Database Virtualization Engine
* %%
* Copyright (C) 2011 - 2014 Tesora Inc.
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License, version 3,
* as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* #L%
*/
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import java.sql.Types;
import org.apache.log4j.Logger;
import org.junit.BeforeClass;
import org.junit.Test;
import com.tesora.dve.common.PEBaseTest;
import com.tesora.dve.db.mysql.MysqlNativeType;
import com.tesora.dve.db.mysql.MysqlNativeTypeCatalog;
import com.tesora.dve.db.mysql.MysqlNativeType.MysqlType;
public class MysqlNativeTypeCatalogTest extends PEBaseTest {
@BeforeClass
public static void setUpBeforeClass() throws Exception {
applicationName = "MysqlNativeTypeTest";
logger = Logger.getLogger(MysqlNativeTypeTest.class);
}
@Test
public void testLoad() {
try {
MysqlNativeTypeCatalog mntCatalog = new MysqlNativeTypeCatalog();
mntCatalog.load();
for (MysqlType mysqlType : MysqlType.values()) {
if (mysqlType.isValid()) {
MysqlNativeType mysqlNativeType = (MysqlNativeType) mntCatalog.findType(mysqlType.toString(), true);
MysqlNativeType mnType = new MysqlNativeType(mysqlType);
assertTrue("Type " + mysqlNativeType + " should be the same as the catalog type",
mysqlNativeType.getMysqlType().equals(mnType.getMysqlType()));
}
}
//mntCatalog.getTypesByName();
} catch (Exception e) {
failWithStackTrace(e);
}
}
@Test
public void testFindBySqlDataType() {
try {
// format sql type, mysqltype
// Types commented out are not supported (at present?)
String[][] data = {
{ String.valueOf(Types.BIT), "BIT" },
{ String.valueOf(Types.TINYINT), "TINYINT" },
{ String.valueOf(Types.SMALLINT), "SMALLINT" },
{ String.valueOf(Types.INTEGER), "INTEGER" },
{ String.valueOf(Types.BIGINT), "BIGINT" },
{ String.valueOf(Types.REAL), "FLOAT" },
// { String.valueOf(Types.FLOAT), "REAL_UNUSED" },
{ String.valueOf(Types.DOUBLE), "DOUBLE" },
// { String.valueOf(Types.NUMERIC), "NUMERIC" },
{ String.valueOf(Types.DECIMAL), "DECIMAL" },
{ String.valueOf(Types.CHAR), "CHAR" },
{ String.valueOf(Types.VARCHAR), "VARCHAR" },
// { String.valueOf(Types.LONGVARCHAR), "LONG_VARCHAR" },
{ String.valueOf(Types.DATE), "DATE" },
{ String.valueOf(Types.TIME), "TIME" },
{ String.valueOf(Types.TIMESTAMP), "DATETIME" },
{ String.valueOf(Types.BINARY), "BINARY" },
{ String.valueOf(Types.VARBINARY), "VARBINARY" },
// { String.valueOf(Types.LONGVARBINARY), "LONG_VARBINARY" },
{ String.valueOf(Types.NULL), "NULL" },
//{ String.valueOf(Types.OTHER), "OTHER" },
//{ String.valueOf(Types.JAVA_OBJECT), "JAVA_OBJECT" },
//{ String.valueOf(Types.DISTINCT), "DISTINCT" },
//{ String.valueOf(Types.STRUCT), "STRUCT" },
//{ String.valueOf(Types.ARRAY), "ARRAY" },
//{ String.valueOf(Types.BLOB), "BLOB" },
//{ String.valueOf(Types.CLOB), "CLOB" },
//{ String.valueOf(Types.REF), "REF" },
//{ String.valueOf(Types.DATALINK), "DATALINK" },
//{ String.valueOf(Types.BOOLEAN), "BOOLEAN" },
//{ String.valueOf(Types.ROWID), "ROWID" },
// { String.valueOf(Types.NCHAR), "NCHAR" },
// { String.valueOf(Types.NVARCHAR), "NVARCHsAR" },
//{ String.valueOf(Types.LONGNVARCHAR), "LONG_NVARCHAR" },
//{ String.valueOf(Types.NCLOB), "NCLOB" },
//{ String.valueOf(Types.SQLXML), "SQLXML" },
};
MysqlNativeTypeCatalog mntCatalog = new MysqlNativeTypeCatalog();
mntCatalog.load();
for (String[] rec : data) {
int sqlType = Integer.valueOf(rec[0]);
String mysqlTypeStr = rec[1];
MysqlNativeType mysqlNativeType = (MysqlNativeType) mntCatalog.findType(sqlType, true);
MysqlNativeType expectedMnType = (MysqlNativeType) mntCatalog.findType(mysqlTypeStr, true);
assertEquals("Sql type " + sqlType + " should map to correct mysqlType",
expectedMnType, mysqlNativeType);
}
//mntCatalog.getTypesByName();
} catch (Exception e) {
failWithStackTrace(e);
}
}
}