You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-commits@db.apache.org by ka...@apache.org on 2007/03/29 10:33:50 UTC
svn commit: r523621 - in
/db/derby/code/trunk/java/testing/org/apache/derbyTesting:
functionTests/tests/lang/DistinctTest.java
functionTests/tests/lang/ResultSetsFromPreparedStatementTest.java
junit/JDBC.java
Author: kahatlen
Date: Thu Mar 29 01:33:48 2007
New Revision: 523621
URL: http://svn.apache.org/viewvc?view=rev&rev=523621
Log:
DERBY-2493 (partial) Use unsynchronized collections in BackingStoreHashtable
Updated some tests so that they are not sensitive to the order of the
rows in the returned ResultSet.
Modified:
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/DistinctTest.java
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/ResultSetsFromPreparedStatementTest.java
db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/JDBC.java
Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/DistinctTest.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/DistinctTest.java?view=diff&rev=523621&r1=523620&r2=523621
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/DistinctTest.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/DistinctTest.java Thu Mar 29 01:33:48 2007
@@ -538,7 +538,9 @@
{"1", "1"},
{"2", "2"},
{"2", "1"} };
- JDBC.assertFullResultSet(s.executeQuery("select * from td, (select distinct x from td) as sub(x)"), expected);
+ JDBC.assertUnorderedResultSet(s.executeQuery(
+ "select * from td, (select distinct x from td) as sub(x)"),
+ expected);
s.execute("drop table td");
s.close();
Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/ResultSetsFromPreparedStatementTest.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/ResultSetsFromPreparedStatementTest.java?view=diff&rev=523621&r1=523620&r2=523621
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/ResultSetsFromPreparedStatementTest.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/ResultSetsFromPreparedStatementTest.java Thu Mar 29 01:33:48 2007
@@ -41,6 +41,7 @@
import org.apache.derbyTesting.junit.BaseJDBCTestCase;
import org.apache.derbyTesting.junit.CleanDatabaseTestSetup;
+import org.apache.derbyTesting.junit.JDBC;
// TODO:
// - Add parameters to all PreparedStatements that support it
@@ -709,11 +710,11 @@
for (int i = 0; i < expected.length; ++i) {
tst.setString(1,new Integer(i) +"_");
ResultSet rs = tst.executeQuery();
- assertResultSet("?="+i+"_", expected[i], rs);
+ JDBC.assertUnorderedResultSet(rs, expected[i], false);
// Re-execute tst with the same parameters
rs = tst.executeQuery();
- assertResultSet("R?="+i+"_", expected[i], rs);
+ JDBC.assertUnorderedResultSet(rs, expected[i], false);
if (i < mgrs.length) {
del.setObject(1, mgrs[i]);
Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/JDBC.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/JDBC.java?view=diff&rev=523621&r1=523620&r2=523621
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/JDBC.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/JDBC.java Thu Mar 29 01:33:48 2007
@@ -833,6 +833,87 @@
}
/**
+ * Assert that the ResultSet contains the same rows as the specified
+ * two-dimensional array. The order of the results is ignored. Convert the
+ * results to trimmed strings before comparing. The ResultSet object will
+ * be closed.
+ *
+ * @param rs the ResultSet to check
+ * @param expectedRows the expected rows
+ */
+ public static void assertUnorderedResultSet(
+ ResultSet rs, String[][] expectedRows) throws SQLException {
+ assertUnorderedResultSet(rs, expectedRows, true);
+ }
+
+ /**
+ * Assert that the ResultSet contains the same rows as the specified
+ * two-dimensional array. The order of the results is ignored. Objects are
+ * read out of the ResultSet with the <code>getObject()</code> method and
+ * compared with <code>equals()</code>. If the
+ * <code>asTrimmedStrings</code> is <code>true</code>, the objects are read
+ * with <code>getString()</code> and trimmed before they are compared. The
+ * ResultSet object will be closed when this method returns.
+ *
+ * @param rs the ResultSet to check
+ * @param expectedRows the expected rows
+ * @param asTrimmedStrings whether the object should be compared as trimmed
+ * strings
+ */
+ public static void assertUnorderedResultSet(
+ ResultSet rs, Object[][] expectedRows, boolean asTrimmedStrings)
+ throws SQLException {
+
+ if (expectedRows.length == 0) {
+ assertEmpty(rs);
+ }
+
+ ResultSetMetaData rsmd = rs.getMetaData();
+ Assert.assertEquals("Unexpected column count",
+ expectedRows[0].length, rsmd.getColumnCount());
+
+ ArrayList expected = new ArrayList(expectedRows.length);
+ for (int i = 0; i < expectedRows.length; i++) {
+ Assert.assertEquals("Different column count in expectedRows",
+ expectedRows[0].length, expectedRows[i].length);
+ if (asTrimmedStrings) {
+ ArrayList row = new ArrayList(expectedRows[i].length);
+ for (int j = 0; j < expectedRows[i].length; j++) {
+ String val = (String) expectedRows[i][j];
+ row.add(val == null ? null : val.trim());
+ }
+ expected.add(row);
+ } else {
+ expected.add(Arrays.asList(expectedRows[i]));
+ }
+ }
+
+ ArrayList actual = new ArrayList(expectedRows.length);
+ while (rs.next()) {
+ ArrayList row = new ArrayList(expectedRows[0].length);
+ for (int i = 1; i <= expectedRows[0].length; i++) {
+ if (asTrimmedStrings) {
+ String s = rs.getString(i);
+ row.add(s == null ? null : s.trim());
+ } else {
+ row.add(rs.getObject(i));
+ }
+ }
+ actual.add(row);
+ }
+ rs.close();
+
+ Assert.assertEquals("Unexpected row count",
+ expectedRows.length, actual.size());
+
+ Assert.assertTrue("Missing rows in ResultSet",
+ actual.containsAll(expected));
+
+ actual.removeAll(expected);
+ Assert.assertTrue("Extra rows in ResultSet", actual.isEmpty());
+ }
+
+ /**
* Convert byte array to String.
* Each byte is converted to a hexadecimal string representation.
*