Date: Wed, 8 Jan 2025 09:35:09 +0100
Subject: [PATCH 25/43] Extend `JUnitToAssertJRules` Refaster rule collection
(#1484)
By migrating all remaining `assertArrayEquals` methods.
---
.../refasterrules/JUnitToAssertJRules.java | 468 ++++++++++++++++--
.../JUnitToAssertJRulesTestInput.java | 136 +++++
.../JUnitToAssertJRulesTestOutput.java | 148 ++++++
3 files changed, 718 insertions(+), 34 deletions(-)
diff --git a/error-prone-contrib/src/main/java/tech/picnic/errorprone/refasterrules/JUnitToAssertJRules.java b/error-prone-contrib/src/main/java/tech/picnic/errorprone/refasterrules/JUnitToAssertJRules.java
index e7915237..05456e4e 100644
--- a/error-prone-contrib/src/main/java/tech/picnic/errorprone/refasterrules/JUnitToAssertJRules.java
+++ b/error-prone-contrib/src/main/java/tech/picnic/errorprone/refasterrules/JUnitToAssertJRules.java
@@ -5,6 +5,8 @@ import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatCode;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.assertj.core.api.Assertions.fail;
+import static org.assertj.core.api.Assertions.offset;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertInstanceOf;
@@ -34,7 +36,8 @@ import tech.picnic.errorprone.refaster.annotation.TypeMigration;
* Note that, while both libraries throw an {@link AssertionError} in case of an assertion
* failure, the exact subtype used generally differs.
*/
-// XXX: Not all JUnit `Assertions` methods have an associated Refaster rule yet; expand this class.
+// XXX: The `AssertThat*Array*ContainsExactly*` rules assume that `expected` and `actual` are not
+// both `null`.
// XXX: Introduce a `@Matcher` on `Executable` and `ThrowingSupplier` expressions, such that they
// are only matched if they are also compatible with the `ThrowingCallable` functional interface.
// When implementing such a matcher, note that expressions with a non-void return type such as
@@ -50,39 +53,6 @@ import tech.picnic.errorprone.refaster.annotation.TypeMigration;
"assertAll(String, Collection)",
"assertAll(String, Executable[])",
"assertAll(String, Stream)",
- "assertArrayEquals(boolean[], boolean[])",
- "assertArrayEquals(boolean[], boolean[], String)",
- "assertArrayEquals(boolean[], boolean[], Supplier)",
- "assertArrayEquals(byte[], byte[])",
- "assertArrayEquals(byte[], byte[], String)",
- "assertArrayEquals(byte[], byte[], Supplier)",
- "assertArrayEquals(char[], char[])",
- "assertArrayEquals(char[], char[], String)",
- "assertArrayEquals(char[], char[], Supplier)",
- "assertArrayEquals(double[], double[])",
- "assertArrayEquals(double[], double[], double)",
- "assertArrayEquals(double[], double[], double, String)",
- "assertArrayEquals(double[], double[], double, Supplier)",
- "assertArrayEquals(double[], double[], String)",
- "assertArrayEquals(double[], double[], Supplier)",
- "assertArrayEquals(float[], float[])",
- "assertArrayEquals(float[], float[], float)",
- "assertArrayEquals(float[], float[], float, String)",
- "assertArrayEquals(float[], float[], float, Supplier)",
- "assertArrayEquals(float[], float[], String)",
- "assertArrayEquals(float[], float[], Supplier)",
- "assertArrayEquals(int[], int[])",
- "assertArrayEquals(int[], int[], String)",
- "assertArrayEquals(int[], int[], Supplier