/*
* Copyright 2014 mango.jfaster.org
*
* The Mango Project licenses this file to you 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.jfaster.mango.binding;
import com.google.common.collect.Lists;
import org.jfaster.mango.type.IntegerTypeHandler;
import org.jfaster.mango.type.LongTypeHandler;
import org.jfaster.mango.type.StringTypeHandler;
import org.jfaster.mango.type.TypeHandler;
import org.junit.Test;
import java.util.ArrayList;
import java.util.List;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.equalTo;
/**
* @author ash
*/
public class BoundSqlTest {
@Test
public void test() throws Exception {
String sql = "select xxx";
BoundSql bs = new BoundSql(sql);
List<Object> args = new ArrayList<Object>();
List<TypeHandler<?>> typeHandlers = new ArrayList<TypeHandler<?>>();
List<Class<? extends TypeHandler>> typeHandlerClasses = new ArrayList<Class<? extends TypeHandler>>();
args.add(1);
typeHandlers.add(new IntegerTypeHandler());
typeHandlerClasses.add(IntegerTypeHandler.class);
args.add(null);
typeHandlers.add(new LongTypeHandler());
typeHandlerClasses.add(LongTypeHandler.class);
args.add("ash");
typeHandlers.add(new StringTypeHandler());
typeHandlerClasses.add(StringTypeHandler.class);
for (Object arg : args) {
if (arg == null) {
bs.addNullArg(Long.class);
} else {
bs.addArg(arg);
}
}
assertThat(bs.getSql(), equalTo(sql));
assertThat(bs.getArgs(), equalTo(args));
List<Class<? extends TypeHandler>> newTypeHandlerClasses = new ArrayList<Class<? extends TypeHandler>>();
for (TypeHandler<?> typeHandler : bs.getTypeHandlers()) {
newTypeHandlerClasses.add(typeHandler.getClass());
}
assertThat(newTypeHandlerClasses, equalTo(typeHandlerClasses));
bs = new BoundSql(sql, Lists.newArrayList(args), Lists.newArrayList(typeHandlers));
bs.addArg(0, "lucy");
bs.addNullArg(1, String.class);
args.add(0, "lucy");
args.add(1, null);
assertThat(bs.getSql(), equalTo(sql));
assertThat(bs.getArgs(), equalTo(args));
typeHandlerClasses.add(0, StringTypeHandler.class);
typeHandlerClasses.add(1, StringTypeHandler.class);
newTypeHandlerClasses = new ArrayList<Class<? extends TypeHandler>>();
for (TypeHandler<?> typeHandler : bs.getTypeHandlers()) {
newTypeHandlerClasses.add(typeHandler.getClass());
}
assertThat(newTypeHandlerClasses, equalTo(typeHandlerClasses));
sql = "update ...";
bs.setSql(sql);
assertThat(bs.getSql(), equalTo(sql));
}
}