Skip to content

Commit

Permalink
Expose ComparisonStrategy::areEqual in AbstractAssert
Browse files Browse the repository at this point in the history
  • Loading branch information
scordio committed May 30, 2022
1 parent 795f527 commit 96674b4
Show file tree
Hide file tree
Showing 2 changed files with 70 additions and 0 deletions.
17 changes: 17 additions & 0 deletions src/main/java/org/assertj/core/api/AbstractAssert.java
Expand Up @@ -42,6 +42,7 @@
import org.assertj.core.error.ErrorMessageFactory;
import org.assertj.core.error.MessageFormatter;
import org.assertj.core.internal.ComparatorBasedComparisonStrategy;
import org.assertj.core.internal.ComparisonStrategy;
import org.assertj.core.internal.Conditions;
import org.assertj.core.internal.Failures;
import org.assertj.core.internal.Objects;
Expand Down Expand Up @@ -1118,4 +1119,20 @@ protected RecursiveComparisonAssert<?> usingRecursiveComparison() {
return (ASSERT) assertFactory.createAssert(extractedValue).withAssertionState(myself);
}

/**
* Returns true if actual and other are equal according to the current comparison strategy.
*
* @param actual the object to compare to other
* @param other the object to compare to actual
* @return true if actual and other are equal according to the underlying comparison strategy.
* @since 3.23.0
*
* @deprecated {@link ComparisonStrategy} will become part of the public API in the next major release and this method
* will be removed.
*/
@Deprecated
protected boolean areEqual(Object actual, Object other) {
return objects.getComparisonStrategy().areEqual(actual, other);
}

}
@@ -0,0 +1,53 @@
/*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*
* Copyright 2012-2022 the original author or authors.
*/
package org.assertj.core.api;

import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;

import org.assertj.core.internal.ComparisonStrategy;
import org.assertj.core.internal.Objects;
import org.junit.jupiter.api.Test;

class AbstractAssert_areEqual_Test {

private final TestAssert underTest = new TestAssert(42);

private final ComparisonStrategy comparisonStrategy = mock(ComparisonStrategy.class);

@Test
void should_delegate_to_ComparableAssert() {
// GIVEN
underTest.objects = new Objects(comparisonStrategy);
// WHEN
underTest.areEqual(42, 43);
// THEN
verify(comparisonStrategy).areEqual(42, 43);
}

static class TestAssert extends AbstractAssert<TestAssert, Object> {

TestAssert(Object actual) {
super(actual, TestAssert.class);
}

// re-declare to allow test access
@SuppressWarnings("deprecation")
@Override
protected boolean areEqual(Object actual, Object other) {
return super.areEqual(actual, other);
}

}

}

0 comments on commit 96674b4

Please sign in to comment.