git-svn-id: http://code.alibabatech.com/svn/druid/trunk@2 b9813039-fb51-4c41-a8b9-e21c2acb5095
This commit is contained in:
wenshao
2011-05-11 01:35:21 +00:00
parent 239363b62e
commit 0e60b7d988
524 changed files with 67045 additions and 0 deletions
@@ -0,0 +1,264 @@
package com.alibaba.druid.bvt.proxy;
import java.io.Closeable;
import java.io.IOException;
import java.io.Reader;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Types;
import java.util.concurrent.atomic.AtomicInteger;
import junit.framework.Assert;
import junit.framework.TestCase;
import com.alibaba.druid.mock.MockConnection;
import com.alibaba.druid.mock.MockResultSet;
import com.alibaba.druid.mock.MockResultSetMetaData;
import com.alibaba.druid.mock.MockStatement;
import com.alibaba.druid.util.JdbcUtils;
public class JdbcUtilsTest extends TestCase {
public void test_print() throws Exception {
final AtomicInteger nextCount = new AtomicInteger(2);
final MockResultSetMetaData rsMeta = new MockResultSetMetaData() {
private int[] types = new int[] { Types.DATE, Types.BIT, Types.BOOLEAN, Types.TINYINT,
Types.SMALLINT, Types.INTEGER, Types.CLOB, Types.LONGVARCHAR, Types.OTHER,
Types.VARCHAR, Types.CHAR, Types.NVARCHAR, Types.NCHAR
};
@Override
public int getColumnCount() throws SQLException {
return types.length;
}
@Override
public int getColumnType(int column) throws SQLException {
return types[column - 1];
}
};
MockResultSet rs = new MockResultSet(null) {
@Override
public boolean next() throws SQLException {
return nextCount.getAndDecrement() > 0;
}
@Override
public ResultSetMetaData getMetaData() throws SQLException {
return rsMeta;
}
@Override
public java.sql.Date getDate(int columnIndex) throws SQLException {
return new java.sql.Date(System.currentTimeMillis());
}
@Override
public boolean wasNull() throws SQLException {
if (nextCount.get() == 1) {
return true;
}
return false;
}
public Object getObject(int columnIndex) throws SQLException {
return null;
}
};
JdbcUtils.printResultSet(rs);
}
public void test_close() throws Exception {
JdbcUtils.close((Connection) null);
JdbcUtils.close((Statement) null);
JdbcUtils.close((ResultSet) null);
JdbcUtils.close(new MockConnection() {
@Override
public void close() throws SQLException {
throw new SQLException();
}
});
JdbcUtils.close(new MockStatement(null) {
@Override
public void close() throws SQLException {
throw new SQLException();
}
});
JdbcUtils.close(new MockResultSet(null) {
@Override
public void close() throws SQLException {
throw new SQLException();
}
});
JdbcUtils.close(new Closeable() {
@Override
public void close() throws IOException {
throw new IOException();
}
});
JdbcUtils.close(new Closeable() {
@Override
public void close() throws IOException {
}
});
JdbcUtils.close((Closeable) null);
new JdbcUtils();
}
public void test_getTypeName() {
JdbcUtils.getTypeName(Types.ARRAY);
JdbcUtils.getTypeName(Types.BIGINT);
JdbcUtils.getTypeName(Types.BINARY);
JdbcUtils.getTypeName(Types.BIT);
JdbcUtils.getTypeName(Types.BLOB);
JdbcUtils.getTypeName(Types.BOOLEAN);
JdbcUtils.getTypeName(Types.CHAR);
JdbcUtils.getTypeName(Types.CLOB);
JdbcUtils.getTypeName(Types.DATALINK);
JdbcUtils.getTypeName(Types.DATE);
JdbcUtils.getTypeName(Types.DECIMAL);
JdbcUtils.getTypeName(Types.DISTINCT);
JdbcUtils.getTypeName(Types.DOUBLE);
JdbcUtils.getTypeName(Types.FLOAT);
JdbcUtils.getTypeName(Types.INTEGER);
JdbcUtils.getTypeName(Types.JAVA_OBJECT);
JdbcUtils.getTypeName(Types.LONGNVARCHAR);
JdbcUtils.getTypeName(Types.LONGVARBINARY);
JdbcUtils.getTypeName(Types.NCHAR);
JdbcUtils.getTypeName(Types.NCLOB);
JdbcUtils.getTypeName(Types.NULL);
JdbcUtils.getTypeName(Types.NUMERIC);
JdbcUtils.getTypeName(Types.NVARCHAR);
JdbcUtils.getTypeName(Types.REAL);
JdbcUtils.getTypeName(Types.REF);
JdbcUtils.getTypeName(Types.ROWID);
JdbcUtils.getTypeName(Types.SMALLINT);
JdbcUtils.getTypeName(Types.SQLXML);
JdbcUtils.getTypeName(Types.STRUCT);
JdbcUtils.getTypeName(Types.TIME);
JdbcUtils.getTypeName(Types.TIMESTAMP);
JdbcUtils.getTypeName(Types.TINYINT);
JdbcUtils.getTypeName(Types.VARBINARY);
JdbcUtils.getTypeName(Types.VARCHAR);
JdbcUtils.getTypeName(Types.OTHER);
}
public void test_read() throws Exception {
{
Exception error = null;
try {
JdbcUtils.read(new Reader() {
@Override
public int read(char[] cbuf, int off, int len) throws IOException {
throw new IOException();
}
@Override
public void close() throws IOException {
throw new IOException();
}
});
} catch (RuntimeException ex) {
error = ex;
}
Assert.assertNotNull(error);
}
{
Exception error = null;
try {
JdbcUtils.read(new Reader() {
@Override
public int read(char[] cbuf, int off, int len) throws IOException {
throw new IOException();
}
@Override
public void close() throws IOException {
throw new IOException();
}
}, 0);
} catch (RuntimeException ex) {
error = ex;
}
Assert.assertNotNull(error);
}
{
String text = JdbcUtils.read(new Reader() {
@Override
public int read(char[] cbuf, int off, int len) throws IOException {
return -1;
}
@Override
public void close() throws IOException {
throw new IOException();
}
}, 1);
Assert.assertEquals("", text);
}
{
String text = JdbcUtils.read(new Reader() {
@Override
public int read(char[] cbuf, int off, int len) throws IOException {
for (int i = off; i < len; ++i) {
cbuf[i] = 'A';
}
return len;
}
@Override
public void close() throws IOException {
throw new IOException();
}
}, 2);
Assert.assertEquals("AA", text);
}
{
Reader reader = new Reader() {
@Override
public int read(char[] cbuf, int off, int len) throws IOException {
cbuf[off] = 'A';
return 1;
}
@Override
public void close() throws IOException {
throw new IOException();
}
};
String text = JdbcUtils.read(reader, 2);
Assert.assertEquals("AA", text);
}
}
}