/* * 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.Timestamp; import java.sql.Types; import junit.framework.TestCase; public class DateColumnGeneratorTest extends TestCase { private static final FieldInfo FIELD_INFO = new FieldInfo(new TableName("TABLE_A"), "FIELD_A", 1); public void test_formatField() throws Exception { Object[][] matrix = {{"COL_1", "COL_2", "TABLE_A_FIELD_B", "TABLE_A_FIELD_C"}, {Timestamp.valueOf("1966-10-10 12:00:00"), Timestamp.valueOf("1966-10-10 12:00:00"), null, "FININF"}}; ResultSet rs = new FakeResultSet(matrix).getStub(); rs.next(); Padder padder = new Padder(" ", 18, false); DateColumnGenerator dcg = new DateColumnGenerator(FIELD_INFO, "DEST_FIELD", "dd/MM/yyyy", null); DateColumnGenerator dcgTwin = new DateColumnGenerator(FIELD_INFO, "DEST_FIELD", "dd/MM/yyyy", padder); assertEquals(dcg.proceedField(rs), "10/10/1966"); assertEquals(dcgTwin.proceedField(rs), " 10/10/1966"); } public void test_proceedField_DateAndTime() throws Exception { ResultSet rs = new FakeResultSet(new Object[][]{ {"COL_1"}, {java.sql.Timestamp.valueOf("2001-01-18 16:20:00")} }).getStub(); FieldInfo fieldInfo2 = new FieldInfo(new TableName("#BOBO"), "DATE_HEURE", 1); DateColumnGenerator dcg = new DateColumnGenerator(fieldInfo2, "XXX", "dd/MM/yyyy HH:mm", null); rs.next(); assertEquals("18/01/2001 16:20", dcg.proceedField(rs)); } public void test_proceedField_buildColumnHeader() throws Exception { DateColumnGenerator dcg = new DateColumnGenerator(FIELD_INFO, "DEST_FIELD", "dd/MM/yyyy", null); assertEquals(dcg.buildColumnHeader(), "DEST_FIELD"); } public void test_proceedField_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(); DateColumnGenerator dcg = new DateColumnGenerator(FIELD_INFO, "DEST_FIELD", "dd/MM/yyyy", null); try { dcg.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_proceedField_getFieldAlias() throws Exception { DateColumnGenerator dcg = new DateColumnGenerator(FIELD_INFO, "DEST_FIELD", "dd/MM/yyyy", null); assertEquals(dcg.getFieldAlias(), dcg.getFieldInfo().getAlias()); } public void test_proceedField_getFullDBFieldName() throws Exception { DateColumnGenerator dcg = new DateColumnGenerator(FIELD_INFO, "DEST_FIELD", "dd/MM/yyyy", null); assertEquals(dcg.getFieldInfo().getAlias(), "COL_1"); } public void test_proceedField_nullArguments() throws Exception { try { new DateColumnGenerator(null, "DEST_FIELD", "dd/MM/yyyy", 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_nullDate() 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(" ", 18, false); DateColumnGenerator dcg = new DateColumnGenerator(FIELD_INFO, "DEST_FIELD", "dd/MM/yyyy", null); DateColumnGenerator dcgTwin = new DateColumnGenerator(FIELD_INFO, "DEST_FIELD", "dd/MM/yyyy", padder); assertEquals(dcg.proceedField(rs), ""); assertEquals(dcgTwin.proceedField(rs), " "); } public void test_with_Expression() throws Exception { // Construction du generator Padder padder = new Padder(" ", 11, false); GeneratorExpression expression = new GeneratorExpression("iif(Valeur_nulle, \"NA\", outil.format(Valeur ) )", Types.DATE); DateColumnGenerator ncg = new DateColumnGenerator(FIELD_INFO, "DEST_FIELD", "dd/MM/yyyy", padder, expression, false); // Simulation acces BD Object[][] matrix = {{"COL_1", "FIELD_B", "FIELD_C"}, {java.sql.Date.valueOf("2003-03-18"), null, "FININF"}, {null, null, "FININF"}}; ResultSet rs = new FakeResultSet(matrix).getStub(); rs.next(); // Lancement du test assertEquals(" 18/03/2003", ncg.proceedField(rs)); rs.next(); assertEquals(" NA", ncg.proceedField(rs)); } }