Skip to content

Commit c235e9d

Browse files
authored
Add default constructor for RecursiveComparator (#3206)
1 parent e7e598f commit c235e9d

2 files changed

Lines changed: 62 additions & 13 deletions

File tree

assertj-core/src/main/java/org/assertj/core/api/recursive/comparison/RecursiveComparator.java

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,8 @@
2020
/**
2121
* {@code Comparator} comparing objects recursively as in {@link org.assertj.core.api.RecursiveComparisonAssert}.
2222
* <p>
23-
* This comparator does not enforce any ordering, it just returns zero if
24-
* the compared objects are equals according the recursive comparison,
25-
* or a non-zero value otherwise.
26-
* <p>
27-
* This comparator honors the {@link RecursiveComparisonConfiguration} passed at construction time.
23+
* This comparator does not enforce any ordering and returns zero if the compared objects are equals,
24+
* according to the recursive comparison, or a non-zero value otherwise.
2825
*
2926
* @since 3.24.0
3027
*/
@@ -34,10 +31,21 @@ public class RecursiveComparator implements Comparator<Object> {
3431
private final RecursiveComparisonDifferenceCalculator recursiveComparisonDifferenceCalculator;
3532

3633
/**
37-
* Returns a new {@code RecursiveComparator} that uses the given {@link RecursiveComparisonConfiguration} when comparing
38-
* objects with the recursive comparison.
34+
* Returns a new {@code RecursiveComparator} that uses the default {@link RecursiveComparisonConfiguration}
35+
* when comparing objects with the recursive comparison.
3936
*
40-
* @param recursiveComparisonConfiguration the used {@code RecursiveComparisonConfiguration}
37+
* @since 3.25.0
38+
*/
39+
public RecursiveComparator() {
40+
this.recursiveComparisonConfiguration = new RecursiveComparisonConfiguration();
41+
this.recursiveComparisonDifferenceCalculator = new RecursiveComparisonDifferenceCalculator();
42+
}
43+
44+
/**
45+
* Returns a new {@code RecursiveComparator} that uses the given {@link RecursiveComparisonConfiguration}
46+
* when comparing objects with the recursive comparison.
47+
*
48+
* @param recursiveComparisonConfiguration the {@code RecursiveComparisonConfiguration} instance to be used
4149
*/
4250
public RecursiveComparator(RecursiveComparisonConfiguration recursiveComparisonConfiguration) {
4351
this.recursiveComparisonConfiguration = recursiveComparisonConfiguration;
@@ -48,6 +56,11 @@ private List<ComparisonDifference> determineDifferencesWith(Object actual, Objec
4856
return recursiveComparisonDifferenceCalculator.determineDifferences(actual, expected, recursiveComparisonConfiguration);
4957
}
5058

59+
public String getDescription() {
60+
return format("RecursiveComparator a comparator based on the recursive comparison with the following configuration:%n%s",
61+
recursiveComparisonConfiguration);
62+
}
63+
5164
/**
5265
* Returns zero if the arguments are recursively equal to each other, or non-zero otherwise (no ordering enforced).
5366
*
@@ -63,9 +76,4 @@ public int compare(Object actual, Object other) {
6376
return -1;
6477
}
6578

66-
public String getDescription() {
67-
return format("RecursiveComparator a comparator based on the recursive comparison with the following configuration:%n%s",
68-
recursiveComparisonConfiguration);
69-
}
70-
7179
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
/*
2+
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
3+
* the License. You may obtain a copy of the License at
4+
*
5+
* http://www.apache.org/licenses/LICENSE-2.0
6+
*
7+
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
8+
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
9+
* specific language governing permissions and limitations under the License.
10+
*
11+
* Copyright 2012-2023 the original author or authors.
12+
*/
13+
package org.assertj.core.api.recursive.comparison;
14+
15+
import static org.assertj.core.api.BDDAssertions.then;
16+
17+
import org.junit.jupiter.api.Test;
18+
19+
class RecursiveComparator_constructor_Test {
20+
21+
@Test
22+
void default_constructor_should_use_default_configuration() {
23+
// WHEN
24+
RecursiveComparator recursiveComparator = new RecursiveComparator();
25+
// THEN
26+
then(recursiveComparator).extracting("recursiveComparisonConfiguration")
27+
.isEqualTo(new RecursiveComparisonConfiguration());
28+
}
29+
30+
@Test
31+
void constructor_with_configuration_should_use_given_configuration() {
32+
// GIVEN
33+
RecursiveComparisonConfiguration configuration = new RecursiveComparisonConfiguration();
34+
// WHEN
35+
RecursiveComparator recursiveComparator = new RecursiveComparator(configuration);
36+
// THEN
37+
then(recursiveComparator).extracting("recursiveComparisonConfiguration")
38+
.isSameAs(configuration);
39+
}
40+
41+
}

0 commit comments

Comments
 (0)