summaryrefslogtreecommitdiff
path: root/src/interfaces/jdbc/org/postgresql/test/JDBC2Tests.java
diff options
context:
space:
mode:
authorPeter Mount <peter@retep.org.uk>2001-02-13 16:39:06 +0000
committerPeter Mount <peter@retep.org.uk>2001-02-13 16:39:06 +0000
commit3d21bf82c3e27396bd3598810cbcc6f7cdc05adf (patch)
tree0701214cf100311bc15314ae39a3ece1667729e9 /src/interfaces/jdbc/org/postgresql/test/JDBC2Tests.java
parent2410963e8cc6272022c0a556a3fd3c9a3bd617e9 (diff)
downloadpostgresql-3d21bf82c3e27396bd3598810cbcc6f7cdc05adf.tar.gz
Some more including the patch to DatabaseMetaData backed out by Bruce.
Tue Feb 13 16:33:00 GMT 2001 peter@retep.org.uk - More TestCases implemented. Refined the test suite api's. - Removed need for SimpleDateFormat in ResultSet.getDate() improving performance. - Rewrote ResultSet.getTime() so that it uses JDK api's better. Tue Feb 13 10:25:00 GMT 2001 peter@retep.org.uk - Added MiscTest to hold reported problems from users. - Fixed PGMoney. - JBuilder4/JDBCExplorer now works with Money fields. Patched Field & ResultSet (lots of methods) for this one. Also changed cash/money to return type DOUBLE not DECIMAL. This broke JBuilder as zero scale BigDecimal's can't have decimal places! - When a Statement is reused, the previous ResultSet is now closed. - Removed deprecated call in ResultSet.getTime() Thu Feb 08 18:53:00 GMT 2001 peter@retep.org.uk - Changed a couple of settings in DatabaseMetaData where 7.1 now supports those features - Implemented the DatabaseMetaData TestCase. Wed Feb 07 18:06:00 GMT 2001 peter@retep.org.uk - Added comment to Connection.isClosed() explaining why we deviate from the JDBC2 specification. - Fixed bug where the Isolation Level is lost while in autocommit mode. - Fixed bug where several calls to getTransactionIsolationLevel() returned the first call's result.
Diffstat (limited to 'src/interfaces/jdbc/org/postgresql/test/JDBC2Tests.java')
-rw-r--r--src/interfaces/jdbc/org/postgresql/test/JDBC2Tests.java138
1 files changed, 132 insertions, 6 deletions
diff --git a/src/interfaces/jdbc/org/postgresql/test/JDBC2Tests.java b/src/interfaces/jdbc/org/postgresql/test/JDBC2Tests.java
index c4ff4b29f6..6aac14b4b1 100644
--- a/src/interfaces/jdbc/org/postgresql/test/JDBC2Tests.java
+++ b/src/interfaces/jdbc/org/postgresql/test/JDBC2Tests.java
@@ -7,7 +7,7 @@ import org.postgresql.test.jdbc2.*;
import java.sql.*;
/**
- * Executes all known tests for JDBC2
+ * Executes all known tests for JDBC2 and includes some utility methods.
*/
public class JDBC2Tests extends TestSuite {
/**
@@ -60,6 +60,122 @@ public class JDBC2Tests extends TestSuite {
}
/**
+ * Helper - creates a test table for use by a test
+ */
+ public static void createTable(Connection conn,String columns) {
+ try {
+ Statement st = conn.createStatement();
+
+ // Ignore the drop
+ try {
+ st.executeUpdate("drop table "+getTableName());
+ } catch(SQLException se) {
+ }
+
+ // Now create the table
+ st.executeUpdate("create table "+getTableName()+" ("+columns+")");
+
+ st.close();
+ } catch(SQLException ex) {
+ TestCase.assert(ex.getMessage(),false);
+ }
+ }
+
+ /**
+ * Variant used when more than one table is required
+ */
+ public static void createTable(Connection conn,String id,String columns) {
+ try {
+ Statement st = conn.createStatement();
+
+ // Ignore the drop
+ try {
+ st.executeUpdate("drop table "+getTableName(id));
+ } catch(SQLException se) {
+ }
+
+ // Now create the table
+ st.executeUpdate("create table "+getTableName(id)+" ("+columns+")");
+
+ st.close();
+ } catch(SQLException ex) {
+ TestCase.assert(ex.getMessage(),false);
+ }
+ }
+
+ /**
+ * Helper - generates INSERT SQL - very simple
+ */
+ public static String insert(String values) {
+ return insert(null,values);
+ }
+ public static String insert(String columns,String values) {
+ String s = "INSERT INTO "+getTableName();
+ if(columns!=null)
+ s=s+" ("+columns+")";
+ return s+" VALUES ("+values+")";
+ }
+
+ /**
+ * Helper - generates SELECT SQL - very simple
+ */
+ public static String select(String columns) {
+ return select(columns,null,null);
+ }
+ public static String select(String columns,String where) {
+ return select(columns,where,null);
+ }
+ public static String select(String columns,String where,String other) {
+ String s = "SELECT "+columns+" FROM "+getTableName();
+ if(where!=null)
+ s=s+" WHERE "+where;
+ if(other!=null)
+ s=s+" "+other;
+ return s;
+ }
+
+ /**
+ * Helper - returns the test table's name
+ * This is defined by the tablename property. If not defined it defaults to
+ * jdbctest
+ */
+ public static String getTableName() {
+ if(tablename==null)
+ tablename=System.getProperty("tablename","jdbctest");
+ return tablename;
+ }
+
+ /**
+ * As getTableName() but the id is a suffix. Used when more than one table is
+ * required in a test.
+ */
+ public static String getTableName(String id) {
+ if(tablename==null)
+ tablename=System.getProperty("tablename","jdbctest");
+ return tablename+"_"+id;
+ }
+
+ /**
+ * Cache used by getTableName() [its used a lot!]
+ */
+ private static String tablename;
+
+ /**
+ * 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);
+ }
+
+ /**
+ * Number of milliseconds in a day
+ */
+ public static final long DAYMILLIS = 24*3600*1000;
+
+ /**
* The main entry point for JUnit
*/
public static TestSuite suite() {
@@ -68,19 +184,24 @@ public class JDBC2Tests extends 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).
//
- // ie: ANTTest should be first as it ensures that test parameters are
- // being sent to the suite.
- //
+ suite.addTestSuite(ANTTest.class);
// Basic Driver internals
- suite.addTestSuite(ANTTest.class);
suite.addTestSuite(DriverTest.class);
suite.addTestSuite(ConnectionTest.class);
+ suite.addTestSuite(DatabaseMetaDataTest.class);
// Connectivity/Protocols
// ResultSet
+ suite.addTestSuite(DateTest.class);
+ suite.addTestSuite(TimeTest.class);
+ suite.addTestSuite(TimestampTest.class);
// PreparedStatement
@@ -88,7 +209,12 @@ public class JDBC2Tests extends TestSuite {
// Fastpath/LargeObject
+ // Other misc tests, based on previous problems users have had or specific
+ // features some applications require.
+ suite.addTestSuite(JBuilderTest.class);
+ suite.addTestSuite(MiscTest.class);
+
// That's all folks
return suite;
}
-} \ No newline at end of file
+}