You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2019/11/26 01:42:32 UTC

[commons-io] branch master updated: Implement hashCode() and equals() on path counters.

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


The following commit(s) were added to refs/heads/master by this push:
     new 58d9d82  Implement hashCode() and equals() on path counters.
58d9d82 is described below

commit 58d9d82879b1f4e24345cc825e70b7059791cf5e
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Mon Nov 25 20:42:29 2019 -0500

    Implement hashCode() and equals() on path counters.
---
 .../org/apache/commons/io/file/CountingPathVisitor.java | 17 +++++++++++++++++
 .../apache/commons/io/file/CountingPathVisitorTest.java | 10 ++++++++++
 2 files changed, 27 insertions(+)

diff --git a/src/main/java/org/apache/commons/io/file/CountingPathVisitor.java b/src/main/java/org/apache/commons/io/file/CountingPathVisitor.java
index 987863b..cdda3b2 100644
--- a/src/main/java/org/apache/commons/io/file/CountingPathVisitor.java
+++ b/src/main/java/org/apache/commons/io/file/CountingPathVisitor.java
@@ -65,6 +65,18 @@ public class CountingPathVisitor extends SimplePathVisitor {
         this.pathCounters = Objects.requireNonNull(pathCounter, "pathCounter");
     }
 
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) {
+            return true;
+        }
+        if (!(obj instanceof CountingPathVisitor)) {
+            return false;
+        }
+        CountingPathVisitor other = (CountingPathVisitor) obj;
+        return Objects.equals(pathCounters, other.pathCounters);
+    }
+
     /**
      * Gets the visitation counts.
      *
@@ -75,6 +87,11 @@ public class CountingPathVisitor extends SimplePathVisitor {
     }
 
     @Override
+    public int hashCode() {
+        return Objects.hash(pathCounters);
+    }
+
+    @Override
     public FileVisitResult postVisitDirectory(final Path dir, final IOException exc) throws IOException {
         pathCounters.getDirectoryCounter().increment();
         return FileVisitResult.CONTINUE;
diff --git a/src/test/java/org/apache/commons/io/file/CountingPathVisitorTest.java b/src/test/java/org/apache/commons/io/file/CountingPathVisitorTest.java
index afdd998..f8078b6 100644
--- a/src/test/java/org/apache/commons/io/file/CountingPathVisitorTest.java
+++ b/src/test/java/org/apache/commons/io/file/CountingPathVisitorTest.java
@@ -23,6 +23,7 @@ import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Path;
 
+import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.MethodSource;
 
@@ -37,6 +38,7 @@ public class CountingPathVisitorTest extends TestArguments {
     @ParameterizedTest
     @MethodSource("countingPathVisitors")
     public void testCountEmptyFolder(final CountingPathVisitor visitor) throws IOException {
+        checkZeroCounts(visitor);
         final Path tempDir = Files.createTempDirectory(getClass().getCanonicalName());
         try {
             assertCounts(1, 0, 0, PathUtils.visitFileTree(visitor, tempDir));
@@ -51,6 +53,7 @@ public class CountingPathVisitorTest extends TestArguments {
     @ParameterizedTest
     @MethodSource("countingPathVisitors")
     public void testCountFolders1FileSize0(final CountingPathVisitor visitor) throws IOException {
+        checkZeroCounts(visitor);
         assertCounts(1, 1, 0, PathUtils.visitFileTree(visitor,
                 "src/test/resources/org/apache/commons/io/dirs-1-file-size-0"));
     }
@@ -61,6 +64,7 @@ public class CountingPathVisitorTest extends TestArguments {
     @ParameterizedTest
     @MethodSource("countingPathVisitors")
     public void testCountFolders1FileSize1(final CountingPathVisitor visitor) throws IOException {
+        checkZeroCounts(visitor);
         assertCounts(1, 1, 1, PathUtils.visitFileTree(visitor,
                 "src/test/resources/org/apache/commons/io/dirs-1-file-size-1"));
     }
@@ -71,10 +75,16 @@ public class CountingPathVisitorTest extends TestArguments {
     @ParameterizedTest
     @MethodSource("countingPathVisitors")
     public void testCountFolders2FileSize2(final CountingPathVisitor visitor) throws IOException {
+        checkZeroCounts(visitor);
         assertCounts(3, 2, 2, PathUtils.visitFileTree(visitor,
                 "src/test/resources/org/apache/commons/io/dirs-2-file-size-2"));
     }
 
+    private void checkZeroCounts(final CountingPathVisitor visitor) {
+        Assertions.assertEquals(CountingPathVisitor.withLongCounters(), visitor);
+        Assertions.assertEquals(CountingPathVisitor.withBigIntegerCounters(), visitor);
+    }
+
     @ParameterizedTest
     @MethodSource("countingPathVisitors")
     void testToString(final CountingPathVisitor visitor) {