diff options
| author | Peter Mount <peter@retep.org.uk> | 2001-02-13 16:39:06 +0000 |
|---|---|---|
| committer | Peter Mount <peter@retep.org.uk> | 2001-02-13 16:39:06 +0000 |
| commit | 3d21bf82c3e27396bd3598810cbcc6f7cdc05adf (patch) | |
| tree | 0701214cf100311bc15314ae39a3ece1667729e9 /src/interfaces/jdbc/org/postgresql/test/JDBC2Tests.java | |
| parent | 2410963e8cc6272022c0a556a3fd3c9a3bd617e9 (diff) | |
| download | postgresql-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.java | 138 |
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 +} |
