/* * JBoss, Home of Professional Open Source. * * See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing. * * See the AUTHORS.txt file distributed with this work for a full listing of individual contributors. */ package org.teiid.types; import static org.junit.Assert.assertNotSame; import static org.junit.Assert.assertSame; import static org.junit.Assert.fail; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import org.junit.Test; import org.teiid.core.types.DataTypeManagerService; import org.teiid.core.types.DataTypeManagerService.DefaultDataTypes; import org.teiid.core.types.NullType; import org.teiid.designer.runtime.version.spi.ITeiidServerVersion; import org.teiid.designer.runtime.version.spi.TeiidServerVersion; import org.teiid.designer.runtime.version.spi.TeiidServerVersion.Version; import org.teiid.designer.type.IDataTypeManagerService.DataSourceTypes; import org.teiid.designer.type.IDataTypeManagerService.DataTypeName; /** * */ @SuppressWarnings( {"javadoc", "nls"} ) public abstract class AbstractTestDataTypeManagerService { protected final Map<ITeiidServerVersion, DataTypeManagerService> dataTypeManagerCache = new HashMap<ITeiidServerVersion, DataTypeManagerService>(); /** * @param teiidVersion */ public AbstractTestDataTypeManagerService(Version... teiidVersions) { for (Version teiidVersion : teiidVersions) { dataTypeManagerCache.put(teiidVersion.get(), DataTypeManagerService.getInstance(teiidVersion.get())); } } @Test public void testCachedInstance() { for (Entry<ITeiidServerVersion, DataTypeManagerService> entry : dataTypeManagerCache.entrySet()) { ITeiidServerVersion teiidVersion = entry.getKey(); DataTypeManagerService dataTypeManager = entry.getValue(); assertSame(dataTypeManager, DataTypeManagerService.getInstance(teiidVersion)); // Using old teiid version as unlikely ever to match assertNotSame(dataTypeManager, DataTypeManagerService.getInstance(new TeiidServerVersion("6.0.0"))); //$NON-NLS-1$ } } @Test public void testGetDefaultDataType() { for (Entry<ITeiidServerVersion, DataTypeManagerService> entry : dataTypeManagerCache.entrySet()) { DataTypeManagerService dataTypeManager = entry.getValue(); // Test for null try { dataTypeManager.getDefaultDataType(null); fail("Should not allow null data type name"); } catch (IllegalArgumentException ex) { // should throw an exception } // Top of the list assertSame(DefaultDataTypes.BIG_DECIMAL.getId(), dataTypeManager.getDefaultDataType(DataTypeName.BIGDECIMAL)); // Middle of the list assertSame(DefaultDataTypes.BLOB.getId(), dataTypeManager.getDefaultDataType(DataTypeName.BLOB)); } } @Test public void testGetDataType() { for (Entry<ITeiidServerVersion, DataTypeManagerService> entry : dataTypeManagerCache.entrySet()) { DataTypeManagerService dataTypeManager = entry.getValue(); assertSame(DefaultDataTypes.NULL, dataTypeManager.getDataType((String)null)); assertSame(DefaultDataTypes.STRING, dataTypeManager.getDataType("string")); assertSame(DefaultDataTypes.STRING, dataTypeManager.getDataType("STRING")); assertSame(DefaultDataTypes.STRING, dataTypeManager.getDataType("String[]")); assertSame(DefaultDataTypes.OBJECT, dataTypeManager.getDataType("NoSuchObject")); } } @Test public void testGetDataTypeClass() { for (Entry<ITeiidServerVersion, DataTypeManagerService> entry : dataTypeManagerCache.entrySet()) { DataTypeManagerService dataTypeManager = entry.getValue(); assertSame(NullType.class, dataTypeManager.getDataTypeClass((String)null)); assertSame(String.class, dataTypeManager.getDataTypeClass("string")); assertSame(String.class, dataTypeManager.getDataTypeClass("STRING")); assertSame(String[].class, dataTypeManager.getDataTypeClass("String[]")); assertSame(Object.class, dataTypeManager.getDataTypeClass("NoSuchObject")); } } @Test public void testGetDefaultDataTypeClass() { for (Entry<ITeiidServerVersion, DataTypeManagerService> entry : dataTypeManagerCache.entrySet()) { DataTypeManagerService dataTypeManager = entry.getValue(); try { dataTypeManager.getDefaultDataClass(null); fail("Should not allow null data type name"); } catch (IllegalArgumentException ex) { // should throw an exception } assertSame(String.class, dataTypeManager.getDefaultDataClass(DataTypeName.STRING)); assertSame(Object.class, dataTypeManager.getDefaultDataClass(DataTypeName.OBJECT)); } } @Test public void testGetDataType4Class() { for (Entry<ITeiidServerVersion, DataTypeManagerService> entry : dataTypeManagerCache.entrySet()) { DataTypeManagerService dataTypeManager = entry.getValue(); try { dataTypeManager.getDataType((Class<?>)null); fail("Should not allow null class parameter"); } catch (IllegalArgumentException ex) { // should throw an exception } assertSame(DefaultDataTypes.LONG, dataTypeManager.getDataType(Long.class)); assertSame(DefaultDataTypes.STRING, dataTypeManager.getDataType(String.class)); } } @Test public void testGetDataSourceType() { for (Entry<ITeiidServerVersion, DataTypeManagerService> entry : dataTypeManagerCache.entrySet()) { DataTypeManagerService dataTypeManager = entry.getValue(); assertSame(DataSourceTypes.JDBC.id(), dataTypeManager.getDataSourceType(DataSourceTypes.JDBC)); assertSame(DataSourceTypes.UNKNOWN.id(), dataTypeManager.getDataSourceType(DataSourceTypes.UNKNOWN)); } } }