Changeset: df2c0751ff66 for monetdb-java
URL: https://dev.monetdb.org/hg/monetdb-java/rev/df2c0751ff66
Modified Files:
        src/test/java/JDBC_API_Tester.java
        src/test/java/org/monetdb/jdbc/ApiTests.java
Branch: default
Log Message:

Convert Test_Interval_Types() -> ApiTests#testIntervalTypes()


diffs (211 lines):

diff --git a/src/test/java/JDBC_API_Tester.java 
b/src/test/java/JDBC_API_Tester.java
--- a/src/test/java/JDBC_API_Tester.java
+++ b/src/test/java/JDBC_API_Tester.java
@@ -1024,128 +1024,6 @@ public final class JDBC_API_Tester exten
                compareExpectedOutput("Test_DBCmetadata", "");
        }
 
-       @Test
-       public void Test_Interval_Types() {
-               sb.setLength(0);        // clear the output log buffer
-
-               Statement stmt = null;
-               ResultSet rs = null;
-               PreparedStatement pstmt = null;
-               try {
-                       stmt = con.createStatement();
-                       stmt.executeUpdate("create table Test_Interval_Types ("
-                                       + "c1 interval year, c2 interval month, 
c3 interval day, "
-                                       + "c4 interval hour, c5 interval 
minute, c6 interval second, "
-                                       + "c7 interval year to month, c8 
interval day to hour, "
-                                       + "c9 interval day to minute, c10 
interval day to second, "
-                                       + "c11 interval hour to minute, c12 
interval hour to second, "
-                                       + "c13 interval minute to second)");
-                       rs = stmt.executeQuery("select * from 
Test_Interval_Types");
-                       if (rs != null) {
-                               sb.append("Showing query ResultSetMetaData\n");
-                               ResultSetMetaData rsmd = rs.getMetaData();
-                               int colCount = rsmd.getColumnCount();
-                               for (int col = 1; col <= colCount; col++) {
-                                       sb.append("ColumnName: 
").append(rsmd.getColumnName(col))
-                                       .append("\tColumnTypeName: 
").append(rsmd.getColumnTypeName(col))
-                                       .append("\tPrecision: 
").append(rsmd.getPrecision(col))
-                                       .append("\tScale: 
").append(rsmd.getScale(col))
-                                       .append("\tColumnDisplaySize: 
").append(rsmd.getColumnDisplaySize(col))
-                                       .append("\tColumnType: 
").append(rsmd.getColumnType(col))
-                                       .append("\tColumnClassName: 
").append(rsmd.getColumnClassName(col))
-                                       .append("\n");
-                               }
-                               rs.close();
-                               rs = null;
-                       }
-                       pstmt = con.prepareStatement("select * from 
Test_Interval_Types where "
-                                       + "c1=? or c2=? or c3=? or c4=? or c5=? 
or c6=? or c7=? or c8=? or c9=? or c10=? or c11=? or c12=? or c13=?");
-                       if (pstmt != null) {
-                               sb.append("Showing prepared query 
ResultSetMetaData\n");
-                               ResultSetMetaData rsmd = pstmt.getMetaData();
-                               int colCount = rsmd.getColumnCount();
-                               for (int col = 1; col <= colCount; col++) {
-                                       sb.append("ColumnName: 
").append(rsmd.getColumnName(col))
-                                       .append("\tColumnTypeName: 
").append(rsmd.getColumnTypeName(col))
-                                       .append("\tPrecision: 
").append(rsmd.getPrecision(col))
-                                       .append("\tScale: 
").append(rsmd.getScale(col))
-                                       .append("\tColumnDisplaySize: 
").append(rsmd.getColumnDisplaySize(col))
-                                       .append("\tColumnType: 
").append(rsmd.getColumnType(col))
-                                       .append("\tColumnClassName: 
").append(rsmd.getColumnClassName(col))
-                                       .append("\n");
-                               }
-                               sb.append("Showing prepared query 
ParameterMetaData\n");
-                               ParameterMetaData pmd = 
pstmt.getParameterMetaData();
-                               int paramCount = pmd.getParameterCount();
-                               for (int param = 1; param <= paramCount; 
param++) {
-                                       sb.append("ParameterTypeName: 
").append(pmd.getParameterTypeName(param))
-                                       .append("\tPrecision: 
").append(pmd.getPrecision(param))
-                                       .append("\tScale: 
").append(pmd.getScale(param))
-                                       .append("\tParameterType: 
").append(pmd.getParameterType(param))
-                                       .append("\tParameterClassName: 
").append(pmd.getParameterClassName(param))
-                                       .append("\n");
-                               }
-                               pstmt.close();
-                               pstmt = null;
-                       }
-               } catch (SQLException e) {
-                       sb.append("FAILED: 
").append(e.getMessage()).append("\n");
-               }
-
-               // cleanup
-               closeStmtResSet(pstmt, null);
-               try {
-                       stmt.executeUpdate("drop table Test_Interval_Types");
-               } catch (SQLException e) {
-                       sb.append("FAILED: 
").append(e.getMessage()).append("\n");
-               }
-               closeStmtResSet(stmt, rs);
-
-               compareExpectedOutput("Test_Interval_Types",
-                       "Showing query ResultSetMetaData\n" +
-                       "ColumnName: c1 ColumnTypeName: interval year   
Precision: 10   Scale: 0        ColumnDisplaySize: 4    ColumnType: 4   
ColumnClassName: java.lang.Integer\n" +
-                       "ColumnName: c2 ColumnTypeName: interval month  
Precision: 10   Scale: 0        ColumnDisplaySize: 6    ColumnType: 4   
ColumnClassName: java.lang.Integer\n" +
-                       "ColumnName: c3 ColumnTypeName: interval day    
Precision: 9    Scale: 0        ColumnDisplaySize: 9    ColumnType: 2   
ColumnClassName: java.math.BigDecimal\n" +
-                       "ColumnName: c4 ColumnTypeName: interval hour   
Precision: 11   Scale: 3        ColumnDisplaySize: 11   ColumnType: 3   
ColumnClassName: java.math.BigDecimal\n" +
-                       "ColumnName: c5 ColumnTypeName: interval minute 
Precision: 13   Scale: 3        ColumnDisplaySize: 13   ColumnType: 3   
ColumnClassName: java.math.BigDecimal\n" +
-                       "ColumnName: c6 ColumnTypeName: interval second 
Precision: 15   Scale: 3        ColumnDisplaySize: 15   ColumnType: 3   
ColumnClassName: java.math.BigDecimal\n" +
-                       "ColumnName: c7 ColumnTypeName: interval year to month  
Precision: 10   Scale: 0        ColumnDisplaySize: 6    ColumnType: 4   
ColumnClassName: java.lang.Integer\n" +
-                       "ColumnName: c8 ColumnTypeName: interval day to hour    
Precision: 11   Scale: 3        ColumnDisplaySize: 11   ColumnType: 3   
ColumnClassName: java.math.BigDecimal\n" +
-                       "ColumnName: c9 ColumnTypeName: interval day to minute  
Precision: 13   Scale: 3        ColumnDisplaySize: 13   ColumnType: 3   
ColumnClassName: java.math.BigDecimal\n" +
-                       "ColumnName: c10        ColumnTypeName: interval day to 
second  Precision: 15   Scale: 3        ColumnDisplaySize: 15   ColumnType: 3   
ColumnClassName: java.math.BigDecimal\n" +
-                       "ColumnName: c11        ColumnTypeName: interval hour 
to minute Precision: 13   Scale: 3        ColumnDisplaySize: 13   ColumnType: 3 
  ColumnClassName: java.math.BigDecimal\n" +
-                       "ColumnName: c12        ColumnTypeName: interval hour 
to second Precision: 15   Scale: 3        ColumnDisplaySize: 15   ColumnType: 3 
  ColumnClassName: java.math.BigDecimal\n" +
-                       "ColumnName: c13        ColumnTypeName: interval minute 
to second       Precision: 15   Scale: 3        ColumnDisplaySize: 15   
ColumnType: 3   ColumnClassName: java.math.BigDecimal\n" +
-                       "Showing prepared query ResultSetMetaData\n" +
-                       "ColumnName: c1 ColumnTypeName: interval year   
Precision: 10   Scale: 0        ColumnDisplaySize: 4    ColumnType: 4   
ColumnClassName: java.lang.Integer\n" +
-                       "ColumnName: c2 ColumnTypeName: interval month  
Precision: 10   Scale: 0        ColumnDisplaySize: 6    ColumnType: 4   
ColumnClassName: java.lang.Integer\n" +
-                       "ColumnName: c3 ColumnTypeName: interval day    
Precision: 9    Scale: 0        ColumnDisplaySize: 9    ColumnType: 2   
ColumnClassName: java.math.BigDecimal\n" +
-                       "ColumnName: c4 ColumnTypeName: interval hour   
Precision: 11   Scale: 3        ColumnDisplaySize: 11   ColumnType: 3   
ColumnClassName: java.math.BigDecimal\n" +
-                       "ColumnName: c5 ColumnTypeName: interval minute 
Precision: 13   Scale: 3        ColumnDisplaySize: 13   ColumnType: 3   
ColumnClassName: java.math.BigDecimal\n" +
-                       "ColumnName: c6 ColumnTypeName: interval second 
Precision: 15   Scale: 3        ColumnDisplaySize: 15   ColumnType: 3   
ColumnClassName: java.math.BigDecimal\n" +
-                       "ColumnName: c7 ColumnTypeName: interval year to month  
Precision: 10   Scale: 0        ColumnDisplaySize: 6    ColumnType: 4   
ColumnClassName: java.lang.Integer\n" +
-                       "ColumnName: c8 ColumnTypeName: interval day to hour    
Precision: 11   Scale: 3        ColumnDisplaySize: 11   ColumnType: 3   
ColumnClassName: java.math.BigDecimal\n" +
-                       "ColumnName: c9 ColumnTypeName: interval day to minute  
Precision: 13   Scale: 3        ColumnDisplaySize: 13   ColumnType: 3   
ColumnClassName: java.math.BigDecimal\n" +
-                       "ColumnName: c10        ColumnTypeName: interval day to 
second  Precision: 15   Scale: 3        ColumnDisplaySize: 15   ColumnType: 3   
ColumnClassName: java.math.BigDecimal\n" +
-                       "ColumnName: c11        ColumnTypeName: interval hour 
to minute Precision: 13   Scale: 3        ColumnDisplaySize: 13   ColumnType: 3 
  ColumnClassName: java.math.BigDecimal\n" +
-                       "ColumnName: c12        ColumnTypeName: interval hour 
to second Precision: 15   Scale: 3        ColumnDisplaySize: 15   ColumnType: 3 
  ColumnClassName: java.math.BigDecimal\n" +
-                       "ColumnName: c13        ColumnTypeName: interval minute 
to second       Precision: 15   Scale: 3        ColumnDisplaySize: 15   
ColumnType: 3   ColumnClassName: java.math.BigDecimal\n" +
-                       "Showing prepared query ParameterMetaData\n" +
-                       "ParameterTypeName: interval year       Precision: 10   
Scale: 0        ParameterType: 4        ParameterClassName: 
java.lang.Integer\n" +
-                       "ParameterTypeName: interval month      Precision: 10   
Scale: 0        ParameterType: 4        ParameterClassName: 
java.lang.Integer\n" +
-                       "ParameterTypeName: interval day        Precision: 9    
Scale: 0        ParameterType: 2        ParameterClassName: 
java.math.BigDecimal\n" +
-                       "ParameterTypeName: interval hour       Precision: 11   
Scale: 0        ParameterType: 3        ParameterClassName: 
java.math.BigDecimal\n" +
-                       "ParameterTypeName: interval minute     Precision: 13   
Scale: 0        ParameterType: 3        ParameterClassName: 
java.math.BigDecimal\n" +
-                       "ParameterTypeName: interval second     Precision: 15   
Scale: 0        ParameterType: 3        ParameterClassName: 
java.math.BigDecimal\n" +
-                       "ParameterTypeName: interval year to month      
Precision: 10   Scale: 0        ParameterType: 4        ParameterClassName: 
java.lang.Integer\n" +
-                       "ParameterTypeName: interval day to hour        
Precision: 11   Scale: 0        ParameterType: 3        ParameterClassName: 
java.math.BigDecimal\n" +
-                       "ParameterTypeName: interval day to minute      
Precision: 13   Scale: 0        ParameterType: 3        ParameterClassName: 
java.math.BigDecimal\n" +
-                       "ParameterTypeName: interval day to second      
Precision: 15   Scale: 0        ParameterType: 3        ParameterClassName: 
java.math.BigDecimal\n" +
-                       "ParameterTypeName: interval hour to minute     
Precision: 13   Scale: 0        ParameterType: 3        ParameterClassName: 
java.math.BigDecimal\n" +
-                       "ParameterTypeName: interval hour to second     
Precision: 15   Scale: 0        ParameterType: 3        ParameterClassName: 
java.math.BigDecimal\n" +
-                       "ParameterTypeName: interval minute to second   
Precision: 15   Scale: 0        ParameterType: 3        ParameterClassName: 
java.math.BigDecimal\n");
-       }
-
        @Test     // CHANGED
        public void Test_PlanExplainTraceDebugCmds() {
                sb.setLength(0);        // clear the output log buffer
diff --git a/src/test/java/org/monetdb/jdbc/ApiTests.java 
b/src/test/java/org/monetdb/jdbc/ApiTests.java
--- a/src/test/java/org/monetdb/jdbc/ApiTests.java
+++ b/src/test/java/org/monetdb/jdbc/ApiTests.java
@@ -493,4 +493,75 @@ public class ApiTests {
                stmt.executeUpdate("DROP TABLE test_huge_int");
                stmt.executeUpdate("DROP TABLE test_huge_dec");
        }
+
+       @TestFactory
+       public ArrayList<DynamicTest> testIntervalTypes() {
+               ArrayList<DynamicTest> tests = new ArrayList<>();
+
+               tests.add(DynamicTest.dynamicTest("interval year",
+                               () -> verifyIntervalType("interval year", 10, 
0, 4, 4, "java.lang.Integer")));
+               tests.add(DynamicTest.dynamicTest("interval month",
+                               () -> verifyIntervalType("interval month", 10, 
0, 6, 4, "java.lang.Integer")));
+               tests.add(DynamicTest.dynamicTest("interval day",
+                               () -> verifyIntervalType("interval day", 9, 0, 
9, 2, "java.math.BigDecimal")));
+               tests.add(DynamicTest.dynamicTest("interval hour",
+                               () -> verifyIntervalType("interval hour", 11, 
3, 11, 3, "java.math.BigDecimal")));
+               tests.add(DynamicTest.dynamicTest("interval minute",
+                               () -> verifyIntervalType("interval minute", 13, 
3, 13, 3, "java.math.BigDecimal")));
+               tests.add(DynamicTest.dynamicTest("interval second",
+                               () -> verifyIntervalType("interval second", 15, 
3, 15, 3, "java.math.BigDecimal")));
+               tests.add(DynamicTest.dynamicTest("interval year to month",
+                               () -> verifyIntervalType("interval year to 
month", 10, 0, 6, 4, "java.lang.Integer")));
+               tests.add(DynamicTest.dynamicTest("interval day to hour",
+                               () -> verifyIntervalType("interval day to 
hour", 11, 3, 11, 3, "java.math.BigDecimal")));
+               tests.add(DynamicTest.dynamicTest("interval day to minute",
+                               () -> verifyIntervalType("interval day to 
minute", 13, 3, 13, 3, "java.math.BigDecimal")));
+               tests.add(DynamicTest.dynamicTest("interval day to second",
+                               () -> verifyIntervalType("interval day to 
second", 15, 3, 15, 3, "java.math.BigDecimal")));
+               tests.add(DynamicTest.dynamicTest("interval hour to minute",
+                               () -> verifyIntervalType("interval hour to 
minute", 13, 3, 13, 3, "java.math.BigDecimal")));
+               tests.add(DynamicTest.dynamicTest("interval hour to second",
+                               () -> verifyIntervalType("interval hour to 
second", 15, 3, 15, 3, "java.math.BigDecimal")));
+               tests.add(DynamicTest.dynamicTest("interval minute to second",
+                               () -> verifyIntervalType("interval minute to 
second", 15, 3, 15, 3, "java.math.BigDecimal")));
+
+               return tests;
+       }
+
+       private void verifyIntervalType(String tname, int prec, int scale, int 
width, int tnum, String className) throws SQLException {
+               stmt.executeUpdate("DROP TABLE IF EXISTS test_interval_type");
+               stmt.executeUpdate("CREATE TABLE test_interval_type(c " + tname 
+ ")");
+
+               // verify regular statement result set metadata
+               try (ResultSet rs = stmt.executeQuery("SELECT * FROM 
test_interval_type")) {
+                       ResultSetMetaData md = rs.getMetaData();
+                       assertEquals(tname, md.getColumnTypeName(1));
+                       assertEquals(tnum, md.getColumnType(1));
+                       assertEquals(prec, md.getPrecision(1));
+                       assertEquals(scale, md.getScale(1));
+                       assertEquals(width, md.getColumnDisplaySize(1));
+                       assertEquals(className, md.getColumnClassName(1));
+               }
+
+               // verify prepared statement parameter- and result set metadata
+               try (PreparedStatement ps = conn.prepareStatement("SELECT * 
FROM test_interval_type WHERE c = ?")) {
+                       // Parameter
+                       ParameterMetaData pmd = ps.getParameterMetaData();
+                       assertEquals(tname, pmd.getParameterTypeName(1));
+                       assertEquals(tnum, pmd.getParameterType(1));
+                       assertEquals(prec, pmd.getPrecision(1));
+                       // Curiously, the parameter metadata always has scale 0
+                       assertEquals(0, pmd.getScale(1));
+                       assertEquals(className, pmd.getParameterClassName(1));
+                       // Result set
+                       ResultSetMetaData md = ps.getMetaData();
+                       assertEquals(tname, md.getColumnTypeName(1));
+                       assertEquals(tnum, md.getColumnType(1));
+                       assertEquals(prec, md.getPrecision(1));
+                       assertEquals(scale, md.getScale(1));
+                       assertEquals(width, md.getColumnDisplaySize(1));
+                       assertEquals(className, md.getColumnClassName(1));
+               }
+               stmt.executeUpdate("DROP TABLE test_interval_type");
+       }
 }
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to