/*
* Copyright 2004-2015 the Seasar Foundation and the Others.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
* either express or implied. See the License for the specific language
* governing permissions and limitations under the License.
*/
package org.seasar.extension.jdbc.manager;
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.Statement;
import junit.framework.TestCase;
import org.seasar.extension.jdbc.StatementHandler;
import org.seasar.framework.mock.sql.MockCallableStatement;
import org.seasar.framework.mock.sql.MockConnection;
import org.seasar.framework.mock.sql.MockPreparedStatement;
/**
* @author higa
*
*/
public class JdbcContextImplTest extends TestCase {
private MockConnection con = new MockConnection();
private JdbcContextImpl ctx = new JdbcContextImpl(con, false);
@Override
protected void setUp() throws Exception {
}
@Override
protected void tearDown() throws Exception {
con = null;
ctx = null;
}
/**
* @throws Exception
*
*/
public void testGetPreparedStatement() throws Exception {
ctx.setPreparedStatementCacheSize(1);
MockPreparedStatement ps = (MockPreparedStatement) ctx
.getPreparedStatement("aaa");
assertNotNull(ps);
assertFalse(ctx.isPreparedStatementCacheEmpty());
assertSame(ps, ctx.getPreparedStatement("aaa"));
ctx.getPreparedStatement("bbb");
assertTrue(ps.isClosed());
}
/**
* @throws Exception
*
*/
public void testUsingPreparedStatement() throws Exception {
PreparedStatement ps = ctx.usingPreparedStatement("aaa",
new StatementHandler<PreparedStatement, PreparedStatement>() {
public PreparedStatement handle(PreparedStatement ps) {
assertTrue(ctx.isPreparedStatementCacheEmpty());
return ps;
}
});
assertNotNull(ps);
assertFalse(ctx.isPreparedStatementCacheEmpty());
assertSame(ps, ctx.getPreparedStatement("aaa"));
}
/**
* @throws Exception
*
*/
public void testGetPreparedStatement_autoGeneratedKeys() throws Exception {
ctx.setPreparedStatementCacheSize(1);
MockPreparedStatement ps = (MockPreparedStatement) ctx
.getPreparedStatement("aaa", Statement.RETURN_GENERATED_KEYS);
assertNotNull(ps);
assertFalse(ctx.isPreparedStatementCacheEmpty());
assertSame(ps, ctx.getPreparedStatement("aaa",
Statement.RETURN_GENERATED_KEYS));
assertNotSame(ps, ctx.getPreparedStatement("aaa"));
assertTrue(ps.isClosed());
}
/**
* @throws Exception
*
*/
public void testUsingPreparedStatement_autoGeneratedKeys() throws Exception {
PreparedStatement ps = ctx.usingPreparedStatement("aaa",
Statement.RETURN_GENERATED_KEYS,
new StatementHandler<PreparedStatement, PreparedStatement>() {
public PreparedStatement handle(PreparedStatement ps) {
assertTrue(ctx.isPreparedStatementCacheEmpty());
return ps;
}
});
assertNotNull(ps);
assertFalse(ctx.isPreparedStatementCacheEmpty());
assertSame(ps, ctx.getPreparedStatement("aaa",
Statement.RETURN_GENERATED_KEYS));
}
/**
* @throws Exception
*
*/
public void testGetCursorPreparedStatement() throws Exception {
ctx.setCursorPreparedStatementCacheSize(1);
MockPreparedStatement ps = (MockPreparedStatement) ctx
.getCursorPreparedStatement("aaa");
assertNotNull(ps);
assertFalse(ctx.isCursorPreparedStatementCacheEmpty());
assertSame(ps, ctx.getCursorPreparedStatement("aaa"));
ctx.getCursorPreparedStatement("bbb");
assertTrue(ps.isClosed());
}
/**
* @throws Exception
*
*/
public void testUsingCursorPreparedStatement() throws Exception {
PreparedStatement ps = ctx.usingCursorPreparedStatement("aaa",
new StatementHandler<PreparedStatement, PreparedStatement>() {
public PreparedStatement handle(PreparedStatement ps) {
assertTrue(ctx.isCursorPreparedStatementCacheEmpty());
return ps;
}
});
assertNotNull(ps);
assertFalse(ctx.isCursorPreparedStatementCacheEmpty());
assertSame(ps, ctx.getCursorPreparedStatement("aaa"));
}
/**
* @throws Exception
*
*/
public void testGetCallableStatement() throws Exception {
ctx.setCallableStatementCacheSize(1);
MockCallableStatement cs = (MockCallableStatement) ctx
.getCallableStatement("aaa");
assertNotNull(cs);
assertFalse(ctx.isCallableStatementCacheEmpty());
assertSame(cs, ctx.getCallableStatement("aaa"));
ctx.getCallableStatement("bbb");
assertTrue(cs.isClosed());
}
/**
* @throws Exception
*
*/
public void testUsingCallableStatement() throws Exception {
CallableStatement cs = ctx.usingCallableStatement("aaa",
new StatementHandler<CallableStatement, CallableStatement>() {
public CallableStatement handle(CallableStatement cs) {
assertTrue(ctx.isPreparedStatementCacheEmpty());
return cs;
}
});
assertNotNull(cs);
assertFalse(ctx.isCallableStatementCacheEmpty());
assertSame(cs, ctx.getCallableStatement("aaa"));
}
/**
* @throws Exception
*
*/
public void testGetStatement() throws Exception {
Statement stmt = ctx.getStatement();
assertNotNull(stmt);
assertSame(stmt, ctx.getStatement());
}
/**
* @throws Exception
*
*/
public void testDestroy() throws Exception {
ctx.getStatement();
ctx.getPreparedStatement("aaa");
ctx.getCursorPreparedStatement("bbb");
ctx.getCallableStatement("ccc");
ctx.destroy();
assertTrue(ctx.isStatementNull());
assertTrue(ctx.isPreparedStatementCacheEmpty());
assertTrue(ctx.isCursorPreparedStatementCacheEmpty());
assertTrue(ctx.isCallableStatementCacheEmpty());
assertTrue(ctx.isConnectionNull());
assertTrue(con.isClosed());
}
}