import java.sql.SQLException;
import java.sql.Types;
+import javax.sql.rowset.serial.SerialBlob;
+import javax.sql.rowset.serial.SerialException;
+
+import junit.framework.Assert;
+
+import net.jaekl.squelch.db.DbDriver;
+import net.jaekl.squelch.db.DbDriverMock;
import net.jaekl.squelch.sql.Column;
import net.jaekl.squelch.sql.Row;
@Test
public void test_printTable_empTable() throws IOException, SQLException
{
+ DbDriverMock driver = new DbDriverMock();
TabularMock tabular = createEmpTable();
try (
PrintWriter pw = new PrintWriter(new OutputStreamWriter(baos, StandardCharsets.UTF_8));
)
{
- tabular.printTable(pw);
+ tabular.printTable(driver, pw, "No rows returned.");
pw.close();
baos.close();
String actual = baos.toString();
- assertEquals( "+-------+---------+----------+\n"
- + "| EmpId |FirstName| LastName |\n"
- + "+-------+---------+----------+\n"
- + "|12345 |Fred |Flintstone|\n"
- + "|7654321|Barney |Rubble |\n"
- + "+-------+---------+----------+\n"
+ 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_printTable_withNulls() throws IOException, SQLException
+ {
+ DbDriverMock driver = new DbDriverMock();
+
+ TabularMock tabular = createTableWithNulls();
+ driver.set(DbDriver.SUPPRESS_NULLS, true);
+
+ try (
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ PrintWriter pw = new PrintWriter(new OutputStreamWriter(baos, StandardCharsets.UTF_8));
+ )
+ {
+ tabular.printTable(driver, pw, "No rows returned.");
+ pw.close();
+ baos.close();
+ String actual = baos.toString();
+ assertEquals( "+---------+--------+------------+\n"
+ + "| EmpId | Value1 | Value3 |\n"
+ + "+---------+--------+------------+\n"
+ + "| 12345 | Fred | Flintstone |\n"
+ + "| 7654321 | Barney | Rubble |\n"
+ + "+---------+--------+------------+\n"
+ + "2 row(s) returned.\n",
+ actual);
+ }
+
+ tabular = createTableWithNulls();
+ driver.set(DbDriver.SUPPRESS_NULLS, false);
+
+ try (
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ PrintWriter pw = new PrintWriter(new OutputStreamWriter(baos, StandardCharsets.UTF_8));
+ )
+ {
+ tabular.printTable(driver, pw, "No rows returned.");
+ pw.close();
+ baos.close();
+ String actual = baos.toString();
+ assertEquals( "+---------+--------+--------+------------+\n"
+ + "| EmpId | Value1 | Value2 | Value3 |\n"
+ + "+---------+--------+--------+------------+\n"
+ + "| 12345 | Fred | null | Flintstone |\n"
+ + "| 7654321 | Barney | null | Rubble |\n"
+ + "+---------+--------+--------+------------+\n"
+ + "2 row(s) returned.\n",
+ actual);
+ }
+
+ }
+
@Test
public void test_repChar() {
Tabular tabular = new TabularMock();
assertEquals("------", tabular.repChar('-', 6));
}
+ @Test
+ public void test_stringify() throws SerialException, SQLException {
+ Tabular tabular = new TabularMock();
+
+ String[] data = {
+ "This is the way the world ends, not with a bang but a whimper.",
+
+ "To be, or not to be, that is the question:\n" +
+ "Whether 'tis Nobler in the mind to suffer\n" +
+ "The Slings and Arrows of outrageous Fortune,\n" +
+ "Or to take Arms against a Sea of troubles,\n" +
+ "And by opposing end them: to die, to sleep\n" +
+ "No more; and by a sleep, to say we end\n" +
+ "The Heart-ache, and the thousand Natural shocks\n" +
+ "That Flesh is heir to? 'Tis a consummation\n" +
+ "Devoutly to be wished. To die, to sleep,\n" +
+ "To sleep, perchance to Dream; aye, there's the rub,\n" +
+ "For in that sleep of death, what dreams may come,\n" +
+ "When we have shuffled off this mortal coil,\n" +
+ "Must give us pause. There's the respect\n" +
+ "That makes Calamity of so long life:\n",
+
+ "ἄνδρα μοι ἔννεπε, μοῦσα, πολύτροπον, ὃς μάλα πολλὰ\n" +
+ "πλάγχθη, ἐπεὶ Τροίης ἱερὸν πτολίεθρον ἔπερσεν:\n" +
+ "πολλῶν δ᾽ ἀνθρώπων ἴδεν ἄστεα καὶ νόον ἔγνω,\n" +
+ "πολλὰ δ᾽ ὅ γ᾽ ἐν πόντῳ πάθεν ἄλγεα ὃν κατὰ θυμόν,\n" +
+ "5ἀρνύμενος ἥν τε ψυχὴν καὶ νόστον ἑταίρων.\n" +
+ "ἀλλ᾽ οὐδ᾽ ὣς ἑτάρους ἐρρύσατο, ἱέμενός περ:\n" +
+ "αὐτῶν γὰρ σφετέρῃσιν ἀτασθαλίῃσιν ὄλοντο,\n" +
+ "νήπιοι, οἳ κατὰ βοῦς Ὑπερίονος Ἠελίοιο\n" +
+ "ἤσθιον: αὐτὰρ ὁ τοῖσιν ἀφείλετο νόστιμον ἦμαρ.\n" +
+ "10τῶν ἁμόθεν γε, θεά, θύγατερ Διός, εἰπὲ καὶ ἡμῖν.\n"
+ };
+
+ for (String datum : data)
+ {
+ byte[] content = datum.getBytes(StandardCharsets.UTF_8);
+ SerialBlob sblob = new SerialBlob(content);
+
+ String expected = datum;
+ String actual = tabular.stringify(sblob);
+
+ Assert.assertEquals(expected, actual);
+ }
+ }
+
+
private TabularMock createEmpTable()
{
TabularMock tabular = new TabularMock();
return tabular;
}
+
+ private TabularMock createTableWithNulls()
+ {
+ TabularMock tabular = new TabularMock();
+
+ Column[] cols = {
+ new Column("EmpId", Long.class, 10),
+ new Column("Value1", String.class, 14),
+ new Column("Value2", String.class, 14),
+ new Column("Value3", 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, null);
+ row.setValue(4, "Flintstone");
+ tabular.mock_addRow(row);
+
+ row = new Row(cols.length);
+ row.setValue(1, Long.valueOf(7654321));
+ row.setValue(2, "Barney");
+ row.setValue(3, null);
+ row.setValue(4, "Rubble");
+ tabular.mock_addRow(row);
+
+ return tabular;
+ }
}