From 8aaf373c43650bbed558230bee50e111da1d0d98 Mon Sep 17 00:00:00 2001 From: wenshao Date: Fri, 16 Sep 2011 06:59:28 +0000 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://code.alibabatech.com/svn/druid/trunk@805 b9813039-fb51-4c41-a8b9-e21c2acb5095 --- .../druid/mock/MockCallableStatement.java | 20 ++- .../basic/PoolableCallableStatementTest.java | 139 +++++++++++++++++- 2 files changed, 149 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/alibaba/druid/mock/MockCallableStatement.java b/src/main/java/com/alibaba/druid/mock/MockCallableStatement.java index b758793c19..699a39ec68 100644 --- a/src/main/java/com/alibaba/druid/mock/MockCallableStatement.java +++ b/src/main/java/com/alibaba/druid/mock/MockCallableStatement.java @@ -52,12 +52,20 @@ public class MockCallableStatement extends MockPreparedStatement implements Call @Override public void registerOutParameter(int parameterIndex, int sqlType) throws SQLException { - parameters.add(null); + if (parameterIndex < 1) { + throw new SQLException(); + } + + if (parameters.size() >= parameterIndex - 1) { + parameters.add(null); + } else { + throw new SQLException(); + } } @Override public void registerOutParameter(int parameterIndex, int sqlType, int scale) throws SQLException { - parameters.add(null); + registerOutParameter(parameterIndex, sqlType); } @Override @@ -288,22 +296,22 @@ public class MockCallableStatement extends MockPreparedStatement implements Call @Override public void registerOutParameter(int parameterIndex, int sqlType, String typeName) throws SQLException { - parameters.add(null); + registerOutParameter(parameterIndex, sqlType); } @Override public void registerOutParameter(String parameterName, int sqlType) throws SQLException { - parameters.add(null); + registerOutParameter(Integer.parseInt(parameterName), sqlType); } @Override public void registerOutParameter(String parameterName, int sqlType, int scale) throws SQLException { - parameters.add(null); + registerOutParameter(parameterName, sqlType); } @Override public void registerOutParameter(String parameterName, int sqlType, String typeName) throws SQLException { - parameters.add(null); + registerOutParameter(parameterName, sqlType); } @Override diff --git a/src/test/java/com/alibaba/druid/bvt/pool/basic/PoolableCallableStatementTest.java b/src/test/java/com/alibaba/druid/bvt/pool/basic/PoolableCallableStatementTest.java index 3528e4c347..dafaea6841 100644 --- a/src/test/java/com/alibaba/druid/bvt/pool/basic/PoolableCallableStatementTest.java +++ b/src/test/java/com/alibaba/druid/bvt/pool/basic/PoolableCallableStatementTest.java @@ -5,6 +5,7 @@ import java.io.Reader; import java.sql.Blob; import java.sql.Clob; import java.sql.Date; +import java.sql.NClob; import java.sql.RowId; import java.sql.SQLException; import java.sql.SQLXML; @@ -1854,7 +1855,7 @@ public class PoolableCallableStatementTest extends TestCase { Assert.assertNotNull(error); } } - + public void test_setNString() throws Exception { stmt.setNString(1, (String) null); @@ -1880,7 +1881,7 @@ public class PoolableCallableStatementTest extends TestCase { Assert.assertNotNull(error); } } - + public void test_getObject() throws Exception { stmt.getObject(1, null); @@ -1906,7 +1907,7 @@ public class PoolableCallableStatementTest extends TestCase { Assert.assertNotNull(error); } } - + public void test_setBoolean() throws Exception { stmt.setBoolean(1, true); @@ -1932,7 +1933,7 @@ public class PoolableCallableStatementTest extends TestCase { Assert.assertNotNull(error); } } - + public void test_setURL() throws Exception { stmt.setURL(1, null); @@ -1958,4 +1959,134 @@ public class PoolableCallableStatementTest extends TestCase { Assert.assertNotNull(error); } } + + public void test_setNClob_2() throws Exception { + + stmt.setNClob(1, (NClob) null); + stmt.setNClob("1", (NClob) null); + + { + SQLException error = null; + try { + stmt.setNClob("0", (NClob) null); + } catch (SQLException ex) { + error = ex; + } + Assert.assertNotNull(error); + } + + { + SQLException error = null; + try { + stmt.setNClob(0, (NClob) null); + } catch (SQLException ex) { + error = ex; + } + Assert.assertNotNull(error); + } + } + + public void test_setNull_1() throws Exception { + + stmt.setNull(1, Types.INTEGER); + stmt.setNull("1", Types.INTEGER); + + { + SQLException error = null; + try { + stmt.setNull("0", Types.INTEGER); + } catch (SQLException ex) { + error = ex; + } + Assert.assertNotNull(error); + } + + { + SQLException error = null; + try { + stmt.setNull(0, Types.INTEGER); + } catch (SQLException ex) { + error = ex; + } + Assert.assertNotNull(error); + } + } + + public void test_registerOutParameter() throws Exception { + + stmt.registerOutParameter(1, Types.INTEGER, "Int"); + stmt.registerOutParameter("1", Types.INTEGER, "Int"); + + { + SQLException error = null; + try { + stmt.registerOutParameter("0", Types.INTEGER, "Int"); + } catch (SQLException ex) { + error = ex; + } + Assert.assertNotNull(error); + } + + { + SQLException error = null; + try { + stmt.registerOutParameter(0, Types.INTEGER, "Int"); + } catch (SQLException ex) { + error = ex; + } + Assert.assertNotNull(error); + } + } + + public void test_registerOutParameter_1() throws Exception { + + stmt.registerOutParameter(1, Types.INTEGER, 2); + stmt.registerOutParameter("1", Types.INTEGER, 2); + + { + SQLException error = null; + try { + stmt.registerOutParameter("0", Types.INTEGER, 2); + } catch (SQLException ex) { + error = ex; + } + Assert.assertNotNull(error); + } + + { + SQLException error = null; + try { + stmt.registerOutParameter(0, Types.INTEGER, 2); + } catch (SQLException ex) { + error = ex; + } + Assert.assertNotNull(error); + } + } + + public void test_registerOutParameter_2() throws Exception { + + stmt.registerOutParameter(1, Types.INTEGER); + stmt.registerOutParameter("1", Types.INTEGER); + + { + SQLException error = null; + try { + stmt.registerOutParameter("0", Types.INTEGER); + } catch (SQLException ex) { + error = ex; + } + Assert.assertNotNull(error); + } + + { + SQLException error = null; + try { + stmt.registerOutParameter(0, Types.INTEGER); + } catch (SQLException ex) { + error = ex; + } + Assert.assertNotNull(error); + } + } }