From d68bb4eecd2f576e90a79d86e0c73af5ed6602ca Mon Sep 17 00:00:00 2001 From: Sam Brannen Date: Sun, 9 Jan 2022 16:13:22 +0100 Subject: [PATCH] Simplify StreamConverterTests --- .../convert/support/StreamConverterTests.java | 73 ++++++------------- 1 file changed, 23 insertions(+), 50 deletions(-) diff --git a/spring-core/src/test/java/org/springframework/core/convert/support/StreamConverterTests.java b/spring-core/src/test/java/org/springframework/core/convert/support/StreamConverterTests.java index a7bee74e5a..56ec69a206 100644 --- a/spring-core/src/test/java/org/springframework/core/convert/support/StreamConverterTests.java +++ b/spring-core/src/test/java/org/springframework/core/convert/support/StreamConverterTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 the original author or authors. + * Copyright 2002-2022 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -30,11 +30,14 @@ import org.springframework.core.convert.TypeDescriptor; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatExceptionOfType; import static org.assertj.core.api.Assertions.assertThatIllegalStateException; +import static org.assertj.core.api.InstanceOfAssertFactories.list; +import static org.assertj.core.api.InstanceOfAssertFactories.stream; /** * Tests for {@link StreamConverter}. * * @author Stephane Nicoll + * @author Sam Brannen * @since 4.2 */ class StreamConverterTests { @@ -56,60 +59,41 @@ class StreamConverterTests { @Test void convertFromStreamToList() throws NoSuchFieldException { this.conversionService.addConverter(Number.class, String.class, new ObjectToStringConverter()); - Stream stream = Arrays.asList(1, 2, 3).stream(); + Stream stream = Stream.of(1, 2, 3); TypeDescriptor listOfStrings = new TypeDescriptor(Types.class.getField("listOfStrings")); Object result = this.conversionService.convert(stream, listOfStrings); - assertThat(result).as("Converted object must not be null").isNotNull(); - boolean condition = result instanceof List; - assertThat(condition).as("Converted object must be a list").isTrue(); - @SuppressWarnings("unchecked") - List content = (List) result; - assertThat(content.get(0)).isEqualTo("1"); - assertThat(content.get(1)).isEqualTo("2"); - assertThat(content.get(2)).isEqualTo("3"); - assertThat(content.size()).as("Wrong number of elements").isEqualTo(3); + assertThat(result).asInstanceOf(list(String.class)).containsExactly("1", "2", "3"); } @Test void convertFromStreamToArray() throws NoSuchFieldException { this.conversionService.addConverterFactory(new NumberToNumberConverterFactory()); - Stream stream = Arrays.asList(1, 2, 3).stream(); + Stream stream = Stream.of(1, 2, 3); TypeDescriptor arrayOfLongs = new TypeDescriptor(Types.class.getField("arrayOfLongs")); Object result = this.conversionService.convert(stream, arrayOfLongs); assertThat(result).as("Converted object must not be null").isNotNull(); assertThat(result.getClass().isArray()).as("Converted object must be an array").isTrue(); Long[] content = (Long[]) result; - assertThat(content[0]).isEqualTo(Long.valueOf(1L)); - assertThat(content[1]).isEqualTo(Long.valueOf(2L)); - assertThat(content[2]).isEqualTo(Long.valueOf(3L)); - assertThat(content.length).as("Wrong number of elements").isEqualTo(3); + assertThat(content).containsExactly(1L, 2L, 3L); } @Test void convertFromStreamToRawList() throws NoSuchFieldException { - Stream stream = Arrays.asList(1, 2, 3).stream(); + Stream stream = Stream.of(1, 2, 3); TypeDescriptor listOfStrings = new TypeDescriptor(Types.class.getField("rawList")); Object result = this.conversionService.convert(stream, listOfStrings); - assertThat(result).as("Converted object must not be null").isNotNull(); - boolean condition = result instanceof List; - assertThat(condition).as("Converted object must be a list").isTrue(); - @SuppressWarnings("unchecked") - List content = (List) result; - assertThat(content.get(0)).isEqualTo(1); - assertThat(content.get(1)).isEqualTo(2); - assertThat(content.get(2)).isEqualTo(3); - assertThat(content.size()).as("Wrong number of elements").isEqualTo(3); + assertThat(result).asInstanceOf(list(Object.class)).containsExactly(1, 2, 3); } @Test void convertFromStreamToArrayNoConverter() throws NoSuchFieldException { - Stream stream = Arrays.asList(1, 2, 3).stream(); + Stream stream = Stream.of(1, 2, 3); TypeDescriptor arrayOfLongs = new TypeDescriptor(Types.class.getField("arrayOfLongs")); - assertThatExceptionOfType(ConversionFailedException.class).isThrownBy(() -> - this.conversionService.convert(stream, arrayOfLongs)) + assertThatExceptionOfType(ConversionFailedException.class) + .isThrownBy(() -> this.conversionService.convert(stream, arrayOfLongs)) .withCauseInstanceOf(ConverterNotFoundException.class); } @@ -117,13 +101,11 @@ class StreamConverterTests { @SuppressWarnings("resource") void convertFromListToStream() throws NoSuchFieldException { this.conversionService.addConverterFactory(new StringToNumberConverterFactory()); - List stream = Arrays.asList("1", "2", "3"); + List list = Arrays.asList("1", "2", "3"); TypeDescriptor streamOfInteger = new TypeDescriptor(Types.class.getField("streamOfIntegers")); - Object result = this.conversionService.convert(stream, streamOfInteger); + Object result = this.conversionService.convert(list, streamOfInteger); - assertThat(result).as("Converted object must not be null").isNotNull(); - boolean condition = result instanceof Stream; - assertThat(condition).as("Converted object must be a stream").isTrue(); + assertThat(result).as("Converted object must be a stream").isInstanceOf(Stream.class); @SuppressWarnings("unchecked") Stream content = (Stream) result; assertThat(content.mapToInt(x -> x).sum()).isEqualTo(6); @@ -132,34 +114,25 @@ class StreamConverterTests { @Test @SuppressWarnings("resource") void convertFromArrayToStream() throws NoSuchFieldException { - Integer[] stream = new Integer[] {1, 0, 1}; + Integer[] array = new Integer[] {1, 0, 1}; this.conversionService.addConverter(Integer.class, Boolean.class, source -> source == 1); TypeDescriptor streamOfBoolean = new TypeDescriptor(Types.class.getField("streamOfBooleans")); - Object result = this.conversionService.convert(stream, streamOfBoolean); + Object result = this.conversionService.convert(array, streamOfBoolean); - assertThat(result).as("Converted object must not be null").isNotNull(); - boolean condition = result instanceof Stream; - assertThat(condition).as("Converted object must be a stream").isTrue(); - @SuppressWarnings("unchecked") - Stream content = (Stream) result; - assertThat(content.filter(x -> x).count()).isEqualTo(2); + assertThat(result).asInstanceOf(stream(Boolean.class)).filteredOn(x -> x).hasSize(2); } @Test @SuppressWarnings("resource") void convertFromListToRawStream() throws NoSuchFieldException { - List stream = Arrays.asList("1", "2", "3"); + List list = Arrays.asList("1", "2", "3"); TypeDescriptor streamOfInteger = new TypeDescriptor(Types.class.getField("rawStream")); - Object result = this.conversionService.convert(stream, streamOfInteger); + Object result = this.conversionService.convert(list, streamOfInteger); - assertThat(result).as("Converted object must not be null").isNotNull(); - boolean condition = result instanceof Stream; - assertThat(condition).as("Converted object must be a stream").isTrue(); + assertThat(result).as("Converted object must be a stream").isInstanceOf(Stream.class); @SuppressWarnings("unchecked") Stream content = (Stream) result; - StringBuilder sb = new StringBuilder(); - content.forEach(sb::append); - assertThat(sb.toString()).isEqualTo("123"); + assertThat(content).containsExactly("1", "2", "3"); } @Test