This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-io.git

commit 5aada4c51232d9e93e7f337696220dd8fc40ef44
Author: Gary D. Gregory <garydgreg...@gmail.com>
AuthorDate: Sun Mar 2 08:02:08 2025 -0500

    Better tests for RandomAccessFiles.contentEquals()
---
 .../apache/commons/io/RandomAccessFilesTest.java   | 33 +++++++++++++++++-----
 1 file changed, 26 insertions(+), 7 deletions(-)

diff --git a/src/test/java/org/apache/commons/io/RandomAccessFilesTest.java 
b/src/test/java/org/apache/commons/io/RandomAccessFilesTest.java
index 564a27af3..67ace2037 100644
--- a/src/test/java/org/apache/commons/io/RandomAccessFilesTest.java
+++ b/src/test/java/org/apache/commons/io/RandomAccessFilesTest.java
@@ -28,8 +28,8 @@
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
-import java.util.Arrays;
 
+import org.apache.commons.lang3.ArrayUtils;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.EnumSource;
 
@@ -42,6 +42,10 @@ public class RandomAccessFilesTest {
     private static final Path PATH_RO_0 = 
Paths.get("src/test/resources/org/apache/commons/io/test-file-empty.bin");
     private static final Path PATH_RO_0_BIS = 
Paths.get("src/test/resources/org/apache/commons/io/test-file-empty2.bin");
 
+    private static byte reverse(final byte b) {
+        return (byte) (~b & 0xff);
+    }
+
     @ParameterizedTest()
     @EnumSource(value = RandomAccessFileMode.class)
     public void testContentEquals(final RandomAccessFileMode mode) throws 
IOException {
@@ -83,11 +87,15 @@ public void testContentEquals(final RandomAccessFileMode 
mode) throws IOExceptio
         final Path bigFile2 = Files.createTempFile(getClass().getSimpleName(), 
"-2.bin");
         final Path bigFile3 = Files.createTempFile(getClass().getSimpleName(), 
"-3.bin");
         try {
-            final int newLength = 1_000_000;
+            // This length must match any restriction from the Surefire 
configuration.
+            final int newLength = 5_000_000;
             final byte[] bytes1 = new byte[newLength];
             final byte[] bytes2 = new byte[newLength];
-            Arrays.fill(bytes1, (byte) 1);
-            Arrays.fill(bytes2, (byte) 2);
+            // Make sure bytes1 and bytes2 are different despite the shuffle
+            ArrayUtils.shuffle(bytes1);
+            bytes1[0] = 1;
+            ArrayUtils.shuffle(bytes2);
+            bytes2[0] = 2;
             Files.write(bigFile1, bytes1);
             Files.write(bigFile2, bytes2);
             try (RandomAccessFile raf1 = mode.create(bigFile1);
@@ -96,9 +104,20 @@ public void testContentEquals(final RandomAccessFileMode 
mode) throws IOExceptio
                 
assertFalse(RandomAccessFiles.contentEquals(RandomAccessFiles.reset(raf2), 
RandomAccessFiles.reset(raf1)));
                 
assertTrue(RandomAccessFiles.contentEquals(RandomAccessFiles.reset(raf1), 
RandomAccessFiles.reset(raf1)));
             }
-            // Make the last byte different
-            final byte[] bytes3 = bytes1.clone();
-            bytes3[bytes3.length - 1] = 9;
+            // Make the LAST byte different.
+            byte[] bytes3 = bytes1.clone();
+            final int last = bytes3.length - 1;
+            bytes3[last] = reverse(bytes3[last]);
+            Files.write(bigFile3, bytes3);
+            try (RandomAccessFile raf1 = mode.create(bigFile1);
+                    RandomAccessFile raf3 = mode.create(bigFile3)) {
+                assertFalse(RandomAccessFiles.contentEquals(raf1, raf3));
+                
assertFalse(RandomAccessFiles.contentEquals(RandomAccessFiles.reset(raf3), 
RandomAccessFiles.reset(raf1)));
+            }
+            // Make a byte in the middle different
+            bytes3 = bytes1.clone();
+            final int middle = bytes3.length / 2;
+            bytes3[middle] = reverse(bytes3[middle]);
             Files.write(bigFile3, bytes3);
             try (RandomAccessFile raf1 = mode.create(bigFile1);
                     RandomAccessFile raf3 = mode.create(bigFile3)) {

Reply via email to