diff --git a/src/main/java/com/alibaba/druid/mock/MockResultSet.java b/src/main/java/com/alibaba/druid/mock/MockResultSet.java index c78ca4af28..550e6e3f6c 100644 --- a/src/main/java/com/alibaba/druid/mock/MockResultSet.java +++ b/src/main/java/com/alibaba/druid/mock/MockResultSet.java @@ -41,15 +41,16 @@ import java.util.Map; public class MockResultSet implements ResultSet { - private int rowIndex = -1; + private int rowIndex = -1; private Statement statement; - private List rows = new ArrayList(); + private List rows = new ArrayList(); - private boolean wasNull = false; + private boolean wasNull = false; - private MockResultSetMetaData metaData = new MockResultSetMetaData(); - private boolean closed = false; - private int fetchSize = 0; + private MockResultSetMetaData metaData = new MockResultSetMetaData(); + private boolean closed = false; + private int fetchSize = 0; + private int fetchDirection = 0; public MockResultSet(Statement statement){ super(); @@ -459,6 +460,10 @@ public class MockResultSet implements ResultSet { @Override public synchronized boolean previous() throws SQLException { + if (closed) { + throw new SQLException(); + } + if (rowIndex > 0) { rowIndex--; return true; @@ -472,6 +477,7 @@ public class MockResultSet implements ResultSet { throw new SQLException(); } + this.fetchDirection = direction; } @Override @@ -480,7 +486,7 @@ public class MockResultSet implements ResultSet { throw new SQLException(); } - return 0; + return fetchDirection; } @Override @@ -488,7 +494,7 @@ public class MockResultSet implements ResultSet { if (closed) { throw new SQLException(); } - + this.fetchSize = rows; } @@ -949,7 +955,7 @@ public class MockResultSet implements ResultSet { if (closed) { throw new SQLException("resultSet closed"); } - + return 0; } diff --git a/src/test/java/com/alibaba/druid/bvt/pool/basic/ResultSetTest2.java b/src/test/java/com/alibaba/druid/bvt/pool/basic/ResultSetTest2.java index ec361c22a8..82bd06c7cc 100644 --- a/src/test/java/com/alibaba/druid/bvt/pool/basic/ResultSetTest2.java +++ b/src/test/java/com/alibaba/druid/bvt/pool/basic/ResultSetTest2.java @@ -1,5 +1,6 @@ package com.alibaba.druid.bvt.pool.basic; +import java.sql.ResultSet; import java.sql.SQLException; import junit.framework.TestCase; @@ -132,6 +133,31 @@ public class ResultSetTest2 extends TestCase { Assert.assertNotNull(error); } } + + public void test_FetchDirection() throws Exception { + resultSet.setFetchDirection(ResultSet.FETCH_REVERSE); + Assert.assertEquals(ResultSet.FETCH_REVERSE, resultSet.getFetchDirection()); + raw.close(); + + { + SQLException error = null; + try { + resultSet.getFetchDirection(); + } catch (SQLException ex) { + error = ex; + } + Assert.assertNotNull(error); + } + { + SQLException error = null; + try { + resultSet.setFetchDirection(ResultSet.FETCH_REVERSE); + } catch (SQLException ex) { + error = ex; + } + Assert.assertNotNull(error); + } + } public void test_getHoldability() throws Exception { resultSet.getHoldability(); @@ -228,6 +254,102 @@ public class ResultSetTest2 extends TestCase { Assert.assertNotNull(error); } } + + public void test_deleteRow() throws Exception { + resultSet.deleteRow(); + + raw.close(); + + { + SQLException error = null; + try { + resultSet.deleteRow(); + } catch (SQLException ex) { + error = ex; + } + Assert.assertNotNull(error); + } + } + + public void test_updateRow() throws Exception { + resultSet.deleteRow(); + + raw.close(); + + { + SQLException error = null; + try { + resultSet.updateRow(); + } catch (SQLException ex) { + error = ex; + } + Assert.assertNotNull(error); + } + } + + public void test_insertRow() throws Exception { + resultSet.deleteRow(); + + raw.close(); + + { + SQLException error = null; + try { + resultSet.insertRow(); + } catch (SQLException ex) { + error = ex; + } + Assert.assertNotNull(error); + } + } + + public void test_previous() throws Exception { + resultSet.previous(); + + raw.close(); + + { + SQLException error = null; + try { + resultSet.previous(); + } catch (SQLException ex) { + error = ex; + } + Assert.assertNotNull(error); + } + } + + public void test_relative() throws Exception { + resultSet.relative(1); + + raw.close(); + + { + SQLException error = null; + try { + resultSet.relative(1); + } catch (SQLException ex) { + error = ex; + } + Assert.assertNotNull(error); + } + } + + public void test_absolute() throws Exception { + resultSet.absolute(1); + + raw.close(); + + { + SQLException error = null; + try { + resultSet.absolute(1); + } catch (SQLException ex) { + error = ex; + } + Assert.assertNotNull(error); + } + } }