|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
package testsuite.simple; |
|
|
|
import java.sql.ResultSet; |
|
import java.sql.SQLException; |
|
import java.sql.Statement; |
|
|
|
import testsuite.BaseTestCase; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public class TraversalTest extends BaseTestCase { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public TraversalTest(String name) { |
|
super(name); |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static void main(String[] args) { |
|
junit.textui.TestRunner.run(TraversalTest.class); |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public void setUp() throws Exception { |
|
super.setUp(); |
|
createTestTable(); |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public void testTraversal() throws SQLException { |
|
|
|
Statement scrollableStmt = null; |
|
|
|
try { |
|
scrollableStmt = this.conn |
|
.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, |
|
ResultSet.CONCUR_READ_ONLY); |
|
this.rs = scrollableStmt |
|
.executeQuery("SELECT * FROM TRAVERSAL ORDER BY pos"); |
|
|
|
|
|
if (this.rs.first()) { |
|
assertTrue("ResultSet.isFirst() failed", this.rs.isFirst()); |
|
this.rs.relative(-1); |
|
assertTrue("ResultSet.isBeforeFirst() failed", this.rs |
|
.isBeforeFirst()); |
|
} |
|
|
|
|
|
if (this.rs.last()) { |
|
assertTrue("ResultSet.isLast() failed", this.rs.isLast()); |
|
this.rs.relative(1); |
|
assertTrue("ResultSet.isAfterLast() failed", this.rs |
|
.isAfterLast()); |
|
} |
|
|
|
int count = 0; |
|
this.rs.beforeFirst(); |
|
|
|
boolean forwardOk = true; |
|
|
|
while (this.rs.next()) { |
|
|
|
int pos = this.rs.getInt("POS"); |
|
|
|
|
|
pos = this.rs.getInt("pos"); |
|
pos = this.rs.getInt("Pos"); |
|
pos = this.rs.getInt("POs"); |
|
pos = this.rs.getInt("PoS"); |
|
pos = this.rs.getInt("pOS"); |
|
pos = this.rs.getInt("pOs"); |
|
pos = this.rs.getInt("poS"); |
|
|
|
if (pos != count) { |
|
forwardOk = false; |
|
} |
|
|
|
assertTrue("ResultSet.getRow() failed.", pos == (this.rs |
|
.getRow() - 1)); |
|
|
|
count++; |
|
|
|
} |
|
|
|
assertTrue("Only traversed " + count + " / 100 rows", forwardOk); |
|
|
|
boolean isAfterLast = this.rs.isAfterLast(); |
|
assertTrue("ResultSet.isAfterLast() failed", isAfterLast); |
|
this.rs.afterLast(); |
|
|
|
|
|
count = 99; |
|
|
|
boolean reverseOk = true; |
|
|
|
while (this.rs.previous()) { |
|
|
|
int pos = this.rs.getInt("pos"); |
|
|
|
if (pos != count) { |
|
reverseOk = false; |
|
} |
|
|
|
count--; |
|
} |
|
|
|
assertTrue("ResultSet.previous() failed", reverseOk); |
|
|
|
boolean isBeforeFirst = this.rs.isBeforeFirst(); |
|
assertTrue("ResultSet.isBeforeFirst() failed", isBeforeFirst); |
|
|
|
this.rs.next(); |
|
boolean isFirst = this.rs.isFirst(); |
|
assertTrue("ResultSet.isFirst() failed", isFirst); |
|
|
|
|
|
this.rs.absolute(50); |
|
int pos = this.rs.getInt("pos"); |
|
assertTrue("ResultSet.absolute() failed", pos == 49); |
|
|
|
|
|
this.rs.relative(-1); |
|
pos = this.rs.getInt("pos"); |
|
assertTrue("ResultSet.relative(-1) failed", pos == 48); |
|
|
|
|
|
boolean onResultSet = this.rs.absolute(200); |
|
assertTrue("ResultSet.absolute() to point off result set failed", |
|
onResultSet == false); |
|
onResultSet = this.rs.absolute(100); |
|
assertTrue( |
|
"ResultSet.absolute() from off this.rs to on this.rs failed", |
|
onResultSet); |
|
|
|
onResultSet = this.rs.absolute(-99); |
|
assertTrue("ResultSet.absolute(-99) failed", onResultSet); |
|
assertTrue("ResultSet absolute(-99) failed", this.rs.getInt(1) == 1); |
|
} finally { |
|
|
|
if (scrollableStmt != null) { |
|
|
|
try { |
|
scrollableStmt.close(); |
|
} catch (SQLException sqlEx) { |
|
; |
|
} |
|
} |
|
} |
|
} |
|
|
|
private void createTestTable() throws SQLException { |
|
|
|
|
|
|
|
|
|
try { |
|
this.stmt.executeUpdate("DROP TABLE TRAVERSAL"); |
|
} catch (SQLException SQLE) { |
|
; |
|
} |
|
|
|
this.stmt |
|
.executeUpdate("CREATE TABLE TRAVERSAL (pos int PRIMARY KEY, stringdata CHAR(32))"); |
|
|
|
for (int i = 0; i < 100; i++) { |
|
this.stmt.executeUpdate("INSERT INTO TRAVERSAL VALUES (" + i |
|
+ ", 'StringData')"); |
|
} |
|
} |
|
} |