From 95ab1a01edb7f87559f08108ff7a1f12c90efb7a Mon Sep 17 00:00:00 2001 From: Pascal Schumacher Date: Wed, 16 May 2018 23:21:01 +0200 Subject: [PATCH] Use internal instead of external iteration. --- .../org/assertj/core/api/AbstractAssert.java | 12 ++--- .../assertj/core/api/AbstractDateAssert.java | 14 ++--- .../core/api/AbstractIterableAssert.java | 16 ++---- .../core/api/AbstractObjectArrayAssert.java | 9 +--- .../core/api/AbstractSoftAssertions.java | 4 +- .../core/api/AtomicReferenceArrayAssert.java | 10 ++-- .../org/assertj/core/api/ErrorCollector.java | 14 +++-- .../assertj/core/api/SoftAssertionError.java | 2 +- .../org/assertj/core/api/SoftAssertions.java | 9 ++-- .../org/assertj/core/api/filter/Filters.java | 51 +++++++------------ .../org/assertj/core/condition/AllOf.java | 4 +- .../org/assertj/core/condition/AnyOf.java | 4 +- .../java/org/assertj/core/condition/Join.java | 6 +-- .../error/AbstractShouldHaveTextContent.java | 7 ++- ...ualByComparingFieldByFieldRecursively.java | 10 ++-- .../assertj/core/error/ShouldHaveContent.java | 4 +- .../core/error/ShouldHaveSameContent.java | 6 +-- .../extractor/ByNameMultipleExtractor.java | 18 ++----- .../groups/FieldsOrPropertiesExtractor.java | 11 ++-- .../org/assertj/core/internal/Classes.java | 7 +-- .../core/internal/FieldByFieldComparator.java | 9 ++-- .../org/assertj/core/internal/Iterables.java | 22 +++----- .../java/org/assertj/core/internal/Lists.java | 8 +-- .../org/assertj/core/internal/Objects.java | 13 +++-- .../internal/StandardComparisonStrategy.java | 8 +-- .../org/assertj/core/internal/Strings.java | 35 +++++-------- .../java/org/assertj/core/util/Arrays.java | 10 ++-- .../org/assertj/core/util/IterableUtil.java | 8 ++- .../java/org/assertj/core/util/Lists.java | 8 ++- src/main/java/org/assertj/core/util/Sets.java | 8 ++- .../java/org/assertj/core/util/Strings.java | 18 ++----- .../core/util/introspection/FieldSupport.java | 13 +++-- .../util/introspection/PropertySupport.java | 13 +++-- .../ShouldHaveSameContent_create_Test.java | 4 +- 34 files changed, 137 insertions(+), 258 deletions(-) diff --git a/src/main/java/org/assertj/core/api/AbstractAssert.java b/src/main/java/org/assertj/core/api/AbstractAssert.java index 42b64a646b..c8b6d10fea 100644 --- a/src/main/java/org/assertj/core/api/AbstractAssert.java +++ b/src/main/java/org/assertj/core/api/AbstractAssert.java @@ -14,9 +14,9 @@ import static java.util.Objects.requireNonNull; import static org.assertj.core.error.ShouldMatch.shouldMatch; -import static org.assertj.core.util.Lists.newArrayList; import static org.assertj.core.util.Strings.formatIfArgs; +import java.util.Arrays; import java.util.Comparator; import java.util.List; import java.util.function.Consumer; @@ -151,13 +151,9 @@ private void removeCustomAssertRelatedElementsFromStackTraceIfNeeded(AssertionEr if (!Failures.instance().isRemoveAssertJRelatedElementsFromStackTrace()) return; if (isAssertjAssertClass()) return; - List filtered = newArrayList(assertionError.getStackTrace()); - for (StackTraceElement element : assertionError.getStackTrace()) { - if (isElementOfCustomAssert(element)) { - filtered.remove(element); - } - } - StackTraceElement[] newStackTrace = filtered.toArray(new StackTraceElement[filtered.size()]); + StackTraceElement[] newStackTrace = Arrays.stream(assertionError.getStackTrace()) + .filter(element -> !isElementOfCustomAssert(element)) + .toArray(StackTraceElement[]::new); assertionError.setStackTrace(newStackTrace); } diff --git a/src/main/java/org/assertj/core/api/AbstractDateAssert.java b/src/main/java/org/assertj/core/api/AbstractDateAssert.java index d8ecfcaae3..eea308188e 100644 --- a/src/main/java/org/assertj/core/api/AbstractDateAssert.java +++ b/src/main/java/org/assertj/core/api/AbstractDateAssert.java @@ -16,6 +16,7 @@ import static java.util.concurrent.TimeUnit.MILLISECONDS; import static java.util.concurrent.TimeUnit.MINUTES; import static java.util.concurrent.TimeUnit.SECONDS; +import static java.util.stream.Collectors.toList; import static org.assertj.core.util.DateUtil.*; import static org.assertj.core.util.Lists.newArrayList; import static org.assertj.core.util.Preconditions.checkNotNull; @@ -24,7 +25,6 @@ import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; -import java.util.ArrayList; import java.util.Calendar; import java.util.Collection; import java.util.Comparator; @@ -524,11 +524,7 @@ public SELF isIn(String... datesAsString) { * @throws AssertionError if one of the given date as String could not be converted to a Date. */ public SELF isInWithStringDateCollection(Collection datesAsString) { - Collection dates = new ArrayList<>(datesAsString.size()); - for (String dateAsString : datesAsString) { - dates.add(parse(dateAsString)); - } - return isIn(dates); + return isIn(datesAsString.stream().map(this::parse).collect(toList())); } /** @@ -612,11 +608,7 @@ public SELF isNotIn(String... datesAsString) { * @throws AssertionError if one of the given date as String could not be converted to a Date. */ public SELF isNotInWithStringDateCollection(Collection datesAsString) { - Collection dates = new ArrayList<>(datesAsString.size()); - for (String dateAsString : datesAsString) { - dates.add(parse(dateAsString)); - } - return isNotIn(dates); + return isNotIn(datesAsString.stream().map(this::parse).collect(toList())); } /** diff --git a/src/main/java/org/assertj/core/api/AbstractIterableAssert.java b/src/main/java/org/assertj/core/api/AbstractIterableAssert.java index 8117612ae6..062c1e868b 100644 --- a/src/main/java/org/assertj/core/api/AbstractIterableAssert.java +++ b/src/main/java/org/assertj/core/api/AbstractIterableAssert.java @@ -1297,13 +1297,7 @@ public AbstractListAssert, } private AbstractListAssert, V, ObjectAssert> doFlatExtracting(Extractor> extractor) { - List result = newArrayList(); - final List> extractedValues = FieldsOrPropertiesExtractor.extract(actual, extractor); - - for (Collection iterable : extractedValues) { - result.addAll(iterable); - } - + List result = FieldsOrPropertiesExtractor.extract(actual, extractor).stream().flatMap(Collection::stream).collect(toList()); return newListAssertInstance(result).withAssertionState(myself); } @@ -1522,10 +1516,10 @@ public AbstractListAssert, Tuple, ObjectAssert> */ @CheckReturnValue public AbstractListAssert, Object, ObjectAssert> flatExtracting(String... fieldOrPropertyNames) { - List extractedValues = newArrayList(); - for (Tuple tuple : FieldsOrPropertiesExtractor.extract(actual, Extractors.byName(fieldOrPropertyNames))) { - extractedValues.addAll(tuple.toList()); - } + List extractedValues = FieldsOrPropertiesExtractor.extract(actual, Extractors.byName(fieldOrPropertyNames)) + .stream() + .flatMap(tuple -> tuple.toList().stream()) + .collect(toList()); return newListAssertInstance(extractedValues).withAssertionState(myself); } diff --git a/src/main/java/org/assertj/core/api/AbstractObjectArrayAssert.java b/src/main/java/org/assertj/core/api/AbstractObjectArrayAssert.java index 06552b676b..ad56c85c31 100644 --- a/src/main/java/org/assertj/core/api/AbstractObjectArrayAssert.java +++ b/src/main/java/org/assertj/core/api/AbstractObjectArrayAssert.java @@ -2202,13 +2202,8 @@ public , EXCEPTION extends Exception> AbstractListAss } private > AbstractListAssert, V, ObjectAssert> doFlatExtracting(Extractor extractor) { - final List extractedValues = FieldsOrPropertiesExtractor.extract(Arrays.asList(actual), extractor); - - final List result = newArrayList(); - for (C e : extractedValues) { - result.addAll(e); - } - + List result = FieldsOrPropertiesExtractor.extract(Arrays.asList(actual), extractor).stream() + .flatMap(Collection::stream).collect(toList()); return newListAssertInstance(result).withAssertionState(myself); } diff --git a/src/main/java/org/assertj/core/api/AbstractSoftAssertions.java b/src/main/java/org/assertj/core/api/AbstractSoftAssertions.java index 4b3bdd4bf5..e1594cf0a4 100644 --- a/src/main/java/org/assertj/core/api/AbstractSoftAssertions.java +++ b/src/main/java/org/assertj/core/api/AbstractSoftAssertions.java @@ -130,9 +130,7 @@ public boolean wasSuccess() { } private List addLineNumberToErrorMessages(List errors) { - for (Throwable error : errors) { - addLineNumberToErrorMessage(error); - } + errors.forEach(this::addLineNumberToErrorMessage); return errors; } diff --git a/src/main/java/org/assertj/core/api/AtomicReferenceArrayAssert.java b/src/main/java/org/assertj/core/api/AtomicReferenceArrayAssert.java index 73567b5380..09fbd683b9 100644 --- a/src/main/java/org/assertj/core/api/AtomicReferenceArrayAssert.java +++ b/src/main/java/org/assertj/core/api/AtomicReferenceArrayAssert.java @@ -12,6 +12,7 @@ */ package org.assertj.core.api; +import static java.util.stream.Collectors.toList; import static org.assertj.core.api.filter.Filters.filter; import static org.assertj.core.description.Description.mostRelevantDescription; import static org.assertj.core.extractor.Extractors.byName; @@ -2235,13 +2236,8 @@ public , EXCEPTION extends Exception> ObjectArrayAsse } private > ObjectArrayAssert doFlatExtracting(Extractor extractor) { - final List extractedValues = FieldsOrPropertiesExtractor.extract(Arrays.asList(array), extractor); - - final List result = newArrayList(); - for (C e : extractedValues) { - result.addAll(e); - } - + List result = FieldsOrPropertiesExtractor.extract(Arrays.asList(array), extractor).stream() + .flatMap(Collection::stream).collect(toList()); return new ObjectArrayAssert<>(IterableUtil.toArray(result)); } diff --git a/src/main/java/org/assertj/core/api/ErrorCollector.java b/src/main/java/org/assertj/core/api/ErrorCollector.java index 1ac2427e4a..caccc1ee91 100644 --- a/src/main/java/org/assertj/core/api/ErrorCollector.java +++ b/src/main/java/org/assertj/core/api/ErrorCollector.java @@ -14,6 +14,7 @@ import java.lang.reflect.Method; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.concurrent.Callable; @@ -94,14 +95,11 @@ private boolean isNestedErrorCollectorProxyCall() { return countErrorCollectorProxyCalls() > 1; } - private static int countErrorCollectorProxyCalls() { - int nbCalls = 0; - for (StackTraceElement stackTraceElement : Thread.currentThread().getStackTrace()) { - if (CLASS_NAME.equals(stackTraceElement.getClassName()) - && stackTraceElement.getMethodName().startsWith(INTERCEPT_METHOD_NAME)) - nbCalls++; - } - return nbCalls; + private static long countErrorCollectorProxyCalls() { + return Arrays.stream(Thread.currentThread().getStackTrace()) + .filter(stackTraceElement -> CLASS_NAME.equals(stackTraceElement.getClassName()) + && stackTraceElement.getMethodName().startsWith(INTERCEPT_METHOD_NAME)) + .count(); } private static class LastResult { diff --git a/src/main/java/org/assertj/core/api/SoftAssertionError.java b/src/main/java/org/assertj/core/api/SoftAssertionError.java index 9a687bda8e..0766893a6a 100644 --- a/src/main/java/org/assertj/core/api/SoftAssertionError.java +++ b/src/main/java/org/assertj/core/api/SoftAssertionError.java @@ -52,7 +52,7 @@ private static String createMessage(List errors) { for (int i = 0; i < size; i++) { msg.append(i + 1).append(") ").append(errors.get(i)).append("%n"); } - return formatter.format(null,null,msg.toString()); + return formatter.format(null, null, msg.toString()); } /** diff --git a/src/main/java/org/assertj/core/api/SoftAssertions.java b/src/main/java/org/assertj/core/api/SoftAssertions.java index f52e246a29..a11ded6377 100644 --- a/src/main/java/org/assertj/core/api/SoftAssertions.java +++ b/src/main/java/org/assertj/core/api/SoftAssertions.java @@ -13,6 +13,7 @@ package org.assertj.core.api; import static java.lang.String.format; +import static java.util.stream.Collectors.joining; import static org.assertj.core.groups.FieldsOrPropertiesExtractor.extract; import java.util.Arrays; @@ -131,11 +132,9 @@ public class SoftAssertions extends AbstractStandardSoftAssertions { return throwable.getMessage(); } // error has a cause, display the cause message and the first stack trace elements. - StackTraceElement[] stackTraceFirstElements = Arrays.copyOf(cause.getStackTrace(), 5); - String stackTraceDescription = ""; - for (StackTraceElement stackTraceElement : stackTraceFirstElements) { - stackTraceDescription += format("\tat %s%n", stackTraceElement); - } + String stackTraceDescription = Arrays.stream(cause.getStackTrace()).limit(5) + .map(stackTraceElement -> format("\tat %s%n", stackTraceElement)) + .collect(joining()); return format("%s%n" + "cause message: %s%n" + "cause first five stack trace elements:%n" + diff --git a/src/main/java/org/assertj/core/api/filter/Filters.java b/src/main/java/org/assertj/core/api/filter/Filters.java index a693aa7c9c..da1d504353 100644 --- a/src/main/java/org/assertj/core/api/filter/Filters.java +++ b/src/main/java/org/assertj/core/api/filter/Filters.java @@ -12,12 +12,12 @@ */ package org.assertj.core.api.filter; +import static java.util.stream.Collectors.toList; import static org.assertj.core.util.Lists.newArrayList; import static org.assertj.core.util.Objects.areEqual; import static org.assertj.core.util.Preconditions.checkArgument; import static org.assertj.core.util.Preconditions.checkNotNull; -import java.util.ArrayList; import java.util.List; import org.assertj.core.api.Assertions; @@ -196,13 +196,7 @@ public Filters having(Condition condition) { } private Filters applyFilterCondition(Condition condition) { - List newFilteredIterable = new ArrayList<>(); - for (E element : filteredIterable) { - if (condition.matches(element)) { - newFilteredIterable.add(element); - } - } - this.filteredIterable = newFilteredIterable; + this.filteredIterable = filteredIterable.stream().filter(condition::matches).collect(toList()); return this; } @@ -265,8 +259,7 @@ public Filters and(String propertyOrFieldName) { /** * Filters the underlying iterable to keep object with property (specified by {@link #with(String)}) equals to - * given - * value. + * given value. *

* Typical usage : *

 filter(employees).with("name").equalsTo("Luke").get();
@@ -277,12 +270,10 @@ public Filters and(String propertyOrFieldName) { */ public Filters equalsTo(Object propertyValue) { checkPropertyNameToFilterOnIsNotNull(); - List newFilteredIterable = new ArrayList<>(); - for (E element : filteredIterable) { + this.filteredIterable = filteredIterable.stream().filter(element -> { Object propertyValueOfCurrentElement = propertyOrFieldSupport.getValueOf(propertyOrFieldNameToFilterOn, element); - if (areEqual(propertyValueOfCurrentElement, propertyValue)) newFilteredIterable.add(element); - } - this.filteredIterable = newFilteredIterable; + return areEqual(propertyValueOfCurrentElement, propertyValue); + }).collect(toList()); return this; } @@ -300,12 +291,10 @@ public Filters equalsTo(Object propertyValue) { */ public Filters notEqualsTo(Object propertyValue) { checkPropertyNameToFilterOnIsNotNull(); - List newFilteredIterable = new ArrayList<>(); - for (E element : filteredIterable) { + this.filteredIterable = filteredIterable.stream().filter(element -> { Object propertyValueOfCurrentElement = propertyOrFieldSupport.getValueOf(propertyOrFieldNameToFilterOn, element); - if (!areEqual(propertyValueOfCurrentElement, propertyValue)) newFilteredIterable.add(element); - } - this.filteredIterable = newFilteredIterable; + return !areEqual(propertyValueOfCurrentElement, propertyValue); + }).collect(toList()); return this; } @@ -316,8 +305,7 @@ private void checkPropertyNameToFilterOnIsNotNull() { /** * Filters the underlying iterable to keep object with property (specified by {@link #with(String)}) equals to - * one of the - * given values. + * one of the given values. *

* Typical usage : *

filter(players).with("team").in("Bulls", "Lakers").get();
@@ -328,19 +316,16 @@ private void checkPropertyNameToFilterOnIsNotNull() { */ public Filters in(Object... propertyValues) { checkPropertyNameToFilterOnIsNotNull(); - List newFilteredIterable = new ArrayList<>(); - for (E element : filteredIterable) { + this.filteredIterable = filteredIterable.stream().filter(element -> { Object propertyValueOfCurrentElement = propertyOrFieldSupport.getValueOf(propertyOrFieldNameToFilterOn, element); - if (isItemInArray(propertyValueOfCurrentElement, propertyValues)) newFilteredIterable.add(element); - } - this.filteredIterable = newFilteredIterable; + return isItemInArray(propertyValueOfCurrentElement, propertyValues); + }).collect(toList()); return this; } /** * Filters the underlying iterable to keep object with property (specified by {@link #with(String)}) not in the - * given - * values. + * given values. *

* Typical usage : *

 filter(players).with("team").notIn("Heat", "Lakers").get();
@@ -351,12 +336,10 @@ public Filters in(Object... propertyValues) { */ public Filters notIn(Object... propertyValues) { checkPropertyNameToFilterOnIsNotNull(); - List newFilteredIterable = new ArrayList<>(); - for (E element : filteredIterable) { + this.filteredIterable = filteredIterable.stream().filter(element -> { Object propertyValueOfCurrentElement = propertyOrFieldSupport.getValueOf(propertyOrFieldNameToFilterOn, element); - if (!isItemInArray(propertyValueOfCurrentElement, propertyValues)) newFilteredIterable.add(element); - } - this.filteredIterable = newFilteredIterable; + return !isItemInArray(propertyValueOfCurrentElement, propertyValues); + }).collect(toList()); return this; } diff --git a/src/main/java/org/assertj/core/condition/AllOf.java b/src/main/java/org/assertj/core/condition/AllOf.java index 8456609d41..ea34253ca2 100644 --- a/src/main/java/org/assertj/core/condition/AllOf.java +++ b/src/main/java/org/assertj/core/condition/AllOf.java @@ -60,9 +60,7 @@ private AllOf(Iterable> conditions) { /** {@inheritDoc} */ @Override public boolean matches(T value) { - for (Condition condition : conditions) - if (!condition.matches(value)) return false; - return true; + return conditions.stream().allMatch(condition -> condition.matches(value)); } @Override diff --git a/src/main/java/org/assertj/core/condition/AnyOf.java b/src/main/java/org/assertj/core/condition/AnyOf.java index bba244e45f..c1c925efd4 100644 --- a/src/main/java/org/assertj/core/condition/AnyOf.java +++ b/src/main/java/org/assertj/core/condition/AnyOf.java @@ -61,9 +61,7 @@ private AnyOf(Iterable> conditions) { /** {@inheritDoc} */ @Override public boolean matches(T value) { - for (Condition condition : conditions) - if (condition.matches(value)) return true; - return false; + return conditions.stream().anyMatch(condition -> condition.matches(value)); } @Override diff --git a/src/main/java/org/assertj/core/condition/Join.java b/src/main/java/org/assertj/core/condition/Join.java index 3eaf053bb3..b4fd8acf7b 100644 --- a/src/main/java/org/assertj/core/condition/Join.java +++ b/src/main/java/org/assertj/core/condition/Join.java @@ -13,7 +13,7 @@ package org.assertj.core.condition; import static java.util.Collections.unmodifiableCollection; - +import static java.util.stream.Collectors.toList; import static org.assertj.core.util.Preconditions.checkNotNull; import java.util.*; @@ -43,9 +43,7 @@ public abstract class Join extends Condition { @SafeVarargs protected Join(Condition... conditions) { if (conditions == null) throw conditionsIsNull(); - this.conditions = new ArrayList<>(); - for (Condition condition : conditions) - this.conditions.add(notNull(condition)); + this.conditions = Arrays.stream(conditions).map(Join::notNull).collect(toList()); } /** diff --git a/src/main/java/org/assertj/core/error/AbstractShouldHaveTextContent.java b/src/main/java/org/assertj/core/error/AbstractShouldHaveTextContent.java index da7979b3b5..0e3c19c769 100644 --- a/src/main/java/org/assertj/core/error/AbstractShouldHaveTextContent.java +++ b/src/main/java/org/assertj/core/error/AbstractShouldHaveTextContent.java @@ -12,6 +12,8 @@ */ package org.assertj.core.error; +import static java.util.stream.Collectors.joining; + import java.util.List; import org.assertj.core.description.Description; @@ -49,10 +51,7 @@ public String create(Description d, Representation representation) { } protected static String diffsAsString(List> diffsList) { - StringBuilder stringBuilder = new StringBuilder(); - for (Delta diff : diffsList) - stringBuilder.append(System.lineSeparator()).append(diff); - return stringBuilder.toString(); + return diffsList.stream().map(Delta::toString).collect(joining(System.lineSeparator())); } } \ No newline at end of file diff --git a/src/main/java/org/assertj/core/error/ShouldBeEqualByComparingFieldByFieldRecursively.java b/src/main/java/org/assertj/core/error/ShouldBeEqualByComparingFieldByFieldRecursively.java index f87ea643f6..5baa055401 100644 --- a/src/main/java/org/assertj/core/error/ShouldBeEqualByComparingFieldByFieldRecursively.java +++ b/src/main/java/org/assertj/core/error/ShouldBeEqualByComparingFieldByFieldRecursively.java @@ -13,10 +13,10 @@ package org.assertj.core.error; import static java.lang.String.format; +import static java.util.stream.Collectors.toList; import static org.assertj.core.util.Strings.escapePercent; import static org.assertj.core.util.Strings.join; -import java.util.ArrayList; import java.util.List; import org.assertj.core.internal.DeepDifference.Difference; @@ -28,10 +28,10 @@ public class ShouldBeEqualByComparingFieldByFieldRecursively extends BasicErrorM public static ErrorMessageFactory shouldBeEqualByComparingFieldByFieldRecursive(Object actual, Object other, List differences, Representation representation) { - List descriptionOfDifferences = new ArrayList<>(differences.size()); - for (Difference difference : differences) { - descriptionOfDifferences.add(describeDifference(difference, representation)); - } + List descriptionOfDifferences = differences.stream() + .map(difference -> describeDifference(difference, + representation)) + .collect(toList()); return new ShouldBeEqualByComparingFieldByFieldRecursively("%n" + "Expecting:%n" + " <%s>%n" + diff --git a/src/main/java/org/assertj/core/error/ShouldHaveContent.java b/src/main/java/org/assertj/core/error/ShouldHaveContent.java index 37ccd3cb68..3ee8507661 100644 --- a/src/main/java/org/assertj/core/error/ShouldHaveContent.java +++ b/src/main/java/org/assertj/core/error/ShouldHaveContent.java @@ -50,12 +50,12 @@ public static ErrorMessageFactory shouldHaveContent(Path actual, Charset charset } private ShouldHaveContent(File actual, Charset charset, String diffs) { - super("%nFile:%n <%s>%nread with charset <%s> does not have the expected content:%n", actual, charset); + super("%nFile:%n <%s>%nread with charset <%s> does not have the expected content:%n%n", actual, charset); this.diffs = diffs; } private ShouldHaveContent(Path actual, Charset charset, String diffs) { - super("%nPath:%n <%s>%nread with charset <%s> does not have the expected content:%n", actual, charset); + super("%nPath:%n <%s>%nread with charset <%s> does not have the expected content:%n%n", actual, charset); this.diffs = diffs; } } diff --git a/src/main/java/org/assertj/core/error/ShouldHaveSameContent.java b/src/main/java/org/assertj/core/error/ShouldHaveSameContent.java index 957cf5a1b9..dad2e10d0d 100644 --- a/src/main/java/org/assertj/core/error/ShouldHaveSameContent.java +++ b/src/main/java/org/assertj/core/error/ShouldHaveSameContent.java @@ -63,17 +63,17 @@ public static ErrorMessageFactory shouldHaveSameContent(Path actual, Path expect } private ShouldHaveSameContent(File actual, File expected, String diffs) { - super("%nFile:%n <%s>%nand file:%n <%s>%ndo not have same content:%n", actual, expected); + super("%nFile:%n <%s>%nand file:%n <%s>%ndo not have same content:%n%n", actual, expected); this.diffs = diffs; } private ShouldHaveSameContent(InputStream actual, InputStream expected, String diffs) { - super("%nInputStreams do not have same content:%n", actual, expected); + super("%nInputStreams do not have same content:%n%n", actual, expected); this.diffs = diffs; } private ShouldHaveSameContent(Path actual, Path expected, String diffs) { - super("%nPath:%n <%s>%nand path:%n <%s>%ndo not have same content:%n", actual, expected); + super("%nPath:%n <%s>%nand path:%n <%s>%ndo not have same content:%n%n", actual, expected); this.diffs = diffs; } } \ No newline at end of file diff --git a/src/main/java/org/assertj/core/extractor/ByNameMultipleExtractor.java b/src/main/java/org/assertj/core/extractor/ByNameMultipleExtractor.java index 646bd2863a..13291e47f2 100644 --- a/src/main/java/org/assertj/core/extractor/ByNameMultipleExtractor.java +++ b/src/main/java/org/assertj/core/extractor/ByNameMultipleExtractor.java @@ -12,9 +12,10 @@ */ package org.assertj.core.extractor; +import static java.util.stream.Collectors.toList; import static org.assertj.core.util.Preconditions.checkArgument; -import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import org.assertj.core.api.iterable.Extractor; @@ -41,22 +42,11 @@ public Tuple extract(T input) { } private List extractValues(T input, List> singleExtractors) { - List values = new ArrayList<>(); - - for (Extractor extractor : singleExtractors) { - values.add(extractor.extract(input)); - } - return values; + return singleExtractors.stream().map(extractor -> extractor.extract(input)).collect(toList()); } private List> buildExtractors() { - List> result = new ArrayList<>(); - - for (String name : fieldsOrProperties) { - result.add(new ByNameSingleExtractor(name)); - } - - return result; + return Arrays.stream(fieldsOrProperties).map(ByNameSingleExtractor::new).collect(toList()); } } diff --git a/src/main/java/org/assertj/core/groups/FieldsOrPropertiesExtractor.java b/src/main/java/org/assertj/core/groups/FieldsOrPropertiesExtractor.java index 5c07246e2a..3a3c032ac7 100644 --- a/src/main/java/org/assertj/core/groups/FieldsOrPropertiesExtractor.java +++ b/src/main/java/org/assertj/core/groups/FieldsOrPropertiesExtractor.java @@ -12,6 +12,7 @@ */ package org.assertj.core.groups; +import static java.util.stream.Collectors.toList; import static org.assertj.core.util.IterableUtil.toArray; import static org.assertj.core.util.Lists.newArrayList; @@ -20,6 +21,7 @@ import org.assertj.core.api.AbstractIterableAssert; import org.assertj.core.api.AbstractObjectArrayAssert; import org.assertj.core.api.iterable.Extractor; +import org.assertj.core.util.Streams; /** * Understands how to retrieve fields or values from a collection/array of objects. @@ -59,14 +61,7 @@ public static T[] extract(F[] objects, Extractor extractor) */ public static List extract(Iterable objects, Extractor extractor) { checkObjectToExtractFromIsNotNull(objects); - List result = newArrayList(); - - for (F object : objects) { - final T newValue = extractor.extract(object); - result.add(newValue); - } - - return result; + return Streams.stream(objects).map(extractor::extract).collect(toList()); } private static void checkObjectToExtractFromIsNotNull(Object object) { diff --git a/src/main/java/org/assertj/core/internal/Classes.java b/src/main/java/org/assertj/core/internal/Classes.java index 3dae540173..90e538c792 100644 --- a/src/main/java/org/assertj/core/internal/Classes.java +++ b/src/main/java/org/assertj/core/internal/Classes.java @@ -12,6 +12,7 @@ */ package org.assertj.core.internal; +import static java.util.stream.Collectors.toCollection; import static org.assertj.core.error.ClassModifierShouldBe.shouldBeFinal; import static org.assertj.core.error.ClassModifierShouldBe.shouldBeProtected; import static org.assertj.core.error.ClassModifierShouldBe.shouldBePublic; @@ -351,11 +352,7 @@ public void assertHasOnlyDeclaredFields(AssertionInfo info, Class actual, Str } private static Set fieldsToName(Set fields) { - Set fieldsName = new LinkedHashSet<>(); - for (Field field : fields) { - fieldsName.add(field.getName()); - } - return fieldsName; + return fields.stream().map(Field::getName).collect(toCollection(LinkedHashSet::new)); } /** diff --git a/src/main/java/org/assertj/core/internal/FieldByFieldComparator.java b/src/main/java/org/assertj/core/internal/FieldByFieldComparator.java index 12f455ef97..e10383b17d 100644 --- a/src/main/java/org/assertj/core/internal/FieldByFieldComparator.java +++ b/src/main/java/org/assertj/core/internal/FieldByFieldComparator.java @@ -13,11 +13,11 @@ package org.assertj.core.internal; import static java.lang.String.format; +import static java.util.stream.Collectors.toList; import static org.assertj.core.internal.ComparatorBasedComparisonStrategy.NOT_EQUAL; import static org.assertj.core.internal.TypeComparators.defaultTypeComparators; import static org.assertj.core.util.Strings.join; -import java.util.ArrayList; import java.util.Comparator; import java.util.List; import java.util.Map; @@ -89,10 +89,9 @@ protected String describeFieldComparatorsByName() { if (comparatorsByPropertyOrField.isEmpty()) { return ""; } - List fieldComparatorsDescription = new ArrayList<>(); - for (Entry> registeredComparator : this.comparatorsByPropertyOrField.entrySet()) { - fieldComparatorsDescription.add(formatFieldComparator(registeredComparator)); - } + List fieldComparatorsDescription = this.comparatorsByPropertyOrField.entrySet().stream() + .map(FieldByFieldComparator::formatFieldComparator) + .collect(toList()); return format("- for elements fields (by name): {%s}", join(fieldComparatorsDescription).with(", ")); } diff --git a/src/main/java/org/assertj/core/internal/Iterables.java b/src/main/java/org/assertj/core/internal/Iterables.java index 389815cd5f..0578cbc4d7 100644 --- a/src/main/java/org/assertj/core/internal/Iterables.java +++ b/src/main/java/org/assertj/core/internal/Iterables.java @@ -13,7 +13,9 @@ package org.assertj.core.internal; import static java.util.Arrays.asList; +import static java.util.Arrays.stream; import static java.util.Objects.requireNonNull; +import static java.util.stream.Collectors.toCollection; import static java.util.stream.Collectors.toList; import static java.util.stream.StreamSupport.stream; import static org.assertj.core.error.AnyElementShouldMatch.anyElementShouldMatch; @@ -75,7 +77,6 @@ import static org.assertj.core.util.Lists.newArrayList; import static org.assertj.core.util.Streams.stream; -import java.util.ArrayList; import java.util.Comparator; import java.util.Iterator; import java.util.LinkedHashSet; @@ -92,6 +93,7 @@ import org.assertj.core.api.Condition; import org.assertj.core.error.ZippedElementsShouldSatisfy.ZipSatisfyError; import org.assertj.core.presentation.PredicateDescription; +import org.assertj.core.util.Streams; import org.assertj.core.util.VisibleForTesting; /** @@ -246,12 +248,7 @@ public void assertContains(AssertionInfo info, Iterable actual, Object[] valu } private void assertIterableContainsGivenValues(Iterable actual, Object[] values, AssertionInfo info) { - Set notFound = new LinkedHashSet<>(); - for (Object value : values) { - if (!iterableContains(actual, value)) { - notFound.add(value); - } - } + Set notFound = stream(values).filter(value -> !iterableContains(actual, value)).collect(toCollection(LinkedHashSet::new)); if (notFound.isEmpty()) return; throw failures.failure(info, shouldContain(actual, values, notFound, comparisonStrategy)); @@ -358,10 +355,7 @@ public void assertContainsOnlyNulls(AssertionInfo info, Iterable actual) { // empty => no null elements => failure if (sizeOf(actual) == 0) throw failures.failure(info, shouldContainOnlyNulls(actual)); // look for any non null elements - List nonNullElements = new ArrayList<>(); - for (Object element : actual) { - if (element != null) nonNullElements.add(element); - } + List nonNullElements = Streams.stream(actual).filter(java.util.Objects::nonNull).collect(toList()); if (nonNullElements.size() > 0) throw failures.failure(info, shouldContainOnlyNulls(actual, nonNullElements)); } @@ -492,10 +486,8 @@ public void assertDoesNotContainSubsequence(AssertionInfo info, Iterable actu public void assertIsSubsetOf(AssertionInfo info, Iterable actual, Iterable values) { assertNotNull(info, actual); checkIterableIsNotNull(info, values); - List extra = newArrayList(); - for (Object actualElement : actual) { - if (!iterableContains(values, actualElement)) extra.add(actualElement); - } + List extra = Streams.stream(actual).filter(actualElement -> !iterableContains(values, actualElement)) + .collect(toList()); if (extra.size() > 0) throw failures.failure(info, shouldBeSubsetOf(actual, values, extra, comparisonStrategy)); } diff --git a/src/main/java/org/assertj/core/internal/Lists.java b/src/main/java/org/assertj/core/internal/Lists.java index 516abb13b2..a8cb0817da 100644 --- a/src/main/java/org/assertj/core/internal/Lists.java +++ b/src/main/java/org/assertj/core/internal/Lists.java @@ -12,6 +12,7 @@ */ package org.assertj.core.internal; +import static java.util.stream.Collectors.toList; import static org.assertj.core.error.ShouldBeAtIndex.shouldBeAtIndex; import static org.assertj.core.error.ShouldBeSorted.shouldBeSorted; import static org.assertj.core.error.ShouldBeSorted.shouldBeSortedAccordingToGivenComparator; @@ -23,7 +24,6 @@ import static org.assertj.core.internal.CommonValidations.checkIndexValueIsValid; import static org.assertj.core.util.Preconditions.checkNotNull; -import java.util.ArrayList; import java.util.Comparator; import java.util.List; import java.util.function.Consumer; @@ -257,11 +257,7 @@ private boolean conditionIsMetAtIndex(AssertionInfo info, List actual, Co @SuppressWarnings("unchecked") private static List> listOfComparableElements(List collection) { - List> listOfComparableElements = new ArrayList<>(); - for (Object object : collection) { - listOfComparableElements.add((Comparable) object); - } - return listOfComparableElements; + return collection.stream().map(object -> (Comparable) object).collect(toList()); } private void assertNotNull(AssertionInfo info, List actual) { diff --git a/src/main/java/org/assertj/core/internal/Objects.java b/src/main/java/org/assertj/core/internal/Objects.java index 504c846ec6..7481c9e9a4 100644 --- a/src/main/java/org/assertj/core/internal/Objects.java +++ b/src/main/java/org/assertj/core/internal/Objects.java @@ -14,6 +14,8 @@ import static java.lang.String.format; import static java.util.Arrays.asList; +import static java.util.Arrays.stream; +import static java.util.stream.Collectors.toCollection; import static org.assertj.core.error.ShouldBeEqual.shouldBeEqual; import static org.assertj.core.error.ShouldBeEqualByComparingFieldByFieldRecursively.shouldBeEqualByComparingFieldByFieldRecursive; import static org.assertj.core.error.ShouldBeEqualByComparingOnlyGivenFields.shouldBeEqualComparingOnlyGivenFields; @@ -50,7 +52,7 @@ import java.lang.reflect.Modifier; import java.util.ArrayList; import java.util.Comparator; -import java.util.Iterator; +import java.util.LinkedHashSet; import java.util.LinkedList; import java.util.List; import java.util.Map; @@ -776,12 +778,9 @@ public static Set getDeclaredFieldsIncludingInherited(Class clazz) { * @return the declared fields of given class excluding any synthetic fields. */ private static Set getDeclaredFieldsIgnoringSyntheticAndStatic(Class clazz) { - final Set fields = newLinkedHashSet(clazz.getDeclaredFields()); - for (Iterator iterator = fields.iterator(); iterator.hasNext();) { - final Field next = iterator.next(); - if (next.isSynthetic() || Modifier.isStatic(next.getModifiers())) iterator.remove(); - } - return fields; + return stream(clazz.getDeclaredFields()).filter(field -> !(field.isSynthetic() + || Modifier.isStatic(field.getModifiers()))) + .collect(toCollection(LinkedHashSet::new)); } public boolean areEqualToIgnoringGivenFields(Object actual, Object other, diff --git a/src/main/java/org/assertj/core/internal/StandardComparisonStrategy.java b/src/main/java/org/assertj/core/internal/StandardComparisonStrategy.java index 26dfd11099..af7b33966a 100644 --- a/src/main/java/org/assertj/core/internal/StandardComparisonStrategy.java +++ b/src/main/java/org/assertj/core/internal/StandardComparisonStrategy.java @@ -19,6 +19,7 @@ import java.util.TreeSet; import org.assertj.core.util.Objects; +import org.assertj.core.util.Streams; /** * Implements {@link ComparisonStrategy} contract with a comparison strategy based on @@ -90,12 +91,7 @@ public boolean iterableContains(Iterable iterable, Object value) { if (iterable == null) { return false; } - for (Object next : iterable) { - if (areEqual(next, value)) { - return true; - } - } - return false; + return Streams.stream(iterable).anyMatch(object -> areEqual(object, value)); } /** diff --git a/src/main/java/org/assertj/core/internal/Strings.java b/src/main/java/org/assertj/core/internal/Strings.java index 88132ddf15..9e863daa3e 100644 --- a/src/main/java/org/assertj/core/internal/Strings.java +++ b/src/main/java/org/assertj/core/internal/Strings.java @@ -15,6 +15,9 @@ import static java.lang.Character.isDigit; import static java.lang.Character.isWhitespace; import static java.lang.String.format; +import static java.util.Arrays.stream; +import static java.util.stream.Collectors.joining; +import static java.util.stream.Collectors.toCollection; import static org.assertj.core.error.ShouldBeBlank.shouldBeBlank; import static org.assertj.core.error.ShouldBeEmpty.shouldBeEmpty; import static org.assertj.core.error.ShouldBeEqual.shouldBeEqual; @@ -336,12 +339,8 @@ public void assertHasSameSizeAs(AssertionInfo info, CharSequence actual, CharSeq */ public void assertContains(AssertionInfo info, CharSequence actual, CharSequence... values) { doCommonCheckForCharSequence(info, actual, values); - Set notFound = new LinkedHashSet<>(); - for (CharSequence value : values) { - if (!stringContains(actual, value)) { - notFound.add(value); - } - } + Set notFound = stream(values).filter(value -> !stringContains(actual, value)) + .collect(toCollection(LinkedHashSet::new)); if (notFound.isEmpty()) return; if (notFound.size() == 1 && values.length == 1) { throw failures.failure(info, shouldContain(actual, values[0], comparisonStrategy)); @@ -412,10 +411,8 @@ public void assertContainsIgnoringCase(AssertionInfo info, CharSequence actual, */ public void assertDoesNotContain(AssertionInfo info, CharSequence actual, CharSequence... values) { doCommonCheckForCharSequence(info, actual, values); - Set found = new LinkedHashSet<>(); - for (CharSequence value : values) { - if (stringContains(actual, value)) found.add(value); - } + Set found = stream(values).filter(value -> stringContains(actual, value)) + .collect(toCollection(LinkedHashSet::new)); if (found.isEmpty()) return; if (found.size() == 1 && values.length == 1) { throw failures.failure(info, shouldNotContain(actual, values[0], comparisonStrategy)); @@ -782,11 +779,8 @@ private void assertNotNull(AssertionInfo info, CharSequence actual) { public void assertContainsSequence(AssertionInfo info, CharSequence actual, CharSequence[] sequence) { doCommonCheckForCharSequence(info, actual, sequence); - StringBuilder stringBuilder = new StringBuilder(); - Set notFound = new LinkedHashSet<>(); - for (CharSequence value : sequence) { - if (!stringContains(actual, value)) notFound.add(value); - } + Set notFound = stream(sequence).filter(value -> !stringContains(actual, value)) + .collect(toCollection(LinkedHashSet::new)); if (!notFound.isEmpty()) { // don't bother looking for a sequence, some of the sequence elements were not found ! @@ -801,10 +795,7 @@ public void assertContainsSequence(AssertionInfo info, CharSequence actual, Char // convert all values to one char sequence to compare with the actual char sequence String strActual = actual.toString(); - for (CharSequence value : sequence) { - stringBuilder.append(value); - } - String strSequence = stringBuilder.toString(); + String strSequence = stream(sequence).collect(joining()); if (!stringContains(strActual, strSequence)) { throw failures.failure(info, shouldContainSequence(actual, sequence, comparisonStrategy)); } @@ -825,10 +816,8 @@ public void assertContainsSequence(AssertionInfo info, CharSequence actual, Char public void assertContainsSubsequence(AssertionInfo info, CharSequence actual, CharSequence[] subsequence) { doCommonCheckForCharSequence(info, actual, subsequence); - Set notFound = new LinkedHashSet<>(); - for (CharSequence value : subsequence) { - if (!stringContains(actual, value)) notFound.add(value); - } + Set notFound = stream(subsequence).filter(value -> !stringContains(actual, value)) + .collect(toCollection(LinkedHashSet::new)); if (!notFound.isEmpty()) { // don't bother looking for a subsequence, some of the subsequence elements were not found ! diff --git a/src/main/java/org/assertj/core/util/Arrays.java b/src/main/java/org/assertj/core/util/Arrays.java index d6e23c6919..87206f27bc 100644 --- a/src/main/java/org/assertj/core/util/Arrays.java +++ b/src/main/java/org/assertj/core/util/Arrays.java @@ -12,14 +12,16 @@ */ package org.assertj.core.util; +import static java.util.Arrays.stream; import static java.util.Collections.emptyList; +import static java.util.stream.Collectors.toList; import static org.assertj.core.util.Lists.newArrayList; import static org.assertj.core.util.Preconditions.checkArgument; import static org.assertj.core.util.Preconditions.checkNotNull; import java.lang.reflect.Array; -import java.util.ArrayList; import java.util.List; +import java.util.Objects; import java.util.concurrent.atomic.AtomicIntegerArray; import java.util.concurrent.atomic.AtomicLongArray; import java.util.concurrent.atomic.AtomicReferenceArray; @@ -154,11 +156,7 @@ public static T[] array(AtomicReferenceArray atomicReferenceArray) { */ public static List nonNullElementsIn(T[] array) { if (array == null) return emptyList(); - List nonNullElements = new ArrayList<>(); - for (T o : array) { - if (o != null) nonNullElements.add(o); - } - return nonNullElements; + return stream(array).filter(Objects::nonNull).collect(toList()); } /** diff --git a/src/main/java/org/assertj/core/util/IterableUtil.java b/src/main/java/org/assertj/core/util/IterableUtil.java index c5508015b3..4cbf66f6dd 100644 --- a/src/main/java/org/assertj/core/util/IterableUtil.java +++ b/src/main/java/org/assertj/core/util/IterableUtil.java @@ -13,6 +13,7 @@ package org.assertj.core.util; import static java.util.Collections.emptyList; +import static java.util.stream.Collectors.toList; import static org.assertj.core.util.Lists.newArrayList; import static org.assertj.core.util.Preconditions.checkNotNull; @@ -21,6 +22,7 @@ import java.util.Collection; import java.util.Iterator; import java.util.List; +import java.util.Objects; public final class IterableUtil { @@ -65,11 +67,7 @@ public static int sizeOf(Iterable iterable) { */ public static List nonNullElementsIn(Iterable i) { if (isNullOrEmpty(i)) return emptyList(); - List nonNull = new ArrayList<>(); - for (T element : i) { - if (element != null) nonNull.add(element); - } - return nonNull; + return Streams.stream(i).filter(Objects::nonNull).collect(toList()); } /** diff --git a/src/main/java/org/assertj/core/util/Lists.java b/src/main/java/org/assertj/core/util/Lists.java index 9375321c2b..d87fc5116f 100644 --- a/src/main/java/org/assertj/core/util/Lists.java +++ b/src/main/java/org/assertj/core/util/Lists.java @@ -12,6 +12,8 @@ */ package org.assertj.core.util; +import static java.util.stream.Collectors.toCollection; + import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; @@ -58,11 +60,7 @@ public static ArrayList newArrayList(Iterable elements) { if (elements == null) { return null; } - ArrayList list = newArrayList(); - for (T e : elements) { - list.add(e); - } - return list; + return Streams.stream(elements).collect(toCollection(ArrayList::new)); } /** diff --git a/src/main/java/org/assertj/core/util/Sets.java b/src/main/java/org/assertj/core/util/Sets.java index 6ce0060202..7f69bc4724 100644 --- a/src/main/java/org/assertj/core/util/Sets.java +++ b/src/main/java/org/assertj/core/util/Sets.java @@ -12,6 +12,8 @@ */ package org.assertj.core.util; +import static java.util.stream.Collectors.toCollection; + import java.util.HashSet; import java.util.LinkedHashSet; import java.util.Set; @@ -44,11 +46,7 @@ public static HashSet newHashSet(Iterable elements) { if (elements == null) { return null; } - HashSet set = newHashSet(); - for (T e : elements) { - set.add(e); - } - return set; + return Streams.stream(elements).collect(toCollection(HashSet::new)); } /** diff --git a/src/main/java/org/assertj/core/util/Strings.java b/src/main/java/org/assertj/core/util/Strings.java index 1018f1daca..48d700c420 100644 --- a/src/main/java/org/assertj/core/util/Strings.java +++ b/src/main/java/org/assertj/core/util/Strings.java @@ -13,11 +13,10 @@ package org.assertj.core.util; import static java.lang.String.format; -import static org.assertj.core.util.Lists.newArrayList; +import static java.util.Arrays.stream; +import static java.util.stream.Collectors.joining; import static org.assertj.core.util.Preconditions.checkArgument; -import java.util.List; - /** * Utility methods related to {@code String}s. * @@ -68,11 +67,7 @@ public static String concat(Object... objects) { if (Arrays.isNullOrEmpty(objects)) { return null; } - StringBuilder b = new StringBuilder(); - for (Object o : objects) { - b.append(o); - } - return b.toString(); + return stream(objects).map(String::valueOf).collect(joining()); } /** @@ -128,11 +123,8 @@ public static StringsToJoin join(String... strings) { * @see StringsToJoin#with(String) */ public static StringsToJoin join(Iterable toStringable) { - List strings = newArrayList(); - for (Object o : toStringable) { - strings.add(String.valueOf(o)); - } - return new StringsToJoin(strings.toArray(new String[strings.size()])); + String[] strings = Streams.stream(toStringable).map(String::valueOf).toArray(String[]::new); + return new StringsToJoin(strings); } /** diff --git a/src/main/java/org/assertj/core/util/introspection/FieldSupport.java b/src/main/java/org/assertj/core/util/introspection/FieldSupport.java index 2701eede32..94d8d71c07 100644 --- a/src/main/java/org/assertj/core/util/introspection/FieldSupport.java +++ b/src/main/java/org/assertj/core/util/introspection/FieldSupport.java @@ -15,13 +15,15 @@ import static java.lang.String.format; import static java.lang.reflect.Modifier.isPublic; import static java.util.Collections.emptyList; -import static java.util.Collections.unmodifiableList; +import static java.util.stream.Collectors.collectingAndThen; +import static java.util.stream.Collectors.toList; import static org.assertj.core.util.ArrayWrapperList.wrap; import static org.assertj.core.util.IterableUtil.isNullOrEmpty; +import static org.assertj.core.util.Streams.stream; import static org.assertj.core.util.introspection.FieldUtils.readField; import java.lang.reflect.Field; -import java.util.ArrayList; +import java.util.Collections; import java.util.List; /** @@ -136,11 +138,8 @@ public List fieldValues(String fieldName, Class fieldClass, Object[] t } private List simpleFieldValues(String fieldName, Class clazz, Iterable target) { - List fieldValues = new ArrayList<>(); - for (Object e : target) { - fieldValues.add(e == null ? null : fieldValue(fieldName, clazz, e)); - } - return unmodifiableList(fieldValues); + return stream(target).map(e -> e == null ? null : fieldValue(fieldName, clazz, e)) + .collect(collectingAndThen(toList(), Collections::unmodifiableList)); } private String popFieldNameFrom(String fieldNameChain) { diff --git a/src/main/java/org/assertj/core/util/introspection/PropertySupport.java b/src/main/java/org/assertj/core/util/introspection/PropertySupport.java index f3c8c0561d..b157b57a63 100644 --- a/src/main/java/org/assertj/core/util/introspection/PropertySupport.java +++ b/src/main/java/org/assertj/core/util/introspection/PropertySupport.java @@ -14,13 +14,15 @@ import static java.lang.String.format; import static java.util.Collections.emptyList; -import static java.util.Collections.unmodifiableList; +import static java.util.stream.Collectors.collectingAndThen; +import static java.util.stream.Collectors.toList; import static org.assertj.core.util.IterableUtil.isNullOrEmpty; import static org.assertj.core.util.Preconditions.checkArgument; +import static org.assertj.core.util.Streams.stream; import static org.assertj.core.util.introspection.Introspection.getPropertyGetter; import java.lang.reflect.Method; -import java.util.ArrayList; +import java.util.Collections; import java.util.List; import org.assertj.core.util.VisibleForTesting; @@ -96,11 +98,8 @@ public static T propertyValueOf(String propertyName, Object target, Class } private List simplePropertyValues(String propertyName, Class clazz, Iterable target) { - List propertyValues = new ArrayList<>(); - for (Object e : target) { - propertyValues.add(e == null ? null : propertyValue(propertyName, clazz, e)); - } - return unmodifiableList(propertyValues); + return stream(target).map(e -> e == null ? null : propertyValue(propertyName, clazz, e)) + .collect(collectingAndThen(toList(), Collections::unmodifiableList)); } private String popPropertyNameFrom(String propertyNameChain) { diff --git a/src/test/java/org/assertj/core/error/ShouldHaveSameContent_create_Test.java b/src/test/java/org/assertj/core/error/ShouldHaveSameContent_create_Test.java index 5e2b0d1bad..80525155a1 100644 --- a/src/test/java/org/assertj/core/error/ShouldHaveSameContent_create_Test.java +++ b/src/test/java/org/assertj/core/error/ShouldHaveSameContent_create_Test.java @@ -36,7 +36,7 @@ public class ShouldHaveSameContent_create_Test { @Test public void should_create_error_message_file_even_if_content_contains_format_specifier() { ErrorMessageFactory factory = shouldHaveSameContent(new FakeFile("abc"), new FakeFile("xyz"), emptyList()); - String expectedErrorMessage = format("[Test] %nFile:%n %nand file:%n %ndo not have same content:%n"); + String expectedErrorMessage = format("[Test] %nFile:%n %nand file:%n %ndo not have same content:%n%n"); assertThat(factory.create(new TextDescription("Test"), new StandardRepresentation())).isEqualTo(expectedErrorMessage); } @@ -45,7 +45,7 @@ public void should_create_error_message_inputstream_even_if_content_contains_for ErrorMessageFactory factory = shouldHaveSameContent(new ByteArrayInputStream(new byte[] { 'a' }), new ByteArrayInputStream(new byte[] { 'b' }), emptyList()); - String expectedErrorMessage = format("[Test] %nInputStreams do not have same content:%n"); + String expectedErrorMessage = format("[Test] %nInputStreams do not have same content:%n%n"); assertThat(factory.create(new TextDescription("Test"), new StandardRepresentation())).isEqualTo(expectedErrorMessage); }