Skip to content

Commit aa38136

Browse files
committed
Rewrite the *other* testBadObjectElements
Hooray for copy-pasted code. See 3be2646.
1 parent 9934d04 commit aa38136

File tree

1 file changed

+30
-13
lines changed

1 file changed

+30
-13
lines changed

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

Lines changed: 30 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,10 @@
3737
import static org.junit.Assert.assertTrue;
3838
import static org.junit.Assert.fail;
3939

40-
import java.lang.reflect.Field;
4140
import java.lang.reflect.Type;
4241
import java.math.BigDecimal;
4342
import java.util.ArrayList;
43+
import java.util.Arrays;
4444
import java.util.Collection;
4545
import java.util.Collections;
4646
import java.util.Date;
@@ -68,7 +68,6 @@
6868
import org.scijava.util.ClassUtils;
6969
import org.scijava.util.DoubleArray;
7070
import org.scijava.util.FloatArray;
71-
import org.scijava.util.GenericUtils;
7271
import org.scijava.util.IntArray;
7372
import org.scijava.util.LongArray;
7473
import org.scijava.util.PrimitiveArray;
@@ -467,31 +466,49 @@ class Struct {
467466
final Struct struct = new Struct();
468467

469468
setFieldValue(struct, "intArray", "not an int array");
470-
assertEquals(null, struct.intArray);
469+
assertNotNull(struct.intArray);
470+
assertEquals(1, struct.intArray.length);
471+
assertSame(0, struct.intArray[0]);
471472
}
472473

473474
/**
474475
* Tests setting incompatible object values, for both array types of objects
475476
* and a collection.
476477
*/
477478
@Test
478-
public void testBadObjectElements() {
479+
public void testIncompatibleCollections() {
479480
class Struct {
480481

481482
private Double[] doubleArray;
482-
private List<String> stringList;
483-
@SuppressWarnings("unused")
484-
private Set<char[]> nestedArray;
483+
private List<Number> numberList;
484+
private Set<Integer[]> setOfIntegerArrays;
485485
}
486486
final Struct struct = new Struct();
487487

488-
// Test abnormal behavior for an object array
489-
setFieldValue(struct, "doubleArray", "not a double array");
490-
assertEquals(null, struct.doubleArray);
488+
// NB: DefaultConverter converts non-collection/array objects to
489+
// collection/array objects, even if some or all of the constituent elements
490+
// cannot be converted to the array/collection component/element type.
491491

492-
// Test abnormal behavior for a list
493-
setFieldValue(struct, "nestedArray", "definitely not a set of char arrays");
494-
assertNull(struct.stringList);
492+
// Test object to incompatible array type
493+
setFieldValue(struct, "doubleArray", "not a double array");
494+
assertNotNull(struct.doubleArray);
495+
assertEquals(1, struct.doubleArray.length);
496+
assertNull(struct.doubleArray[0]);
497+
498+
// Test object to incompatible List type
499+
setFieldValue(struct, "numberList", "not actually a list of numbers");
500+
List<Number> expectedList = Arrays.asList((Number) null);
501+
assertEquals(expectedList, struct.numberList);
502+
503+
// Test object to incompatible Set type
504+
setFieldValue(struct, "setOfIntegerArrays", //
505+
"definitely not a set of Integer[]");
506+
assertNotNull(struct.setOfIntegerArrays);
507+
assertEquals(1, struct.setOfIntegerArrays.size());
508+
Integer[] singleton = struct.setOfIntegerArrays.iterator().next();
509+
assertNotNull(singleton);
510+
assertEquals(1, singleton.length);
511+
assertNull(singleton[0]);
495512
}
496513

497514
/**

0 commit comments

Comments
 (0)