From 68366f7293319ee2b0b6a511d18d33de44155912 Mon Sep 17 00:00:00 2001 From: Minghao Li Date: Sun, 10 Mar 2024 14:44:51 -0700 Subject: [PATCH] Issue #13345: enable EqualsHashCodeCheckExamplesTest --- .../EqualsHashCodeCheckExamplesTest.java | 12 ++- .../coding/equalshashcode/Example1.java | 52 ++++++++++++ .../checks/coding/equalshashcode/Example1.txt | 61 -------------- src/xdocs/checks/coding/equalshashcode.xml | 81 +++++++++---------- .../checks/coding/equalshashcode.xml.template | 4 +- 5 files changed, 98 insertions(+), 112 deletions(-) create mode 100644 src/xdocs-examples/resources/com/puppycrawl/tools/checkstyle/checks/coding/equalshashcode/Example1.java delete mode 100644 src/xdocs-examples/resources/com/puppycrawl/tools/checkstyle/checks/coding/equalshashcode/Example1.txt diff --git a/src/xdocs-examples/java/com/puppycrawl/tools/checkstyle/checks/coding/EqualsHashCodeCheckExamplesTest.java b/src/xdocs-examples/java/com/puppycrawl/tools/checkstyle/checks/coding/EqualsHashCodeCheckExamplesTest.java index a555be20f84..ec35148704d 100644 --- a/src/xdocs-examples/java/com/puppycrawl/tools/checkstyle/checks/coding/EqualsHashCodeCheckExamplesTest.java +++ b/src/xdocs-examples/java/com/puppycrawl/tools/checkstyle/checks/coding/EqualsHashCodeCheckExamplesTest.java @@ -19,12 +19,13 @@ package com.puppycrawl.tools.checkstyle.checks.coding; -import org.junit.jupiter.api.Disabled; +import static com.puppycrawl.tools.checkstyle.checks.coding.EqualsHashCodeCheck.MSG_KEY_EQUALS; +import static com.puppycrawl.tools.checkstyle.checks.coding.EqualsHashCodeCheck.MSG_KEY_HASHCODE; + import org.junit.jupiter.api.Test; import com.puppycrawl.tools.checkstyle.AbstractExamplesModuleTestSupport; -@Disabled("until https://github.com/checkstyle/checkstyle/issues/13345") public class EqualsHashCodeCheckExamplesTest extends AbstractExamplesModuleTestSupport { @Override protected String getPackageLocation() { @@ -34,9 +35,12 @@ protected String getPackageLocation() { @Test public void testExample1() throws Exception { final String[] expected = { - + "11:3: " + getCheckMessage(MSG_KEY_EQUALS), + "18:3: " + getCheckMessage(MSG_KEY_HASHCODE), + "41:3: " + getCheckMessage(MSG_KEY_HASHCODE), + "47:3: " + getCheckMessage(MSG_KEY_EQUALS), }; - verifyWithInlineConfigParser(getPath("Example1.txt"), expected); + verifyWithInlineConfigParser(getPath("Example1.java"), expected); } } diff --git a/src/xdocs-examples/resources/com/puppycrawl/tools/checkstyle/checks/coding/equalshashcode/Example1.java b/src/xdocs-examples/resources/com/puppycrawl/tools/checkstyle/checks/coding/equalshashcode/Example1.java new file mode 100644 index 00000000000..e275c7fc438 --- /dev/null +++ b/src/xdocs-examples/resources/com/puppycrawl/tools/checkstyle/checks/coding/equalshashcode/Example1.java @@ -0,0 +1,52 @@ +/*xml + + + + + +*/ +package com.puppycrawl.tools.checkstyle.checks.coding.equalshashcode; +// xdoc section -- start +class Example1 { + public int hashCode() { // violation, no valid 'equals' + return 0; + } + public boolean equals(String o) { return false; } +} + +class ExampleNoHashCode { + public boolean equals(Object o) { // violation, no 'hashCode' + return false; + } + public boolean equals(String o) { return false; } +} + +class ExampleBothMethods1 { + public int hashCode() { return 0; } + public boolean equals(Object o) { // ok, both methods exist + return false; + } + public boolean equals(String o) { return false; } +} + +class ExampleBothMethods2 { + public int hashCode() { return 0; } + public boolean equals(java.lang.Object o) { // ok, both methods exist + return false; + } +} + +class ExampleNoValidHashCode { + public static int hashCode(int i) { return 0; } + public boolean equals(Object o) { // violation, no valid 'hashCode' + return false; + } +} + +class ExampleNoValidEquals { + public int hashCode() { // violation, no valid 'equals' + return 0; + } + public static boolean equals(Object o, Object o2) { return false; } +} +// xdoc section -- end diff --git a/src/xdocs-examples/resources/com/puppycrawl/tools/checkstyle/checks/coding/equalshashcode/Example1.txt b/src/xdocs-examples/resources/com/puppycrawl/tools/checkstyle/checks/coding/equalshashcode/Example1.txt deleted file mode 100644 index 33eb51e63ca..00000000000 --- a/src/xdocs-examples/resources/com/puppycrawl/tools/checkstyle/checks/coding/equalshashcode/Example1.txt +++ /dev/null @@ -1,61 +0,0 @@ -/*xml - - - - - -*/ - -// xdoc section -- start -public static class Example1 { - public int hashCode() { - // code - } - public boolean equals(String o) { // violation, overloaded implementation of 'equals' - // code - } -} -public static class Example2 { - public boolean equals(Object o) { // violation, no 'hashCode' - // code - } - public boolean equals(String o) { - // code - } -} -public static class Example3 { - public int hashCode() { - // code - } - public boolean equals(Object o) { // OK - // code - } - public boolean equals(String o) { - // code - } -} -public static class Example4 { - public int hashCode() { - // code - } - public boolean equals(java.lang.Object o) { // OK - // code - } -} -public static class Example5 { - public static int hashCode(int i) { - // code - } - public boolean equals(Object o) { // violation, overloaded implementation of 'hashCode' - // code - } -} -public static class Example6 { - public int hashCode() { // violation, overloaded implementation of 'equals' - // code - } - public static boolean equals(Object o, Object o2) { - // code - } -} -// xdoc section -- end diff --git a/src/xdocs/checks/coding/equalshashcode.xml b/src/xdocs/checks/coding/equalshashcode.xml index c95cb0ae84a..700f029efc9 100644 --- a/src/xdocs/checks/coding/equalshashcode.xml +++ b/src/xdocs/checks/coding/equalshashcode.xml @@ -40,56 +40,47 @@

Example:

-public static class Example1 { - public int hashCode() { - // code - } - public boolean equals(String o) { // violation, overloaded implementation of 'equals' - // code - } +class Example1 { + public int hashCode() { // violation, no valid 'equals' + return 0; + } + public boolean equals(String o) { return false; } } -public static class Example2 { - public boolean equals(Object o) { // violation, no 'hashCode' - // code - } - public boolean equals(String o) { - // code - } + +class ExampleNoHashCode { + public boolean equals(Object o) { // violation, no 'hashCode' + return false; + } + public boolean equals(String o) { return false; } } -public static class Example3 { - public int hashCode() { - // code - } - public boolean equals(Object o) { // OK - // code - } - public boolean equals(String o) { - // code - } + +class ExampleBothMethods1 { + public int hashCode() { return 0; } + public boolean equals(Object o) { // ok, both methods exist + return false; + } + public boolean equals(String o) { return false; } } -public static class Example4 { - public int hashCode() { - // code - } - public boolean equals(java.lang.Object o) { // OK - // code - } + +class ExampleBothMethods2 { + public int hashCode() { return 0; } + public boolean equals(java.lang.Object o) { // ok, both methods exist + return false; + } } -public static class Example5 { - public static int hashCode(int i) { - // code - } - public boolean equals(Object o) { // violation, overloaded implementation of 'hashCode' - // code - } + +class ExampleNoValidHashCode { + public static int hashCode(int i) { return 0; } + public boolean equals(Object o) { // violation, no valid 'hashCode' + return false; + } } -public static class Example6 { - public int hashCode() { // violation, overloaded implementation of 'equals' - // code - } - public static boolean equals(Object o, Object o2) { - // code - } + +class ExampleNoValidEquals { + public int hashCode() { // violation, no valid 'equals' + return 0; + } + public static boolean equals(Object o, Object o2) { return false; } } diff --git a/src/xdocs/checks/coding/equalshashcode.xml.template b/src/xdocs/checks/coding/equalshashcode.xml.template index b6ffaab875f..b8bb9d06c21 100644 --- a/src/xdocs/checks/coding/equalshashcode.xml.template +++ b/src/xdocs/checks/coding/equalshashcode.xml.template @@ -33,13 +33,13 @@

+ value="resources/com/puppycrawl/tools/checkstyle/checks/coding/equalshashcode/Example1.java"/>

Example:

+ value="resources/com/puppycrawl/tools/checkstyle/checks/coding/equalshashcode/Example1.java"/>