Beefed up test suite
This commit is contained in:
parent
e9416db472
commit
c693f216f1
|
|
@ -37,7 +37,7 @@ final class ArrayToArrayGenericConverter implements GenericConverter {
|
|||
Object target = Array.newInstance(targetElementType.getType(), Array.getLength(source));
|
||||
GenericConverter converter = this.conversionService.getConverter(sourceElementType, targetElementType);
|
||||
if (converter == null) {
|
||||
throw new ConverterNotFoundException(sourceType, targetType);
|
||||
throw new ConverterNotFoundException(sourceElementType, targetElementType);
|
||||
}
|
||||
for (int i = 0; i < Array.getLength(target); i++) {
|
||||
Array.set(target, i, converter.convert(Array.get(source, i), sourceElementType, targetElementType));
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ final class ArrayToCollectionGenericConverter implements GenericConverter {
|
|||
} else {
|
||||
GenericConverter converter = this.conversionService.getConverter(sourceElementType, targetElementType);
|
||||
if (converter == null) {
|
||||
throw new ConverterNotFoundException(sourceType, targetType);
|
||||
throw new ConverterNotFoundException(sourceElementType, targetElementType);
|
||||
}
|
||||
for (int i = 0; i < length; i++) {
|
||||
collection.add(converter.convert(Array.get(source, i), sourceElementType, targetElementType));
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ final class ArrayToObjectGenericConverter implements GenericConverter {
|
|||
} else {
|
||||
GenericConverter converter = this.conversionService.getConverter(sourceElementType, targetType);
|
||||
if (converter == null) {
|
||||
throw new ConverterNotFoundException(sourceType, targetType);
|
||||
throw new ConverterNotFoundException(sourceElementType, targetType);
|
||||
}
|
||||
return converter.convert(Array.get(source, 0), sourceElementType, targetType);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ final class CollectionToArrayGenericConverter implements GenericConverter {
|
|||
} else {
|
||||
GenericConverter converter = this.conversionService.getConverter(sourceElementType, targetElementType);
|
||||
if (converter == null) {
|
||||
throw new ConverterNotFoundException(sourceType, targetType);
|
||||
throw new ConverterNotFoundException(sourceElementType, targetElementType);
|
||||
}
|
||||
for (Iterator it = sourceCollection.iterator(); it.hasNext(); i++) {
|
||||
Array.set(array, i, converter.convert(it.next(), sourceElementType, targetElementType));
|
||||
|
|
|
|||
|
|
@ -40,7 +40,8 @@ final class CollectionToCollectionGenericConverter implements GenericConverter {
|
|||
if (sourceType.isAssignableTo(targetType)) {
|
||||
return sourceCollection;
|
||||
} else {
|
||||
Collection targetCollection = CollectionFactory.createCollection(targetType.getType(), sourceCollection.size());
|
||||
Collection targetCollection = CollectionFactory.createCollection(targetType.getType(), sourceCollection
|
||||
.size());
|
||||
targetCollection.addAll(sourceCollection);
|
||||
return targetCollection;
|
||||
}
|
||||
|
|
@ -48,7 +49,7 @@ final class CollectionToCollectionGenericConverter implements GenericConverter {
|
|||
Collection targetCollection = CollectionFactory.createCollection(targetType.getType(), sourceCollection.size());
|
||||
GenericConverter converter = this.conversionService.getConverter(sourceElementType, targetElementType);
|
||||
if (converter == null) {
|
||||
throw new ConverterNotFoundException(sourceType, targetType);
|
||||
throw new ConverterNotFoundException(sourceElementType, targetElementType);
|
||||
}
|
||||
for (Object element : sourceCollection) {
|
||||
targetCollection.add(converter.convert(element, sourceElementType, targetElementType));
|
||||
|
|
|
|||
|
|
@ -33,15 +33,19 @@ final class CollectionToObjectGenericConverter implements GenericConverter {
|
|||
if (sourceCollection.size() == 0) {
|
||||
return null;
|
||||
} else {
|
||||
Object firstElement = sourceCollection.iterator().next();
|
||||
TypeDescriptor sourceElementType = sourceType.getElementTypeDescriptor();
|
||||
if (sourceElementType == TypeDescriptor.NULL && firstElement != null) {
|
||||
sourceElementType = TypeDescriptor.valueOf(firstElement.getClass());
|
||||
}
|
||||
if (sourceElementType == TypeDescriptor.NULL || sourceElementType.isAssignableTo(targetType)) {
|
||||
return sourceCollection.iterator().next();
|
||||
return firstElement;
|
||||
} else {
|
||||
GenericConverter converter = this.conversionService.getConverter(sourceElementType, targetType);
|
||||
if (converter == null) {
|
||||
throw new ConverterNotFoundException(sourceType, targetType);
|
||||
throw new ConverterNotFoundException(sourceElementType, targetType);
|
||||
}
|
||||
return converter.convert(sourceCollection.iterator().next(), sourceElementType, targetType);
|
||||
return converter.convert(firstElement, sourceElementType, targetType);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ final class ObjectToArrayGenericConverter implements GenericConverter {
|
|||
} else {
|
||||
GenericConverter converter = this.conversionService.getConverter(sourceType, targetElementType);
|
||||
if (converter == null) {
|
||||
throw new ConverterNotFoundException(sourceType, targetType);
|
||||
throw new ConverterNotFoundException(sourceType, targetElementType);
|
||||
}
|
||||
Array.set(target, 0, converter.convert(source, sourceType, targetElementType));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ final class ObjectToCollectionGenericConverter implements GenericConverter {
|
|||
} else {
|
||||
GenericConverter converter = this.conversionService.getConverter(sourceType, targetElementType);
|
||||
if (converter == null) {
|
||||
throw new ConverterNotFoundException(sourceType, targetType);
|
||||
throw new ConverterNotFoundException(sourceType, targetElementType);
|
||||
}
|
||||
target.add(converter.convert(source, sourceType, targetElementType));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@ import static org.junit.Assert.assertTrue;
|
|||
|
||||
import java.util.AbstractList;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.LinkedList;
|
||||
|
|
@ -241,6 +242,37 @@ public class GenericConversionServiceTests {
|
|||
assertEquals(map.get(2), FooEnum.BAZ);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertObjectToCollection() {
|
||||
List<String> result = (List<String>) converter.convert("test", List.class);
|
||||
assertEquals(1, result.size());
|
||||
assertEquals("test", result.get(0));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertObjectToCollectionWithElementConversion() throws Exception {
|
||||
converter.addConverterFactory(new StringToNumberConverterFactory());
|
||||
List<Integer> result = (List<Integer>) converter.convert("3", TypeDescriptor.valueOf(String.class),
|
||||
new TypeDescriptor(getClass().getField("genericList")));
|
||||
assertEquals(1, result.size());
|
||||
assertEquals(new Integer(3), result.get(0));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertCollectionToObject() {
|
||||
List<String> list = Collections.singletonList("test");
|
||||
String result = converter.convert(list, String.class);
|
||||
assertEquals("test", result);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertCollectionToObjectWithElementConversion() {
|
||||
converter.addConverterFactory(new StringToNumberConverterFactory());
|
||||
List<String> list = Collections.singletonList("3");
|
||||
Integer result = converter.convert(list, Integer.class);
|
||||
assertEquals(new Integer(3), result);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertObjectToArray() {
|
||||
String[] result = converter.convert("test", String[].class);
|
||||
|
|
@ -256,6 +288,21 @@ public class GenericConversionServiceTests {
|
|||
assertEquals(new Integer(1), result[0]);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertArrayToObject() {
|
||||
String[] array = new String[] { "test" };
|
||||
String result = converter.convert(array, String.class);
|
||||
assertEquals("test", result);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void convertArrayToObjectWithElementConversion() {
|
||||
converter.addConverterFactory(new StringToNumberConverterFactory());
|
||||
String[] array = new String[] { "3" };
|
||||
Integer result = converter.convert(array, Integer.class);
|
||||
assertEquals(new Integer(3), result);
|
||||
}
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void convertStringToArrayWithElementConversion() {
|
||||
|
|
|
|||
Loading…
Reference in New Issue