package net.codjo.segmentation.server.preference.family;
import net.codjo.database.common.api.DatabaseFactory;
import net.codjo.database.common.api.JdbcFixture;
import java.sql.Types;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import junit.framework.TestCase;
public class TableMetaDataTest extends TestCase {
private JdbcFixture jdbcFixture;
@Override
protected void setUp() throws Exception {
jdbcFixture = new DatabaseFactory().createJdbcFixture();
jdbcFixture.doSetUp();
}
@Override
protected void tearDown() throws Exception {
jdbcFixture.doTearDown();
}
public void test_constructor() throws Exception {
TableMetaData table = new TableMetaData("AP_TRUC", new ArrayList<ColumnMetaData>());
assertEquals("AP_TRUC", table.getName());
}
public void test_createTableMetaData() throws Exception {
jdbcFixture.executeUpdate(
"create table #RESULT ( COL_STR varchar(10), COL_NUM numeric(8,5), ANOMALY int, ANOMALY_LOG varchar(255)) ");
TableMetaData table =
TableMetaData.create("#RESULT", jdbcFixture.getConnection());
assertEquals("#RESULT", table.getName());
assertEquals(Types.VARCHAR, table.getColumnType("COL_STR"));
assertEquals(Types.NUMERIC, table.getColumnType("COL_NUM"));
}
public void test_getColumnNames_fromDatabase()
throws Exception {
jdbcFixture.executeUpdate(
"create table #RESULT ( COL_STR varchar(10), COL_NUM numeric(8,5), ANOMALY int, ANOMALY_LOG varchar(255)) ");
TableMetaData table =
TableMetaData.create("#RESULT", jdbcFixture.getConnection());
String[] expectedColumns = new String[]{"COL_STR", "COL_NUM"};
assertEquals(Arrays.asList(expectedColumns), Arrays.asList(table.getColumnNames()));
}
public void test_getColumnNames_fromMetadata()
throws Exception {
List<ColumnMetaData> columnMetaDatas = new ArrayList<ColumnMetaData>(2);
columnMetaDatas.add(new ColumnMetaData("col1", 1));
columnMetaDatas.add(new ColumnMetaData("col2", 2));
TableMetaData table = new TableMetaData("AP_TRUC", columnMetaDatas);
String[] expectedColumns = new String[]{"col1", "col2"};
assertEquals(Arrays.asList(expectedColumns), Arrays.asList(table.getColumnNames()));
}
public void test_getColumnType() throws Exception {
List<ColumnMetaData> columnMetaDatas = new ArrayList<ColumnMetaData>(2);
columnMetaDatas.add(new ColumnMetaData("col1", 1));
columnMetaDatas.add(new ColumnMetaData("col2", 2));
TableMetaData table = new TableMetaData("AP_TRUC", columnMetaDatas);
assertEquals(1, table.getColumnType("col1"));
assertEquals(2, table.getColumnType("col2"));
}
public void test_getColumnType_error() throws Exception {
List<ColumnMetaData> columnMetaDatas = new ArrayList<ColumnMetaData>(1);
columnMetaDatas.add(new ColumnMetaData("col1", 1));
TableMetaData table = new TableMetaData("AP_TRUC", columnMetaDatas);
try {
table.getColumnType("unknown");
fail();
}
catch (IllegalArgumentException ex) {
assertEquals("La colonne 'unknown' n'appartient pas � la table 'AP_TRUC'",
ex.getMessage());
}
}
public void test_removeUnusedColumns_null() throws Exception {
List<ColumnMetaData> columnMetaDatas = new ArrayList<ColumnMetaData>(2);
columnMetaDatas.add(new ColumnMetaData("col1", 1));
columnMetaDatas.add(new ColumnMetaData("col2", 2));
TableMetaData table = new TableMetaData("AP_TRUC", columnMetaDatas);
table.removeUnusedColumns(null);
assertEquals(new ArrayList(), Arrays.asList(table.getColumnNames()));
}
public void test_removeUnusedColumns() throws Exception {
List<ColumnMetaData> columnMetaDatas = new ArrayList<ColumnMetaData>(2);
columnMetaDatas.add(new ColumnMetaData("col1", 1));
columnMetaDatas.add(new ColumnMetaData("col2", 2));
TableMetaData table = new TableMetaData("AP_TRUC", columnMetaDatas);
List<String> usedColumns = Arrays.asList("col2", "col3");
table.removeUnusedColumns(usedColumns);
List<String> expectedColumns = Arrays.asList("col2");
assertEquals(expectedColumns, Arrays.asList(table.getColumnNames()));
}
}