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]