Skip to content

Commit 03f1fab

Browse files
committed
Improve assertions in DefaultConversionServiceTests
Specifically, we now check the actual type of a converted collection in various assertions to ensure that converters adhere to their contracts.
1 parent 2ada2b7 commit 03f1fab

File tree

1 file changed

+34
-59
lines changed

1 file changed

+34
-59
lines changed

spring-core/src/test/java/org/springframework/core/convert/converter/DefaultConversionServiceTests.java

Lines changed: 34 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -342,30 +342,31 @@ void characterToNumber() {
342342

343343
@Test
344344
void convertArrayToCollectionInterface() {
345-
Collection<?> result = conversionService.convert(new String[] {"1", "2", "3"}, Collection.class);
346-
assertThat(result).isEqualTo(new LinkedHashSet<>(Arrays.asList("1", "2", "3")));
345+
@SuppressWarnings("unchecked")
346+
Collection<String> result = conversionService.convert(new String[] {"1", "2", "3"}, Collection.class);
347+
assertThat(result).isExactlyInstanceOf(LinkedHashSet.class).containsExactly("1", "2", "3");
347348
}
348349

349350
@Test
350351
void convertArrayToSetInterface() {
351-
Collection<?> result = conversionService.convert(new String[] {"1", "2", "3"}, Set.class);
352-
assertThat(result).isEqualTo(new LinkedHashSet<>(Arrays.asList("1", "2", "3")));
352+
@SuppressWarnings("unchecked")
353+
Collection<String> result = conversionService.convert(new String[] {"1", "2", "3"}, Set.class);
354+
assertThat(result).isExactlyInstanceOf(LinkedHashSet.class).containsExactly("1", "2", "3");
353355
}
354356

355357
@Test
356358
void convertArrayToListInterface() {
357-
List<?> result = conversionService.convert(new String[] {"1", "2", "3"}, List.class);
358-
assertThat(result).isEqualTo(Arrays.asList("1", "2", "3"));
359+
@SuppressWarnings("unchecked")
360+
List<String> result = conversionService.convert(new String[] {"1", "2", "3"}, List.class);
361+
assertThat(result).isExactlyInstanceOf(ArrayList.class).containsExactly("1", "2", "3");
359362
}
360363

361364
@Test
362365
void convertArrayToCollectionGenericTypeConversion() throws Exception {
363366
@SuppressWarnings("unchecked")
364-
List<Integer> result = (List<Integer>) conversionService.convert(new String[] {"1", "2", "3"}, TypeDescriptor
365-
.valueOf(String[].class), new TypeDescriptor(getClass().getDeclaredField("genericList")));
366-
assertThat((int) result.get(0)).isEqualTo((int) Integer.valueOf(1));
367-
assertThat((int) result.get(1)).isEqualTo((int) Integer.valueOf(2));
368-
assertThat((int) result.get(2)).isEqualTo((int) Integer.valueOf(3));
367+
List<Integer> result = (List<Integer>) conversionService.convert(new String[] {"1", "2", "3"},
368+
TypeDescriptor.valueOf(String[].class), new TypeDescriptor(getClass().getDeclaredField("genericList")));
369+
assertThat(result).isExactlyInstanceOf(ArrayList.class).containsExactly(1, 2, 3);
369370
}
370371

371372
@Test
@@ -393,10 +394,9 @@ void spr7766() throws Exception {
393394

394395
@Test
395396
void convertArrayToCollectionImpl() {
396-
ArrayList<?> result = conversionService.convert(new String[] {"1", "2", "3"}, ArrayList.class);
397-
assertThat(result.get(0)).isEqualTo("1");
398-
assertThat(result.get(1)).isEqualTo("2");
399-
assertThat(result.get(2)).isEqualTo("3");
397+
@SuppressWarnings("unchecked")
398+
ArrayList<String> result = conversionService.convert(new String[] {"1", "2", "3"}, ArrayList.class);
399+
assertThat(result).isExactlyInstanceOf(ArrayList.class).containsExactly("1", "2", "3");
400400
}
401401

402402
@Test
@@ -426,34 +426,25 @@ void convertEmptyArrayToString() {
426426
@Test
427427
void convertStringToArray() {
428428
String[] result = conversionService.convert("1,2,3", String[].class);
429-
assertThat(result.length).isEqualTo(3);
430-
assertThat(result[0]).isEqualTo("1");
431-
assertThat(result[1]).isEqualTo("2");
432-
assertThat(result[2]).isEqualTo("3");
429+
assertThat(result).containsExactly("1", "2", "3");
433430
}
434431

435432
@Test
436433
void convertStringToArrayWithElementConversion() {
437434
Integer[] result = conversionService.convert("1,2,3", Integer[].class);
438-
assertThat(result.length).isEqualTo(3);
439-
assertThat((int) result[0]).isEqualTo((int) Integer.valueOf(1));
440-
assertThat((int) result[1]).isEqualTo((int) Integer.valueOf(2));
441-
assertThat((int) result[2]).isEqualTo((int) Integer.valueOf(3));
435+
assertThat(result).containsExactly(1, 2, 3);
442436
}
443437

444438
@Test
445439
void convertStringToPrimitiveArrayWithElementConversion() {
446440
int[] result = conversionService.convert("1,2,3", int[].class);
447-
assertThat(result.length).isEqualTo(3);
448-
assertThat(result[0]).isEqualTo(1);
449-
assertThat(result[1]).isEqualTo(2);
450-
assertThat(result[2]).isEqualTo(3);
441+
assertThat(result).containsExactly(1, 2, 3);
451442
}
452443

453444
@Test
454445
void convertEmptyStringToArray() {
455446
String[] result = conversionService.convert("", String[].class);
456-
assertThat(result.length).isEqualTo(0);
447+
assertThat(result).isEmpty();
457448
}
458449

459450
@Test
@@ -467,7 +458,7 @@ void convertArrayToObject() {
467458
void convertArrayToObjectWithElementConversion() {
468459
String[] array = new String[] {"3"};
469460
Integer result = conversionService.convert(array, Integer.class);
470-
assertThat((int) result).isEqualTo((int) Integer.valueOf(3));
461+
assertThat(result).isEqualTo(3);
471462
}
472463

473464
@Test
@@ -480,39 +471,27 @@ void convertArrayToObjectAssignableTargetType() {
480471
@Test
481472
void convertObjectToArray() {
482473
Object[] result = conversionService.convert(3L, Object[].class);
483-
assertThat(result.length).isEqualTo(1);
484-
assertThat(result[0]).isEqualTo(3L);
474+
assertThat(result).containsExactly(3L);
485475
}
486476

487477
@Test
488478
void convertObjectToArrayWithElementConversion() {
489479
Integer[] result = conversionService.convert(3L, Integer[].class);
490-
assertThat(result.length).isEqualTo(1);
491-
assertThat((int) result[0]).isEqualTo((int) Integer.valueOf(3));
480+
assertThat(result).containsExactly(3);
492481
}
493482

494483
@Test
495484
void convertCollectionToArray() {
496-
List<String> list = new ArrayList<>();
497-
list.add("1");
498-
list.add("2");
499-
list.add("3");
485+
List<String> list = Arrays.asList("1", "2", "3");
500486
String[] result = conversionService.convert(list, String[].class);
501-
assertThat(result[0]).isEqualTo("1");
502-
assertThat(result[1]).isEqualTo("2");
503-
assertThat(result[2]).isEqualTo("3");
487+
assertThat(result).containsExactly("1", "2", "3");
504488
}
505489

506490
@Test
507491
void convertCollectionToArrayWithElementConversion() {
508-
List<String> list = new ArrayList<>();
509-
list.add("1");
510-
list.add("2");
511-
list.add("3");
492+
List<String> list = Arrays.asList("1", "2", "3");
512493
Integer[] result = conversionService.convert(list, Integer[].class);
513-
assertThat((int) result[0]).isEqualTo((int) Integer.valueOf(1));
514-
assertThat((int) result[1]).isEqualTo((int) Integer.valueOf(2));
515-
assertThat((int) result[2]).isEqualTo((int) Integer.valueOf(3));
494+
assertThat(result).containsExactly(1, 2, 3);
516495
}
517496

518497
@Test
@@ -532,34 +511,30 @@ void convertCollectionToStringWithElementConversion() throws Exception {
532511

533512
@Test
534513
void convertStringToCollection() {
535-
List<?> result = conversionService.convert("1,2,3", List.class);
536-
assertThat(result.size()).isEqualTo(3);
537-
assertThat(result.get(0)).isEqualTo("1");
538-
assertThat(result.get(1)).isEqualTo("2");
539-
assertThat(result.get(2)).isEqualTo("3");
514+
@SuppressWarnings("unchecked")
515+
List<String> result = conversionService.convert("1,2,3", List.class);
516+
assertThat(result).containsExactly("1", "2", "3");
540517
}
541518

542519
@Test
543520
void convertStringToCollectionWithElementConversion() throws Exception {
544-
List<?> result = (List<?>) conversionService.convert("1,2,3", TypeDescriptor.valueOf(String.class),
521+
@SuppressWarnings("unchecked")
522+
List<Integer> result = (List<Integer>) conversionService.convert("1,2,3", TypeDescriptor.valueOf(String.class),
545523
new TypeDescriptor(getClass().getField("genericList")));
546-
assertThat(result.size()).isEqualTo(3);
547-
assertThat(result.get(0)).isEqualTo(1);
548-
assertThat(result.get(1)).isEqualTo(2);
549-
assertThat(result.get(2)).isEqualTo(3);
524+
assertThat(result).containsExactly(1, 2, 3);
550525
}
551526

552527
@Test
553528
void convertEmptyStringToCollection() {
554529
Collection<?> result = conversionService.convert("", Collection.class);
555-
assertThat(result.size()).isEqualTo(0);
530+
assertThat(result).isEmpty();
556531
}
557532

558533
@Test
559534
void convertCollectionToObject() {
560535
List<Long> list = Collections.singletonList(3L);
561536
Long result = conversionService.convert(list, Long.class);
562-
assertThat(result).isEqualTo(Long.valueOf(3));
537+
assertThat(result).isEqualTo(3);
563538
}
564539

565540
@Test

0 commit comments

Comments
 (0)