/*
* 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.dxo.converter.impl;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.List;
import java.util.Set;
import java.util.regex.Pattern;
import org.seasar.extension.dxo.converter.ConversionContext;
import org.seasar.extension.dxo.converter.Converter;
import org.seasar.extension.unit.S2TestCase;
import org.seasar.framework.util.DisposableUtil;
/**
* @author Satsohi Kimura
* @author koichik
*/
public class ConverterFactoryImplTest extends S2TestCase {
private ConverterFactoryImpl factory;
protected void setUp() throws Exception {
include("dxo.dicon");
}
/**
*
*/
public void testBoolean() {
Converter converter = factory.getConverter(Object.class, boolean.class);
assertEquals(BooleanConverter.class.getName(), converter.getClass()
.getName());
}
/**
*
*/
public void testNumber() {
Converter converter = factory.getConverter(Object.class, byte.class);
assertEquals(ByteConverter.class.getName(), converter.getClass()
.getName());
converter = factory.getConverter(Object.class, short.class);
assertEquals(ShortConverter.class.getName(), converter.getClass()
.getName());
converter = factory.getConverter(Object.class, int.class);
assertEquals(IntegerConverter.class.getName(), converter.getClass()
.getName());
converter = factory.getConverter(Object.class, long.class);
assertEquals(LongConverter.class.getName(), converter.getClass()
.getName());
converter = factory.getConverter(Object.class, float.class);
assertEquals(FloatConverter.class.getName(), converter.getClass()
.getName());
converter = factory.getConverter(Object.class, double.class);
assertEquals(DoubleConverter.class.getName(), converter.getClass()
.getName());
converter = factory.getConverter(Object.class, BigInteger.class);
assertEquals(BigIntegerConverter.class.getName(), converter.getClass()
.getName());
converter = factory.getConverter(Object.class, BigDecimal.class);
assertEquals(BigDecimalConverter.class.getName(), converter.getClass()
.getName());
}
/**
*
*/
public void testString() {
Converter converter = factory.getConverter(Object.class, char.class);
assertEquals(CharacterConverter.class.getName(), converter.getClass()
.getName());
converter = factory.getConverter(Object.class, String.class);
assertEquals(StringConverter.class.getName(), converter.getClass()
.getName());
}
/**
*
*/
public void testWrapper() {
Converter converter = factory.getConverter(Object.class, Byte.class);
assertEquals(ByteConverter.class.getName(), converter.getClass()
.getName());
converter = factory.getConverter(Object.class, Short.class);
assertEquals(ShortConverter.class.getName(), converter.getClass()
.getName());
converter = factory.getConverter(Object.class, Integer.class);
assertEquals(IntegerConverter.class.getName(), converter.getClass()
.getName());
converter = factory.getConverter(Object.class, Long.class);
assertEquals(LongConverter.class.getName(), converter.getClass()
.getName());
converter = factory.getConverter(Object.class, Float.class);
assertEquals(FloatConverter.class.getName(), converter.getClass()
.getName());
converter = factory.getConverter(Object.class, Double.class);
assertEquals(DoubleConverter.class.getName(), converter.getClass()
.getName());
converter = factory.getConverter(Object.class, Boolean.class);
assertEquals(BooleanConverter.class.getName(), converter.getClass()
.getName());
converter = factory.getConverter(Object.class, Character.class);
assertEquals(CharacterConverter.class.getName(), converter.getClass()
.getName());
}
/**
*
*/
public void testArray() {
Converter converter = factory.getConverter(Object.class, char[].class);
assertEquals(CharArrayConverter.class.getName(), converter.getClass()
.getName());
converter = factory.getConverter(Object.class, int[].class);
assertEquals(ArrayConverter.class.getName(), converter.getClass()
.getName());
converter = factory.getConverter(Object.class, Object[].class);
assertEquals(ArrayConverter.class.getName(), converter.getClass()
.getName());
}
/**
*
*/
public void testCollection() {
Converter converter = factory.getConverter(Object.class, List.class);
assertEquals(ListConverter.class.getName(), converter.getClass()
.getName());
converter = factory.getConverter(Object.class, Set.class);
assertEquals(SetConverter.class.getName(), converter.getClass()
.getName());
}
/**
*
*/
public void testDispose() {
Converter converter = factory.getConverter(Object.class, String.class);
assertEquals(StringConverter.class.getName(), converter.getClass()
.getName());
DisposableUtil.dispose();
converter = factory.getConverter(Object.class, String.class);
assertEquals(StringConverter.class.getName(), converter.getClass()
.getName());
}
/**
* @throws Exception
*/
public void testCustomConverter() throws Exception {
register(PatternConverter.class);
PatternConverter converter = (PatternConverter) factory.getConverter(
String.class, Pattern.class);
assertNotNull(converter);
}
/**
*
*/
public static class PatternConverter implements Converter {
public Class[] getSourceClasses() {
return new Class[] { String.class };
}
public Class getDestClass() {
return Pattern.class;
}
public Object convert(Object source, Class destClass,
ConversionContext context) {
return Pattern.compile((String) source);
}
public void convert(Object source, Object dest,
ConversionContext context) {
throw new UnsupportedOperationException();
}
}
}