select queries now work, and print tabular output.
[squelch.git] / src / test / java / net / jaekl / squelch / stmt / TabularTest.java
index 6b5462dac3f00320f1a4b0b4cbdeebc0344fffbb..f6749f29293218d6c93464f438ea371fdb2c9ebd 100644 (file)
@@ -1,7 +1,12 @@
 package net.jaekl.squelch.stmt;
 
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
 
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
+import java.nio.charset.StandardCharsets;
 import java.sql.SQLException;
 import java.sql.Types;
 
@@ -11,18 +16,17 @@ 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_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));
        }
-       
+
        @Test
        public void test_classForSqlType() {
                Object[][] data = { 
@@ -70,7 +74,53 @@ public class TabularTest {
                        assertEquals(expected, actual);
                }
        }
+       
+       @Test
+       public void test_printCsv_empTable() throws IOException, SQLException
+       {
+               TabularMock tabular = createEmpTable();
+               
+               try (
+                               ByteArrayOutputStream baos = new ByteArrayOutputStream();
+                               PrintWriter pw = new PrintWriter(new OutputStreamWriter(baos, StandardCharsets.UTF_8));
+                       )
+               {
+                       tabular.printCsv(pw);
+                       pw.close();
+                       baos.close();
+                       String actual = baos.toString();
+                       assertEquals(  "EmpId,FirstName,LastName\n"
+                                            + "12345,Fred,Flintstone\n"
+                                            + "7654321,Barney,Rubble\n",
+                                            actual);
+               }               
+       }
 
+       @Test
+       public void test_printTable_empTable() throws IOException, SQLException
+       {
+               TabularMock tabular = createEmpTable();
+               
+               try (
+                               ByteArrayOutputStream baos = new ByteArrayOutputStream();
+                               PrintWriter pw = new PrintWriter(new OutputStreamWriter(baos, StandardCharsets.UTF_8));
+                       )
+               {
+                       tabular.printTable(pw);
+                       pw.close();
+                       baos.close();
+                       String actual = baos.toString();
+                       assertEquals(  "+-------+---------+----------+\n"
+                                            + "| EmpId |FirstName| LastName |\n"
+                                            + "+-------+---------+----------+\n"
+                                            + "|12345  |Fred     |Flintstone|\n"
+                                            + "|7654321|Barney   |Rubble    |\n"
+                                            + "+-------+---------+----------+\n"
+                                            + "2 row(s) returned.\n",
+                                            actual);
+               }
+       }
+       
        @Test
        public void test_repChar() {
                Tabular tabular = new TabularMock();
@@ -80,15 +130,30 @@ public class TabularTest {
                assertEquals("###", tabular.repChar('#', 3));
                assertEquals("------", tabular.repChar('-', 6));
        }
-
-       @Test
-       public void test_centrePad() {
-               Tabular tabular = new TabularMock();
+       
+       private TabularMock createEmpTable()
+       {
+               TabularMock 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));
+               Column[] cols = { 
+                               new Column("EmpId", Long.class, 10),
+                               new Column("FirstName", String.class, 14),
+                               new Column("LastName", String.class, 14)
+               };
+               tabular.mock_setCols(cols);
+               
+               Row row = new Row(cols.length);
+               row.setValue(1, Long.valueOf(12345));
+               row.setValue(2, "Fred");
+               row.setValue(3, "Flintstone");
+               tabular.mock_addRow(row);
+               
+               row = new Row(cols.length);
+               row.setValue(1, Long.valueOf(7654321));
+               row.setValue(2, "Barney");
+               row.setValue(3, "Rubble");
+               tabular.mock_addRow(row);
+               
+               return tabular;
        }
 }