Skip to content

Commit 00ae134

Browse files
committed
Add array conversion unit tests
1 parent 8518ce6 commit 00ae134

File tree

1 file changed

+58
-0
lines changed

1 file changed

+58
-0
lines changed

src/test/java/org/scijava/convert/ConvertServiceTest.java

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,15 @@
5454
import org.scijava.Context;
5555
import org.scijava.Priority;
5656
import org.scijava.plugin.Plugin;
57+
import org.scijava.util.BoolArray;
58+
import org.scijava.util.CharArray;
5759
import org.scijava.util.ClassUtils;
60+
import org.scijava.util.DoubleArray;
61+
import org.scijava.util.FloatArray;
62+
import org.scijava.util.IntArray;
5863
import org.scijava.util.LongArray;
64+
import org.scijava.util.PrimitiveArray;
65+
import org.scijava.util.ShortArray;
5966

6067
/**
6168
* Tests {@link ConvertService}.
@@ -121,6 +128,47 @@ public void testPrimitives() {
121128
assertTrue(1d == convertService.convert(1.0, double.class));
122129
}
123130

131+
/**
132+
* Test conversion between primitive types, {@link PrimitiveArray}s and
133+
* {@link List}s of {@link Number}s.
134+
*/
135+
@Test
136+
public void testArrays() {
137+
testIntechangeable(int[].class, IntArray.class);
138+
testIntechangeable(long[].class, LongArray.class);
139+
testIntechangeable(double[].class, DoubleArray.class);
140+
testIntechangeable(float[].class, FloatArray.class);
141+
testIntechangeable(short[].class, ShortArray.class);
142+
testIntechangeable(char[].class, CharArray.class);
143+
testIntechangeable(boolean[].class, BoolArray.class);
144+
145+
assertTrue(convertService.supports(List.class, int[].class));
146+
assertTrue(convertService.supports(List.class, long[].class));
147+
assertTrue(convertService.supports(List.class, double[].class));
148+
assertTrue(convertService.supports(List.class, float[].class));
149+
assertTrue(convertService.supports(List.class, short[].class));
150+
assertTrue(convertService.supports(List.class, char[].class));
151+
assertTrue(convertService.supports(List.class, boolean[].class));
152+
153+
final List<Integer> list = new ArrayList<Integer>();
154+
155+
for (int i=0; i<100; i++) list.add((int) (10000 * Math.random()));
156+
157+
final int[] primitives = convertService.convert(list, int[].class);
158+
159+
final IntArray intArray = convertService.convert(primitives, IntArray.class);
160+
161+
// Should just unwrap the IntArray
162+
assertTrue(primitives == convertService.convert(intArray, int[].class));
163+
164+
// Verify all our lists are the same
165+
166+
for (int i=0; i<list.size(); i++) {
167+
assertTrue(list.get(i) == primitives[i]);
168+
assertTrue(list.get(i) == intArray.getValue(i));
169+
}
170+
}
171+
124172
/** Tests {@link ConvertService#supports(Class, Class)}. */
125173
@Test
126174
public void testCanConvert() {
@@ -664,4 +712,14 @@ public <T> T convert(Object src, Class<T> dest) {
664712
return null;
665713
}
666714
}
715+
716+
// -- Helper methods --
717+
718+
/**
719+
* Verify bi-direciotnal conversion is supported between the two classes
720+
*/
721+
private void testIntechangeable(final Class<?> c1, final Class<?> c2) {
722+
assertTrue(convertService.supports(c1, c2));
723+
assertTrue(convertService.supports(c2, c1));
724+
}
667725
}

0 commit comments

Comments
 (0)