Refactor tabular output for eventual re-use printing table metadata.
[squelch.git] / src / test / java / net / jaekl / squelch / stmt / TabularTest.java
diff --git a/src/test/java/net/jaekl/squelch/stmt/TabularTest.java b/src/test/java/net/jaekl/squelch/stmt/TabularTest.java
new file mode 100644 (file)
index 0000000..6b5462d
--- /dev/null
@@ -0,0 +1,94 @@
+package net.jaekl.squelch.stmt;
+
+import static org.junit.Assert.*;
+
+import java.sql.SQLException;
+import java.sql.Types;
+
+import net.jaekl.squelch.sql.Column;
+import net.jaekl.squelch.sql.Row;
+
+import org.junit.Test;
+
+public class TabularTest {
+       private static class TabularMock extends Tabular {
+               @Override
+               Column[] getCols() throws SQLException {
+                       return null;
+               }
+
+               @Override
+               Row getNext() {
+                       return null;
+               }
+       }
+       
+       @Test
+       public void test_classForSqlType() {
+               Object[][] data = { 
+                               { Types.ARRAY, Object.class },
+                               { Types.BIGINT, Object.class },
+                               { Types.BINARY, Object.class },
+                               { Types.BIT, Object.class },
+                               { Types.BLOB, Object.class },
+                               { Types.BOOLEAN, Boolean.class },
+                               { Types.CHAR, Character.class },
+                               { Types.CLOB, Object.class },
+                               { Types.DATALINK, Object.class },
+                               { Types.DATE, java.util.Date.class },
+                               { Types.DECIMAL, Double.class },
+                               { Types.DISTINCT, Object.class },
+                               { Types.DOUBLE, Double.class },
+                               { Types.FLOAT, Double.class },
+                               { Types.INTEGER, Long.class },
+                               { Types.JAVA_OBJECT, Object.class },
+                               { Types.LONGNVARCHAR, String.class },
+                               { Types.LONGVARBINARY, Object.class },
+                               { Types.NCHAR, String.class },
+                               { Types.NCLOB, Object.class },
+                               { Types.NULL, Object.class },
+                               { Types.NUMERIC, Double.class },
+                               { Types.NVARCHAR, String.class },
+                               { Types.OTHER, Object.class },
+                               { Types.REAL, Double.class },
+                               { Types.REF, Object.class },
+                               { Types.ROWID, Integer.class },
+                               { Types.SMALLINT, Integer.class },
+                               { Types.SQLXML, Object.class },
+                               { Types.STRUCT, Object.class },
+                               { Types.TIME, java.util.Date.class },
+                               { Types.TIMESTAMP, java.util.Date.class },
+                               { Types.TINYINT, Short.class },
+                               { Types.VARBINARY, Object.class },
+                               { Types.VARCHAR, String.class }
+               };
+               Tabular tabular = new TabularMock();
+               
+               for (Object[] datum : data) {
+                       Class<?> expected = (Class<?>)datum[1];
+                       Class<?> actual = tabular.classForSqlType((int) datum[0]);
+                       assertEquals(expected, actual);
+               }
+       }
+
+       @Test
+       public void test_repChar() {
+               Tabular tabular = new TabularMock();
+               
+               assertEquals("", tabular.repChar(' ', 0));
+               assertEquals("    ", tabular.repChar(' ', 4));
+               assertEquals("###", tabular.repChar('#', 3));
+               assertEquals("------", tabular.repChar('-', 6));
+       }
+
+       @Test
+       public void test_centrePad() {
+               Tabular tabular = new TabularMock();
+               
+               assertEquals("Vestibule", tabular.centrePad("Vestibule", 2));
+               assertEquals("  Fred  ", tabular.centrePad("Fred", 8));
+               assertEquals("NULL", tabular.centrePad(null, 0));
+               assertEquals("  NULL  ", tabular.centrePad(null, 8));
+               assertEquals("   Wilma    ", tabular.centrePad("Wilma", 12));
+       }
+}