/*
* 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.util;
import java.math.BigDecimal;
import java.sql.Time;
import java.sql.Timestamp;
import junit.framework.TestCase;
import org.seasar.extension.jdbc.IllegalBindArgSizeRuntimeException;
import org.seasar.extension.jdbc.ValueType;
import org.seasar.extension.jdbc.types.ValueTypes;
/**
* @author higa
*
*/
public class BindVariableUtilTest extends TestCase {
/**
* @throws Exception
*/
public void testGetCompleteSql1() throws Exception {
final String sql = "update emp set ename = ?, comm = ? where empno = ?";
assertEquals(
"update emp set ename = 'foo', comm = null where empno = 'bar'",
BindVariableUtil.getCompleteSql(sql, new Object[] { "foo",
null, "bar" }));
}
/**
* @throws Exception
*/
public void testGetCompleteSql2() throws Exception {
final String sql = "update emp set ename = ?, comm = '?' where empno = ?";
assertEquals(
"update emp set ename = 'foo', comm = '?' where empno = 'bar'",
BindVariableUtil.getCompleteSql(sql, new Object[] { "foo",
"bar" }));
}
/**
* @throws Exception
*/
public void testGetCompleteSql3() throws Exception {
final String sql = "update emp set ename = /* ? */, comm = ? where empno = ?/*?*/";
assertEquals(
"update emp set ename = /* ? */, comm = null where empno = 'bar'/*?*/",
BindVariableUtil.getCompleteSql(sql,
new Object[] { null, "bar" }));
}
/**
* @throws Exception
*/
public void testGetCompleteSql4() throws Exception {
final String sql = "update emp set ename = ?, comm = ? where empno = ?";
assertEquals(
"update emp set ename = 'foo', comm = null where empno = 'bar'",
BindVariableUtil.getCompleteSql(sql, new Object[] { "foo",
null, "bar" }, new ValueType[] { ValueTypes.STRING,
ValueTypes.BIGDECIMAL, ValueTypes.STRING }));
}
/**
* @throws Exception
*/
public void testGetCompleteSql5() throws Exception {
final String sql = "/*?*/select --?\n 'dummy' from dual where '?' = '?' and '1' = ?";
assertEquals(
"/*?*/select --?\n 'dummy' from dual where '?' = '?' and '1' = 'hoge'",
BindVariableUtil.getCompleteSql(sql, new Object[] { "hoge", },
new ValueType[] { ValueTypes.STRING,
ValueTypes.BIGDECIMAL, ValueTypes.STRING }));
}
/**
* @throws Exception
*/
public void testGetCompleteSql_exception() throws Exception {
final String sql = "update emp set ename = ?, comm = ? where empno = ?";
try {
BindVariableUtil.getCompleteSql(sql, new Object[] { "foo", "bar" });
fail();
} catch (IllegalBindArgSizeRuntimeException e) {
}
}
/**
* @throws Exception
*/
public void testToText_Number() throws Exception {
BigDecimal value = new BigDecimal("123.456");
String text = BindVariableUtil.toText(value);
assertEquals("123.456", text);
}
/**
* @throws Exception
*/
public void testToText_Boolean() throws Exception {
Boolean value = Boolean.TRUE;
String text = BindVariableUtil.toText(value);
assertEquals("'true'", text);
}
/**
* @throws Exception
*/
public void testToText_String() throws Exception {
String value = "hoge";
String text = BindVariableUtil.toText(value);
assertEquals("'hoge'", text);
}
/**
* @throws Exception
*/
public void testToText_SqlDate() throws Exception {
long time = Timestamp.valueOf("2007-11-29 13:14:15.123456789")
.getTime();
java.sql.Date value = new java.sql.Date(time);
String text = BindVariableUtil.toText(value);
assertEquals("'2007-11-29'", text);
}
/**
* @throws Exception
*/
public void testToText_Time() throws Exception {
long time = Timestamp.valueOf("2007-11-29 13:14:15.123456789")
.getTime();
Time value = new Time(time);
String text = BindVariableUtil.toText(value);
assertEquals("'13:14:15.123'", text);
}
/**
* @throws Exception
*/
public void testToText_Time_zeroMilliSecond() throws Exception {
long time = Timestamp.valueOf("2007-11-29 13:14:15").getTime();
Time value = new Time(time);
String text = BindVariableUtil.toText(value);
assertEquals("'13:14:15'", text);
}
/**
* @throws Exception
*/
public void testToText_Timestamp() throws Exception {
Timestamp value = Timestamp.valueOf("2007-11-29 13:14:15.123456789");
String text = BindVariableUtil.toText(value);
assertEquals("'2007-11-29 13:14:15.123456789'", text);
}
/**
* @throws Exception
*/
public void testToText_Timestamp_zeroMilliSecond() throws Exception {
Timestamp value = Timestamp.valueOf("2007-11-29 13:14:15");
String text = BindVariableUtil.toText(value);
assertEquals("'2007-11-29 13:14:15'", text);
}
/**
* @throws Exception
*/
public void testToText_ByteArray() throws Exception {
byte[] value = new byte[] { 1, 2, 3 };
String text = BindVariableUtil.toText(value);
assertEquals("'" + value + "(byteLength=3)'", text);
}
/**
* @throws Exception
*/
public void testToText_Object() throws Exception {
Object value = new Object();
String text = BindVariableUtil.toText(value);
assertEquals("'" + value.toString() + "'", text);
}
/**
* @throws Exception
*/
public void testNullText() throws Exception {
assertEquals("null", BindVariableUtil.nullText());
}
}