Fixed a bug in AssertThatBinaryExpression inspection for assertThat(null != expression) and related that would not correctly invert the condition on transformation.

This commit is contained in:
2019-09-29 12:32:32 +02:00
parent 2b97494c17
commit acc81863f5
6 changed files with 40 additions and 2 deletions
@@ -38,7 +38,13 @@ class AssertThatBinaryExpressionInspection : AbstractAssertJInspection() {
if (isLeftNull && isRightNull) return
if (isLeftNull || isRightNull) {
val replacementMethod = expectedResult.map(MethodNames.IS_NULL, MethodNames.IS_NOT_NULL)
val expectedResultOnOp =
when (binaryExpression.operationTokenType) {
JavaTokenType.EQEQ -> expectedResult
JavaTokenType.NE -> !expectedResult
else -> return
}
val replacementMethod = expectedResultOnOp.map(MethodNames.IS_NULL, MethodNames.IS_NOT_NULL)
registerSplitMethod(holder, expectedCallExpression, replacementMethod) { desc, method ->
SplitBinaryExpressionMethodCallQuickFix(desc, method, pickRightOperand = isLeftNull, noExpectedExpression = true)
}
@@ -13,7 +13,7 @@ internal class AssertThatBinaryExpressionInspectionTest : AbstractCajonTest() {
internal fun assertThat_of_binary_expression_can_be_moved_out(@MyFixture myFixture: JavaCodeInsightTestFixture) {
myFixture.enableInspections(AssertThatBinaryExpressionInspection::class.java)
myFixture.configureByFile("BinaryExpressionBefore.java")
executeQuickFixes(myFixture, Regex.fromLiteral("Split binary expression out of assertThat()"), 149)
executeQuickFixes(myFixture, Regex.fromLiteral("Split binary expression out of assertThat()"), 161)
myFixture.checkResultByFile("BinaryExpressionAfter.java")
}
}
@@ -189,6 +189,20 @@ public class BinaryExpression {
assertThat(stringAct).isNotNull();
assertThat(stringAct).isNotNull();
assertThat(stringAct).as("doh!").isNotNull();
assertThat(stringAct).isNotNull();
assertThat(stringAct).isNotNull();
assertThat(stringAct).isNull();
assertThat(stringAct).isNull();
assertThat(stringAct).isNull();
assertThat(stringAct).as("doh!").isNotNull();
assertThat(stringAct).isNotNull();
assertThat(stringAct).isNotNull();
assertThat(stringAct).isNull();
assertThat(stringAct).isNull();
assertThat(stringAct).isNull();
assertThat(null == null).isTrue();
assertThat(!false).isTrue();
@@ -189,6 +189,20 @@ public class BinaryExpression {
assertThat(null == stringAct).isEqualTo(false);
assertThat(null == stringAct).isNotEqualTo(true);
assertThat(stringAct != null).as("doh!").isTrue();
assertThat(stringAct != null).isEqualTo(true);
assertThat(stringAct != null).isNotEqualTo(false);
assertThat(stringAct != null).isFalse();
assertThat(stringAct != null).isEqualTo(false);
assertThat(stringAct != null).isNotEqualTo(true);
assertThat(null != stringAct).as("doh!").isTrue();
assertThat(null != stringAct).isEqualTo(true);
assertThat(null != stringAct).isNotEqualTo(false);
assertThat(null != stringAct).isFalse();
assertThat(null != stringAct).isEqualTo(false);
assertThat(null != stringAct).isNotEqualTo(true);
assertThat(null == null).isTrue();
assertThat(!false).isTrue();