/*
* 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.gen.internal.argtype;
import java.io.File;
import java.util.List;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.seasar.framework.beans.BeanDesc;
import org.seasar.framework.beans.factory.BeanDescFactory;
import static org.junit.Assert.*;
/**
* @author taedium
*
*/
public class ArgumentTypeRegistryTest {
private BeanDesc beanDesc;
/**
*
*/
@Before
public void setUp() {
beanDesc = BeanDescFactory.getBeanDesc(MyBean.class);
}
/**
*
*/
@After
public void tearDown() {
ArgumentTypeRegistry.registerArgumentType(String.class,
StringType.class);
ArgumentTypeRegistry.registerCollectionArgumentType(List.class,
ListType.class);
}
/**
*
* @throws Exception
*/
@Test
public void testGetArgumentType_String() throws Exception {
ArgumentType<String> argumentType = ArgumentTypeRegistry
.getArgumentType(beanDesc.getPropertyDesc("string"));
assertNotNull(argumentType);
}
/**
*
* @throws Exception
*/
@Test
public void testGetArgumentType_Integer() throws Exception {
ArgumentType<String> argumentType = ArgumentTypeRegistry
.getArgumentType(beanDesc.getPropertyDesc("integer"));
assertNotNull(argumentType);
}
/**
*
* @throws Exception
*/
@Test
public void testGetArgumentType_MyEnum() throws Exception {
ArgumentType<String> argumentType = ArgumentTypeRegistry
.getArgumentType(beanDesc.getPropertyDesc("myEnum"));
assertNotNull(argumentType);
}
/**
*
* @throws Exception
*/
@Test
public void testGetArgumentType_List() throws Exception {
ArgumentType<List<File>> argumentType = ArgumentTypeRegistry
.getArgumentType(beanDesc.getPropertyDesc("list"));
assertNotNull(argumentType);
}
/**
*
* @throws Exception
*/
@Test
public void testRegisterArgumentType() throws Exception {
ArgumentTypeRegistry.registerArgumentType(String.class,
MyArgumentType.class);
ArgumentType<String> argumentType = ArgumentTypeRegistry
.getArgumentType(String.class);
assertTrue(argumentType instanceof MyArgumentType);
assertEquals("#aaa#", argumentType.toObject("aaa"));
assertEquals("*aaa*", argumentType.toText("aaa"));
}
/**
*
* @throws Exception
*/
@Test
public void testDeregisterArgumentType() throws Exception {
ArgumentTypeRegistry.deregisterArgumentType(String.class);
ArgumentType<String> argumentType = ArgumentTypeRegistry
.getArgumentType(String.class);
assertNull(argumentType);
}
/**
*
* @throws Exception
*/
@Test
public void testRegisterCollectionArgumentType() throws Exception {
ArgumentTypeRegistry.registerCollectionArgumentType(List.class,
MyCollectionArgumentType.class);
ArgumentType<List<String>> argumentType = ArgumentTypeRegistry
.getCollectionArgumentType(List.class, String.class);
assertTrue(argumentType instanceof MyCollectionArgumentType);
}
/**
*
* @throws Exception
*/
@Test
public void testDeregisterCollectionArgumentType() throws Exception {
ArgumentTypeRegistry.deregisterCollectionArgumentType(List.class);
ArgumentType<List<String>> argumentType = ArgumentTypeRegistry
.getCollectionArgumentType(List.class, String.class);
assertNull(argumentType);
}
/**
*
* @author taedium
*
*/
public static class MyBean {
private String string;
private Integer integer;
private MyEnum myEnum;
private List<File> list;
/**
* @return Returns the string.
*/
public String getString() {
return string;
}
/**
* @param string
* The string to set.
*/
public void setString(String string) {
this.string = string;
}
/**
* @return Returns the integer.
*/
public Integer getInteger() {
return integer;
}
/**
* @param integer
* The integer to set.
*/
public void setInteger(Integer integer) {
this.integer = integer;
}
/**
* @return Returns the myEnum.
*/
public MyEnum getMyEnum() {
return myEnum;
}
/**
* @param myEnum
* The myEnum to set.
*/
public void setMyEnum(MyEnum myEnum) {
this.myEnum = myEnum;
}
/**
* @return Returns the list.
*/
public List<File> getList() {
return list;
}
/**
* @param list
* The list to set.
*/
public void setList(List<File> list) {
this.list = list;
}
}
/** */
public static enum MyEnum {
/** */
AAA,
/** */
BBB,
/** */
CCC;
}
/**
*
* @author taedium
*
*/
public static class MyArgumentType implements ArgumentType<String> {
public String toObject(String value) {
return "#" + value + "#";
}
public String toText(String value) {
return "*" + value + "*";
}
}
/**
*
* @author taedium
*
* @param <T>
*/
public static class MyCollectionArgumentType<T> extends CollectionType<T> {
/**
*
* @param argumentType
*/
public MyCollectionArgumentType(ArgumentType<T> argumentType) {
super(argumentType);
}
}
}