/*
* codjo.net
*
* Common Apache License 2.0
*/
package net.codjo.broadcast.common.columns;
import java.sql.ResultSet;
import net.codjo.sql.builder.FieldInfo;
import net.codjo.sql.builder.TableName;
import fakedb.FakeResultSet;
import java.sql.Date;
import java.sql.SQLException;
import java.sql.Types;
import junit.framework.TestCase;
public class BooleanColumnGeneratorTest extends TestCase {
private FieldInfo fieldInfo = new FieldInfo(new TableName("TABLE_A"), "FIELD_A", 1);
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();
BooleanColumnGenerator bcg = new BooleanColumnGenerator(fieldInfo, "DEST_FIELD", null);
try {
bcg.proceedField(rs);
fail("Le test doit echouer ! le champ FIELD_Z n'existe pas");
}
catch (SQLException e) {
assertEquals("Unknown column name : COL_1", e.getMessage());
}
}
public void test_convertField_getFieldAlias() throws Exception {
BooleanColumnGenerator bcg = new BooleanColumnGenerator(fieldInfo, "DEST_FIELD", null);
assertEquals(bcg.getFieldAlias(), fieldInfo.getAlias());
}
public void test_convertField_getFullDbFieldName() throws Exception {
BooleanColumnGenerator bcg = new BooleanColumnGenerator(fieldInfo, "DEST_FIELD", null);
assertEquals(bcg.getFieldInfo().getFullDBName(), "TABLE_A.FIELD_A");
}
public void test_convertField_nullArguments() throws Exception {
try {
new BooleanColumnGenerator(null, "DEST_FIELD", null);
fail("Le test doit echouer : l'argument p0 ne peut pas etre null");
}
catch (IllegalArgumentException e) {
assertEquals("Parametres invalides", e.getMessage());
}
}
public void test_proceedField() throws Exception {
Object[][] matrix = {{"COL_1", "XXX", "COL_2"}, {Boolean.TRUE, Boolean.TRUE, Boolean.FALSE}};
ResultSet rs = new FakeResultSet(matrix).getStub();
rs.next();
Padder padder = new Padder(" ", 20, false);
BooleanColumnGenerator bcg = new BooleanColumnGenerator(fieldInfo, "DEST_FIELD", null);
FieldInfo fieldInfo2 = new FieldInfo(new TableName("TABLE_A"), "FIELD_C", 2);
BooleanColumnGenerator bcgTwin = new BooleanColumnGenerator(fieldInfo2, "DEST_FIELD", padder);
assertEquals(bcg.proceedField(rs), "Vrai");
assertEquals(bcgTwin.proceedField(rs), " Faux");
}
public void test_with_Expression() throws Exception {
Padder padder = new Padder(" ", 11, false);
GeneratorExpression expression = new GeneratorExpression(
"iif(Valeur_nulle, \"NA\", iif(Valeur,\"BOBO\",\"Vrai\"))",
Types.BIT);
BooleanColumnGenerator ncg = new BooleanColumnGenerator(fieldInfo, "DEST_FIELD", padder, expression,
false);
// Simulation acces BD
Object[][] matrix = {{"COL_1", "FIELD_B", "FIELD_C"},
{Boolean.TRUE, null, "FININF"},
{null, null, "FININF"}};
ResultSet rs = new FakeResultSet(matrix).getStub();
rs.next();
// Lancement du test
assertEquals(" BOBO", ncg.proceedField(rs));
rs.next();
assertEquals(" NA", ncg.proceedField(rs));
}
}