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 aabf597
Show file tree
Hide file tree
Showing 2 changed files with 77 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,60 @@
/*
* 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.assertj.core.api.BDDAssertions.then;
import static org.mockito.Answers.CALLS_REAL_METHODS;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;

import java.lang.reflect.Method;
import java.lang.reflect.Modifier;

import org.assertj.core.internal.ComparisonStrategy;
import org.assertj.core.internal.Objects;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;

@ExtendWith(MockitoExtension.class)
class AbstractAssert_areEqual_Test {

@Mock(answer = CALLS_REAL_METHODS)
private AbstractAssert<?, Object> underTest;

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

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

@Test
void should_be_protected() throws NoSuchMethodException {
// GIVEN
Method areEqual = underTest.getClass().getDeclaredMethod("areEqual", Object.class, Object.class);
// WHEN
boolean isProtected = Modifier.isProtected(areEqual.getModifiers());
// THEN
then(isProtected).isTrue();
}

}

0 comments on commit aabf597

Please sign in to comment.