From 306e21f11485a874910bd0ea2d17b02e651619ac Mon Sep 17 00:00:00 2001 From: wenshao Date: Sun, 19 Aug 2012 16:16:54 +0800 Subject: [PATCH] add testcase --- .../alibaba/druid/filter/FilterChainImpl.java | 4 + .../bvt/filter/FilterChainTest_Clob.java | 101 +++++++++++++++++ .../bvt/filter/FilterChainTest_NClob.java | 102 ++++++++++++++++++ 3 files changed, 207 insertions(+) create mode 100644 src/test/java/com/alibaba/druid/bvt/filter/FilterChainTest_Clob.java create mode 100644 src/test/java/com/alibaba/druid/bvt/filter/FilterChainTest_NClob.java diff --git a/src/main/java/com/alibaba/druid/filter/FilterChainImpl.java b/src/main/java/com/alibaba/druid/filter/FilterChainImpl.java index 452bd0c2f8..c6e9e48f20 100644 --- a/src/main/java/com/alibaba/druid/filter/FilterChainImpl.java +++ b/src/main/java/com/alibaba/druid/filter/FilterChainImpl.java @@ -4458,6 +4458,10 @@ public class FilterChainImpl implements FilterChain { if (clob == null) { return null; } + + if (clob instanceof NClob) { + return wrap(connection, (NClob) clob); + } return new ClobProxyImpl(dataSource, connection, clob); } diff --git a/src/test/java/com/alibaba/druid/bvt/filter/FilterChainTest_Clob.java b/src/test/java/com/alibaba/druid/bvt/filter/FilterChainTest_Clob.java new file mode 100644 index 0000000000..9ccca872de --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/filter/FilterChainTest_Clob.java @@ -0,0 +1,101 @@ +package com.alibaba.druid.bvt.filter; + +import java.sql.Clob; +import java.sql.SQLException; +import java.util.Collections; + +import junit.framework.TestCase; + +import org.junit.Assert; + +import com.alibaba.druid.filter.FilterChainImpl; +import com.alibaba.druid.mock.MockClob; +import com.alibaba.druid.mock.MockResultSet; +import com.alibaba.druid.pool.DruidDataSource; +import com.alibaba.druid.proxy.jdbc.ClobProxy; +import com.alibaba.druid.proxy.jdbc.ResultSetProxyImpl; +import com.alibaba.druid.proxy.jdbc.StatementProxy; +import com.alibaba.druid.proxy.jdbc.StatementProxyImpl; +import com.alibaba.druid.util.JdbcUtils; + +public class FilterChainTest_Clob extends TestCase { + + private DruidDataSource dataSource; + private StatementProxy statement; + private MockResultSet mockResultSet; + + private int invokeCount = 0; + + protected void setUp() throws Exception { + dataSource = new DruidDataSource(); + statement = new StatementProxyImpl(null, null, 1); + + mockResultSet = new MockResultSet(null) { + + public Object getObject(int columnIndex) throws SQLException { + invokeCount++; + return new MockClob(); + } + }; + } + + protected void tearDown() throws Exception { + JdbcUtils.close(dataSource); + + invokeCount = 0; + } + + public void test_resultSet_getClob() throws Exception { + FilterChainImpl chain = new FilterChainImpl(dataSource); + + Clob clob = chain.resultSet_getClob(new ResultSetProxyImpl(statement, mockResultSet, 1, null), 1); + + Assert.assertTrue(clob instanceof ClobProxy); + Assert.assertEquals(1, invokeCount); + } + + public void test_resultSet_getClob_1() throws Exception { + FilterChainImpl chain = new FilterChainImpl(dataSource); + + Clob clob = chain.resultSet_getClob(new ResultSetProxyImpl(statement, mockResultSet, 1, null), "1"); + + Assert.assertTrue(clob instanceof ClobProxy); + Assert.assertEquals(1, invokeCount); + } + + public void test_resultSet_getObject() throws Exception { + FilterChainImpl chain = new FilterChainImpl(dataSource); + + Clob clob = (Clob) chain.resultSet_getObject(new ResultSetProxyImpl(statement, mockResultSet, 1, null), 1); + + Assert.assertTrue(clob instanceof ClobProxy); + Assert.assertEquals(1, invokeCount); + } + + public void test_resultSet_getObject_1() throws Exception { + FilterChainImpl chain = new FilterChainImpl(dataSource); + + Clob clob = (Clob) chain.resultSet_getObject(new ResultSetProxyImpl(statement, mockResultSet, 1, null), "1"); + + Assert.assertTrue(clob instanceof ClobProxy); + Assert.assertEquals(1, invokeCount); + } + + public void test_resultSet_getObject_2() throws Exception { + FilterChainImpl chain = new FilterChainImpl(dataSource); + + Clob clob = (Clob) chain.resultSet_getObject(new ResultSetProxyImpl(statement, mockResultSet, 1, null), 1, Collections.>emptyMap()); + + Assert.assertTrue(clob instanceof ClobProxy); + Assert.assertEquals(1, invokeCount); + } + + public void test_resultSet_getObject_3() throws Exception { + FilterChainImpl chain = new FilterChainImpl(dataSource); + + Clob clob = (Clob) chain.resultSet_getObject(new ResultSetProxyImpl(statement, mockResultSet, 1, null), "1", Collections.>emptyMap()); + + Assert.assertTrue(clob instanceof ClobProxy); + Assert.assertEquals(1, invokeCount); + } +} diff --git a/src/test/java/com/alibaba/druid/bvt/filter/FilterChainTest_NClob.java b/src/test/java/com/alibaba/druid/bvt/filter/FilterChainTest_NClob.java new file mode 100644 index 0000000000..c8ecbdc0c3 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/filter/FilterChainTest_NClob.java @@ -0,0 +1,102 @@ +package com.alibaba.druid.bvt.filter; + +import java.sql.Clob; +import java.sql.SQLException; +import java.util.Collections; + +import junit.framework.TestCase; + +import org.junit.Assert; + +import com.alibaba.druid.filter.FilterChainImpl; +import com.alibaba.druid.mock.MockNClob; +import com.alibaba.druid.mock.MockResultSet; +import com.alibaba.druid.pool.DruidDataSource; +import com.alibaba.druid.proxy.jdbc.ClobProxy; +import com.alibaba.druid.proxy.jdbc.NClobProxy; +import com.alibaba.druid.proxy.jdbc.ResultSetProxyImpl; +import com.alibaba.druid.proxy.jdbc.StatementProxy; +import com.alibaba.druid.proxy.jdbc.StatementProxyImpl; +import com.alibaba.druid.util.JdbcUtils; + +public class FilterChainTest_NClob extends TestCase { + + private DruidDataSource dataSource; + private StatementProxy statement; + private MockResultSet mockResultSet; + + private int invokeCount = 0; + + protected void setUp() throws Exception { + dataSource = new DruidDataSource(); + statement = new StatementProxyImpl(null, null, 1); + + mockResultSet = new MockResultSet(null) { + + public Object getObject(int columnIndex) throws SQLException { + invokeCount++; + return new MockNClob(); + } + }; + } + + protected void tearDown() throws Exception { + JdbcUtils.close(dataSource); + + invokeCount = 0; + } + + public void test_resultSet_getClob() throws Exception { + FilterChainImpl chain = new FilterChainImpl(dataSource); + + Clob clob = chain.resultSet_getClob(new ResultSetProxyImpl(statement, mockResultSet, 1, null), 1); + + Assert.assertTrue(clob instanceof NClobProxy); + Assert.assertEquals(1, invokeCount); + } + + public void test_resultSet_getClob_1() throws Exception { + FilterChainImpl chain = new FilterChainImpl(dataSource); + + Clob clob = chain.resultSet_getClob(new ResultSetProxyImpl(statement, mockResultSet, 1, null), "1"); + + Assert.assertTrue(clob instanceof NClobProxy); + Assert.assertEquals(1, invokeCount); + } + + public void test_resultSet_getObject() throws Exception { + FilterChainImpl chain = new FilterChainImpl(dataSource); + + Clob clob = (Clob) chain.resultSet_getObject(new ResultSetProxyImpl(statement, mockResultSet, 1, null), 1); + + Assert.assertTrue(clob instanceof NClobProxy); + Assert.assertEquals(1, invokeCount); + } + + public void test_resultSet_getObject_1() throws Exception { + FilterChainImpl chain = new FilterChainImpl(dataSource); + + Clob clob = (Clob) chain.resultSet_getObject(new ResultSetProxyImpl(statement, mockResultSet, 1, null), "1"); + + Assert.assertTrue(clob instanceof NClobProxy); + Assert.assertEquals(1, invokeCount); + } + + public void test_resultSet_getObject_2() throws Exception { + FilterChainImpl chain = new FilterChainImpl(dataSource); + + Clob clob = (Clob) chain.resultSet_getObject(new ResultSetProxyImpl(statement, mockResultSet, 1, null), 1, Collections.>emptyMap()); + + Assert.assertTrue(clob instanceof NClobProxy); + Assert.assertEquals(1, invokeCount); + } + + public void test_resultSet_getObject_3() throws Exception { + FilterChainImpl chain = new FilterChainImpl(dataSource); + + Clob clob = (Clob) chain.resultSet_getObject(new ResultSetProxyImpl(statement, mockResultSet, 1, null), "1", Collections.>emptyMap()); + + Assert.assertTrue(clob instanceof NClobProxy); + Assert.assertEquals(1, invokeCount); + } +}