/*
* codjo.net
*
* Common Apache License 2.0
*/
package net.codjo.broadcast.common.columns;
import fakedb.FakeResultSet;
import java.sql.Date;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import junit.framework.TestCase;
import net.codjo.sql.builder.FieldInfo;
import net.codjo.sql.builder.TableName;
public class StringColumnGeneratorTest extends TestCase {
public void test_convertField_fieldNotFound()
throws Exception {
Object[][] matrix =
{
{"FIELD_A", "FIELD_B", "FIELD_C"},
{Date.valueOf("1966-10-10"), null, "FININF"}
};
ResultSet rs = new FakeResultSet(matrix).getStub();
rs.next();
StringColumnGenerator scg =
new StringColumnGenerator(new FieldInfo(new TableName("TABLE_A"), "FIELD_Z", 1),
"DEST_FIELD", null);
try {
scg.proceedField(rs);
fail("Le test doit echouer ! le champ FIELD_Z n'existe pas");
}
catch (SQLException e) {
// c'est normal !
}
}
/**
* A unit test for JUnit
*
* @throws Exception Description of the Exception
*/
public void test_convertField_getDbTableName()
throws Exception {
StringColumnGenerator scg =
new StringColumnGenerator(new FieldInfo(new TableName("TABLE_A"), "FIELD_Z", 1),
"DEST_FIELD", null);
assertEquals(scg.getFieldAlias(), scg.getFieldInfo().getAlias());
}
/**
* A unit test for JUnit
*
* @throws Exception Description of the Exception
*/
public void test_convertField_getFieldAlias()
throws Exception {
StringColumnGenerator scg =
new StringColumnGenerator(new FieldInfo(new TableName("TABLE_A"), "FIELD_Z", 1),
"DEST_FIELD", null);
assertEquals(scg.getFieldAlias(), "COL_1");
}
/**
* A unit test for JUnit
*
* @throws Exception Description of the Exception
*/
public void test_convertField_nullArguments() throws Exception {
try {
new StringColumnGenerator(new FieldInfo(new TableName(null), "FIELD_Z", 1), "DEST_FIELD", null);
fail("Le test doit echouer : l'argument p0 ne peut pas etre null");
}
catch (IllegalArgumentException e) {
// c'est normal !
}
try {
new StringColumnGenerator(new FieldInfo(new TableName("TABLE_A"), null, 1), "DEST_FIELD", null);
fail("Le test doit echouer : l'argument p1 ne peut pas etre null");
}
catch (IllegalArgumentException e) {
// c'est normal !
}
}
/**
* A unit test for JUnit
*
* @throws Exception Description of the Exception
*/
public void test_convertField_nullValue() throws Exception {
Object[][] matrix =
{
{"TABLE_A_FIELD_A", "COL_1", "TABLE_A_FIELD_C"},
{null, null, "FININF"}
};
ResultSet rs = new FakeResultSet(matrix).getStub();
rs.next();
Padder padder = new Padder(" ", 5, false);
StringColumnGenerator scg =
new StringColumnGenerator(new FieldInfo(new TableName("TABLE_A"), "FIELD_B", 1), "DEST_FIELD", null);
StringColumnGenerator scgTwin =
new StringColumnGenerator(new FieldInfo(new TableName("TABLE_A"), "FIELD_B", 1), "DEST_FIELD", padder);
assertEquals(scg.proceedField(rs), "");
assertEquals(scgTwin.proceedField(rs), " ");
}
/**
* A unit test for JUnit
*
* @throws Exception Description of the Exception
*/
public void test_proceedField() throws Exception {
Object[][] matrix =
{
{"COL_1", "TABLE_A_FIELD_B", "TABLE_A_FIELD_C"},
{"coucou c'est moi", null, null}
};
ResultSet rs = new FakeResultSet(matrix).getStub();
rs.next();
Padder padder = new Padder(" ", 20, false);
StringColumnGenerator scg =
new StringColumnGenerator(new FieldInfo(new TableName("TABLE_A"), "FIELD_A", 1), "DEST_FIELD", null);
StringColumnGenerator scgTwin =
new StringColumnGenerator(new FieldInfo(new TableName("TABLE_A"), "FIELD_A", 1), "DEST_FIELD", padder);
assertEquals(scg.proceedField(rs), "coucou c'est moi");
assertEquals(scgTwin.proceedField(rs), " coucou c'est moi");
}
public void test_with_Expression() throws Exception {
// Construction du generator
Padder padder = new Padder("0", 10, false);
StringColumnGenerator ncg =
new StringColumnGenerator(new FieldInfo(new TableName("TABLE_A"), "FIELD_A", 1),
"DEST_FIELD", padder,
new GeneratorExpression(
"iif(Valeur_nulle, \"NA\", outil.format(Valeur + \"a\" ) )",
Types.VARCHAR), false);
// Simulation acces BD
Object[][] matrix =
{
{"COL_1", "FIELD_B", "FIELD_C"},
{"bobo", null, "FININF"},
{null, null, "FININF"}
};
ResultSet rs = new FakeResultSet(matrix).getStub();
rs.next();
// Lancement du test
assertEquals("00000boboa", ncg.proceedField(rs));
rs.next();
assertEquals("00000000NA", ncg.proceedField(rs));
}
}