You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
postgres/src/interfaces/jdbc/org/postgresql/test/JDBC2Tests.java

197 lines
4.6 KiB

package org.postgresql.test;
import junit.framework.TestSuite;
import junit.framework.TestCase;
import org.postgresql.test.jdbc2.*;
import java.sql.*;
/**
* Executes all known tests for JDBC2 and includes some utility methods.
*/
public class JDBC2Tests extends TestSuite {
/**
* 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(JDBC2Tests.getURL(),JDBC2Tests.getUser(),JDBC2Tests.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);
}
/**
* The main entry point for JUnit
*/
public static TestSuite suite() {
TestSuite suite= new TestSuite();
//
// Add one line per class in our test cases. These should be in order of
// complexity.
// ANTTest should be first as it ensures that test parameters are
// being sent to the suite. It also initialises the database (if required)
// with some simple global tables (will make each testcase use its own later).
//
suite.addTestSuite(ANTTest.class);
// Basic Driver internals
suite.addTestSuite(DriverTest.class);
suite.addTestSuite(ConnectionTest.class);
suite.addTestSuite(DatabaseMetaDataTest.class);
suite.addTestSuite(EncodingTest.class);
// Connectivity/Protocols
// ResultSet
// Time, Date, Timestamp
suite.addTestSuite(DateTest.class);
suite.addTestSuite(TimeTest.class);
suite.addTestSuite(TimestampTest.class);
// PreparedStatement
// BatchExecute
suite.addTestSuite(BatchExecuteTest.class);
// MetaData
// Other misc tests, based on previous problems users have had or specific
// features some applications require.
suite.addTestSuite(JBuilderTest.class);
suite.addTestSuite(MiscTest.class);
// Fastpath/LargeObject
suite.addTestSuite(BlobTest.class);
// That's all folks
return suite;
}
}