diff options
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 +} |
