refined generic converter concept

This commit is contained in:
Keith Donald
2009-09-18 19:57:59 +00:00
parent 6420fd303b
commit d3b43ebccb
14 changed files with 290 additions and 173 deletions

View File

@@ -53,7 +53,7 @@ public class GenericConversionServiceTests {
public void executeConversionNullSource() {
assertEquals(null, converter.convert(null, Integer.class));
}
@Test
public void executeCompatibleSource() {
assertEquals(Boolean.FALSE, converter.convert(false, boolean.class));
@@ -86,18 +86,17 @@ public class GenericConversionServiceTests {
public void convertNull() {
assertNull(converter.convert(null, Integer.class));
}
@Test(expected=IllegalArgumentException.class)
@Test(expected = IllegalArgumentException.class)
public void convertNullTargetClass() {
assertEquals("3", converter.convert("3", (Class<?>)null));
assertEquals("3", converter.convert("3", (Class<?>) null));
}
@Test
public void convertNullConversionPointType() {
assertEquals(null, converter.convert("3", TypeDescriptor.NULL));
assertEquals(null, converter.convert(3, TypeDescriptor.valueOf(String.class), TypeDescriptor.NULL));
}
@Test
public void convertWrongTypeArgument() {
converter.addConverterFactory(new StringToNumberConverterFactory());
@@ -128,7 +127,6 @@ public class GenericConversionServiceTests {
}
@Test
@Ignore
public void convertArrayToArray() {
converter.addConverterFactory(new StringToNumberConverterFactory());
Integer[] result = converter.convert(new String[] { "1", "2", "3" }, Integer[].class);
@@ -138,7 +136,6 @@ public class GenericConversionServiceTests {
}
@Test
@Ignore
public void convertArrayToPrimitiveArray() {
converter.addConverterFactory(new StringToNumberConverterFactory());
int[] result = converter.convert(new String[] { "1", "2", "3" }, int[].class);
@@ -146,6 +143,14 @@ public class GenericConversionServiceTests {
assertEquals(2, result[1]);
assertEquals(3, result[2]);
}
@Test
public void convertArrayToArrayAssignable() {
int[] result = converter.convert(new int[] { 1, 2, 3 }, int[].class);
assertEquals(1, result[0]);
assertEquals(2, result[1]);
assertEquals(3, result[2]);
}
@Test
@Ignore
@@ -162,7 +167,8 @@ public class GenericConversionServiceTests {
@Ignore
public void convertArrayToListGenericTypeConversion() throws Exception {
converter.addConverterFactory(new StringToNumberConverterFactory());
List<Integer> result = (List<Integer>) converter.convert(new String[] { "1", "2", "3" }, new TypeDescriptor(getClass().getDeclaredField("genericList")));
List<Integer> result = (List<Integer>) converter.convert(new String[] { "1", "2", "3" }, TypeDescriptor
.valueOf(String[].class), new TypeDescriptor(getClass().getDeclaredField("genericList")));
assertEquals(new Integer("1"), result.get(0));
assertEquals(new Integer("2"), result.get(1));
assertEquals(new Integer("3"), result.get(2));
@@ -221,12 +227,13 @@ public class GenericConversionServiceTests {
foo.add("1");
foo.add("2");
foo.add("3");
List<Integer> bar = (List<Integer>)converter.convert(foo, new TypeDescriptor(getClass().getField("genericList")));
List<Integer> bar = (List<Integer>) converter.convert(foo, TypeDescriptor.valueOf(List.class),
new TypeDescriptor(getClass().getField("genericList")));
assertEquals(new Integer(1), bar.get(0));
assertEquals(new Integer(2), bar.get(1));
assertEquals(new Integer(3), bar.get(2));
}
public Map<Integer, FooEnum> genericMap = new HashMap<Integer, FooEnum>();
@Test
@@ -236,7 +243,8 @@ public class GenericConversionServiceTests {
foo.put("2", "BAZ");
converter.addConverterFactory(new StringToNumberConverterFactory());
converter.addConverterFactory(new StringToEnumConverterFactory());
Map<String, FooEnum> map = (Map<String, FooEnum>) converter.convert(foo, new TypeDescriptor(getClass().getField("genericMap")));
Map<String, FooEnum> map = (Map<String, FooEnum>) converter.convert(foo, TypeDescriptor.valueOf(Map.class),
new TypeDescriptor(getClass().getField("genericMap")));
assertEquals(map.get(1), FooEnum.BAR);
assertEquals(map.get(2), FooEnum.BAZ);
}
@@ -250,11 +258,11 @@ public class GenericConversionServiceTests {
assertEquals("2", result[1]);
assertEquals("3", result[2]);
}
@Test
@Ignore
public void convertStringToArrayWithElementConversion() {
converter.addConverterFactory(new StringToNumberConverterFactory());
converter.addConverterFactory(new StringToNumberConverterFactory());
Integer[] result = converter.convert("1,2,3", Integer[].class);
assertEquals(3, result.length);
assertEquals(new Integer(1), result[0]);
@@ -262,7 +270,6 @@ public class GenericConversionServiceTests {
assertEquals(new Integer(3), result[2]);
}
public static enum FooEnum {
BAR, BAZ
}