/*
* 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.types;
import junit.framework.TestCase;
import org.seasar.extension.jdbc.ValueType;
/**
* @author higa
*
*/
public class ValueTypesTest extends TestCase {
@Override
protected void tearDown() throws Exception {
ValueTypes.setEnumDefaultValueType(EnumOrdinalType.class);
ValueTypes.clear();
super.tearDown();
}
/**
* @throws Exception
*/
public void testEnum() throws Exception {
ValueType valueType = ValueTypes.getValueType(MyEnum.class);
assertNotNull(valueType);
assertTrue(valueType instanceof EnumOrdinalType);
EnumOrdinalType enumType = (EnumOrdinalType) valueType;
assertEquals(MyEnum.ONE, enumType.toEnum(0));
assertSame(valueType, ValueTypes.getValueType(MyEnum.class));
}
/**
* @throws Exception
*/
public void testEnumString() throws Exception {
ValueType valueType = ValueTypes.getEnumStringValueType(MyEnum.class);
assertNotNull(valueType);
assertTrue(valueType instanceof EnumType);
EnumType enumType = (EnumType) valueType;
assertEquals(MyEnum.ONE, enumType.toEnum("ONE"));
}
/**
* @throws Exception
*/
public void testEnumOrdinal() throws Exception {
ValueType valueType = ValueTypes.getEnumOrdinalValueType(MyEnum.class);
assertNotNull(valueType);
assertTrue(valueType instanceof EnumOrdinalType);
EnumOrdinalType enumType = (EnumOrdinalType) valueType;
assertEquals(MyEnum.ONE, enumType.toEnum(0));
}
/**
* @throws Exception
*/
public void testInheritedEnum() throws Exception {
ValueType valueType = ValueTypes.getValueType(MyEnum2.ONE.getClass());
assertNotNull(valueType);
assertTrue(valueType instanceof EnumOrdinalType);
EnumOrdinalType enumType = (EnumOrdinalType) valueType;
assertEquals(MyEnum2.ONE, enumType.toEnum(0));
assertSame(valueType, ValueTypes.getValueType(MyEnum2.class));
}
/**
* @throws Exception
*/
public void testEnum_CustomValueType() throws Exception {
ValueTypes.setEnumDefaultValueType(EnumType.class);
ValueType valueType = ValueTypes.getValueType(MyEnum.class);
assertNotNull(valueType);
assertTrue(valueType instanceof EnumType);
EnumType enumType = (EnumType) valueType;
assertEquals(MyEnum.ONE, enumType.toEnum("ONE"));
assertSame(valueType, ValueTypes.getValueType(MyEnum.class));
}
/**
* @throws Exception
*/
public void testIsSimpleType() throws Exception {
assertTrue(ValueTypes.isSimpleType(String.class));
assertTrue(ValueTypes.isSimpleType(int.class));
assertTrue(ValueTypes.isSimpleType(MyEnum.class));
}
private static enum MyEnum {
/**
*
*/
ONE,
/**
*
*/
TWO
}
/**
* @author koichik
*/
private static enum MyEnum2 {
/**
*
*/
ONE {
@Override
public void f() {
}
},
/**
*
*/
TWO {
@Override
public void f() {
}
};
abstract void f();
}
}