aboutsummaryrefslogtreecommitdiff
path: root/src/interfaces/jdbc/org/postgresql/test/TestUtil.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/interfaces/jdbc/org/postgresql/test/TestUtil.java')
-rw-r--r--src/interfaces/jdbc/org/postgresql/test/TestUtil.java178
1 files changed, 178 insertions, 0 deletions
diff --git a/src/interfaces/jdbc/org/postgresql/test/TestUtil.java b/src/interfaces/jdbc/org/postgresql/test/TestUtil.java
new file mode 100644
index 00000000000..a9f9dfdf3f4
--- /dev/null
+++ b/src/interfaces/jdbc/org/postgresql/test/TestUtil.java
@@ -0,0 +1,178 @@
+package org.postgresql.test;
+
+import java.sql.*;
+import junit.framework.TestCase;
+
+/*
+ * Utility class for JDBC tests
+ */
+public class TestUtil
+{
+ /*
+ * Returns the Test database JDBC URL
+ */
+ public static String getURL()
+ {
+ return System.getProperty("database");
+ }
+
+ /*
+ * Returns the Postgresql username
+ */
+ public static String getUser()
+ {
+ return System.getProperty("username");
+ }
+
+ /*
+ * Returns the user's password
+ */
+ public static String getPassword()
+ {
+ return System.getProperty("password");
+ }
+
+ /*
+ * Helper - opens a connection.
+ */
+ public static java.sql.Connection openDB()
+ {
+ try
+ {
+ Class.forName("org.postgresql.Driver");
+ return java.sql.DriverManager.getConnection(getURL(), getUser(), getPassword());
+ }
+ catch (ClassNotFoundException ex)
+ {
+ TestCase.fail(ex.getMessage());
+ }
+ catch (SQLException ex)
+ {
+ TestCase.fail(ex.getMessage());
+ }
+ return null;
+ }
+
+ /*
+ * Helper - closes an open connection. This rewrites SQLException to a failed
+ * assertion. It's static so other classes can use it.
+ */
+ public static void closeDB(Connection con)
+ {
+ try
+ {
+ if (con != null)
+ con.close();
+ }
+ catch (SQLException ex)
+ {
+ TestCase.fail(ex.getMessage());
+ }
+ }
+
+ /*
+ * Helper - creates a test table for use by a test
+ */
+ public static void createTable(Connection con,
+ String table,
+ String columns)
+ {
+ try
+ {
+ Statement st = con.createStatement();
+ try
+ {
+ // Drop the table
+ dropTable(con, table);
+
+ // Now create the table
+ st.executeUpdate("create table " + table + " (" + columns + ")");
+ }
+ finally
+ {
+ st.close();
+ }
+ }
+ catch (SQLException ex)
+ {
+ TestCase.fail(ex.getMessage());
+ }
+ }
+
+ /*
+ * Helper - drops a table
+ */
+ public static void dropTable(Connection con, String table)
+ {
+ try
+ {
+ Statement stmt = con.createStatement();
+ try
+ {
+ stmt.executeUpdate("DROP TABLE " + table);
+ }
+ catch (SQLException ex)
+ {
+ // ignore
+ }
+ }
+ catch (SQLException ex)
+ {
+ TestCase.fail(ex.getMessage());
+ }
+ }
+
+ /*
+ * Helper - generates INSERT SQL - very simple
+ */
+ public static String insertSQL(String table, String values)
+ {
+ return insertSQL(table, null, values);
+ }
+
+ public static String insertSQL(String table, String columns, String values)
+ {
+ String s = "INSERT INTO " + table;
+
+ if (columns != null)
+ s = s + " (" + columns + ")";
+
+ return s + " VALUES (" + values + ")";
+ }
+
+ /*
+ * Helper - generates SELECT SQL - very simple
+ */
+ public static String selectSQL(String table, String columns)
+ {
+ return selectSQL(table, columns, null, null);
+ }
+
+ public static String selectSQL(String table, String columns, String where)
+ {
+ return selectSQL(table, columns, where, null);
+ }
+
+ public static String selectSQL(String table, String columns, String where, String other)
+ {
+ String s = "SELECT " + columns + " FROM " + table;
+
+ if (where != null)
+ s = s + " WHERE " + where;
+ if (other != null)
+ s = s + " " + other;
+
+ return s;
+ }
+
+ /*
+ * Helper to prefix a number with leading zeros - ugly but it works...
+ * @param v value to prefix
+ * @param l number of digits (0-10)
+ */
+ public static String fix(int v, int l)
+ {
+ String s = "0000000000".substring(0, l) + Integer.toString(v);
+ return s.substring(s.length() - l);
+ }
+}