/* * 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.math.BigDecimal; import java.sql.Date; import java.sql.SQLException; import java.sql.Types; import junit.framework.TestCase; import org.apache.log4j.BasicConfigurator; public class NumberColumnGeneratorTest extends TestCase { private static final FieldInfo FIELD_INFO = new FieldInfo(new TableName("TABLE_A"), "FIELD_A", 1); public void test_with_Expression() throws Exception { // Construction du generator Padder padder = new Padder("0", 10, false); NumberColumnGenerator ncg = new NumberColumnGenerator(new FieldInfo(new TableName("TABLE_A"), "FIELD_A", 1), "DEST_FIELD", ".", "#,###.00", padder, new GeneratorExpression( "iif(Valeur_nulle, \"NA\", outil.format(Valeur * 2) )", Types.NUMERIC), false); // Simulation acces BD Object[][] matrix = {{"COL_1", "FIELD_B", "FIELD_C"}, {new BigDecimal("5.00"), null, "FININF"}, {null, null, "FININF"}}; ResultSet rs = new FakeResultSet(matrix).getStub(); rs.next(); // Lancement du test assertEquals("0000010.00", ncg.proceedField(rs)); rs.next(); assertEquals("00000000NA", ncg.proceedField(rs)); } 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(); NumberColumnGenerator ncg = new NumberColumnGenerator(new FieldInfo(new TableName("TABLE_A"), "FIELD_Z", 1), "DEST_FIELD", ".", "#,###.##", null); try { ncg.proceedField(rs); fail("Le test doit echouer ! le champ FIELD_Z n'existe pas"); } catch (SQLException e) { // c'est normal ! } } public void test_convertField_getFieldAlias() throws Exception { NumberColumnGenerator ncg = new NumberColumnGenerator(new FieldInfo(new TableName("TABLE_A"), "FIELD_Z", 1), "DEST_FIELD", ",", "#,###.##", null); assertEquals(ncg.getFieldAlias(), "COL_1"); } public void test_convertField_getFullDbTableName() throws Exception { NumberColumnGenerator ncg = new NumberColumnGenerator(new FieldInfo(new TableName("TABLE_A"), "FIELD_Z", 1), "DEST_FIELD", ",", "#,###.##", null); assertEquals(ncg.getFieldInfo().getAlias(), ncg.getFieldAlias()); } public void test_convertField_nullArguments() throws Exception { try { new NumberColumnGenerator(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_convertField_nullNumber() 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(" ", 10, false); NumberColumnGenerator ncg = new NumberColumnGenerator(FIELD_INFO, "DEST_FIELD", ".", "#,###.##", null); NumberColumnGenerator ncgTwin = new NumberColumnGenerator(FIELD_INFO, "DEST_FIELD", ".", "#,###.##", padder); assertEquals(ncg.proceedField(rs), ""); assertEquals(ncgTwin.proceedField(rs), " "); } public void test_proceedFieldBigDecimal() throws Exception { Object[][] matrix = {{"COL_1", "TABLE_A_FIELD_B", "TABLE_A_FIELD_C"}, {new BigDecimal("12233.2500"), null, "FININF"}}; ResultSet rs = new FakeResultSet(matrix).getStub(); rs.next(); Padder padder = new Padder("0", 12, false); NumberColumnGenerator ncg = new NumberColumnGenerator(FIELD_INFO, "DEST_FIELD", ",", "0.0000", padder); NumberColumnGenerator ncgTwin = new NumberColumnGenerator(FIELD_INFO, "DEST_FIELD", ",", "0.0000", null); assertEquals(ncg.proceedField(rs), "0012233,2500"); assertEquals(ncgTwin.proceedField(rs), "12233,2500"); } public void test_proceedFieldBigDecimal_OnlyDecimal() throws Exception { Object[][] matrix = {{"COL_1", "TABLE_A_FIELD_B", "TABLE_A_FIELD_C"}, {new BigDecimal("0.2500"), null, "FININF"}}; ResultSet rs = new FakeResultSet(matrix).getStub(); rs.next(); Padder padder = new Padder("0", 12, false); NumberColumnGenerator ncg = new NumberColumnGenerator(FIELD_INFO, "DEST_FIELD", ",", "0.0000", padder); NumberColumnGenerator ncgTtwin = new NumberColumnGenerator(FIELD_INFO, "DEST_FIELD", ",", "0.0000", null); assertEquals(ncg.proceedField(rs), "0000000,2500"); assertEquals(ncgTtwin.proceedField(rs), "0,2500"); } public void test_proceedFieldDouble() throws Exception { Object[][] matrix = {{"COL_1", "TABLE_A_FIELD_B", "TABLE_A_FIELD_C"}, {new Double("122.25"), null, "FININF"}}; ResultSet rs = new FakeResultSet(matrix).getStub(); rs.next(); Padder padder = new Padder("0", 10, false); NumberColumnGenerator ncg = new NumberColumnGenerator(FIELD_INFO, "DEST_FIELD", ",", "#,###.##", padder); NumberColumnGenerator ncgTwin = new NumberColumnGenerator(FIELD_INFO, "DEST_FIELD", ",", "#,###.##", null); assertEquals(ncg.proceedField(rs), "0000122,25"); assertEquals(ncgTwin.proceedField(rs), "122,25"); } public void test_proceedFieldDouble_NoDecimal() throws Exception { Object[][] matrix = {{"COL_1", "TABLE_A_FIELD_B", "TABLE_A_FIELD_C"}, {new Double("122"), null, "FININF"}}; ResultSet rs = new FakeResultSet(matrix).getStub(); rs.next(); Padder padder = new Padder("0", 10, false); NumberColumnGenerator ncg = new NumberColumnGenerator(FIELD_INFO, "DEST_FIELD", ".", "#,###.##", padder); NumberColumnGenerator ncgTwin = new NumberColumnGenerator(FIELD_INFO, "DEST_FIELD", ".", "#,###.##", null); assertEquals(ncg.proceedField(rs), "0000000122"); assertEquals(ncgTwin.proceedField(rs), "122"); } public void test_proceedFieldDouble_Point() throws Exception { Object[][] matrix = {{"COL_1", "TABLE_A_FIELD_B", "TABLE_A_FIELD_C"}, {new Double("122.25"), null, "FININF"}}; ResultSet rs = new FakeResultSet(matrix).getStub(); rs.next(); Padder padder = new Padder("0", 10, false); NumberColumnGenerator ncg = new NumberColumnGenerator(FIELD_INFO, "DEST_FIELD", ".", "#,###.##", padder); NumberColumnGenerator ncgTwin = new NumberColumnGenerator(FIELD_INFO, "DEST_FIELD", ".", "#,###.##", null); assertEquals(ncg.proceedField(rs), "0000122.25"); assertEquals(ncgTwin.proceedField(rs), "122.25"); } public void test_formatInteger() throws Exception { Object[][] matrix = {{"COL_1", "TABLE_A_FIELD_B", "TABLE_A_FIELD_C"}, {new Integer("12225"), null, "FININF"}}; ResultSet rs = new FakeResultSet(matrix).getStub(); rs.next(); Padder padder = new Padder("0", 10, false); NumberColumnGenerator ncg = new NumberColumnGenerator(FIELD_INFO, "DEST_FIELD", ",", "#", padder); NumberColumnGenerator ncgTwin = new NumberColumnGenerator(FIELD_INFO, "DEST_FIELD", ",", "#", null); assertEquals(ncg.proceedField(rs), "0000012225"); assertEquals(ncgTwin.proceedField(rs), "12225"); } @Override protected void setUp() throws java.lang.Exception { BasicConfigurator.resetConfiguration(); BasicConfigurator.configure(); } }