From: David ‘Bombe’ Roden Date: Thu, 27 Nov 2025 15:08:36 +0000 (+0100) Subject: 🐛 Fix a bug in Issue#hashCode() X-Git-Url: https://git.pterodactylus.net/?a=commitdiff_plain;h=c5321e0e5370b3b8626742e5c2814a6c4578e25e;p=jSite.git 🐛 Fix a bug in Issue#hashCode() And add the test that discovered it. --- diff --git a/src/main/java/de/todesbaum/jsite/application/validation/Issue.java b/src/main/java/de/todesbaum/jsite/application/validation/Issue.java index 451aabc..2df4878 100644 --- a/src/main/java/de/todesbaum/jsite/application/validation/Issue.java +++ b/src/main/java/de/todesbaum/jsite/application/validation/Issue.java @@ -53,7 +53,7 @@ public class Issue { @Override public int hashCode() { - return Objects.hash(errorKey, fatal, parameters); + return Objects.hash(errorKey, fatal, Arrays.hashCode(parameters)); } @Override diff --git a/src/test/java/de/todesbaum/jsite/application/validation/IssueTest.java b/src/test/java/de/todesbaum/jsite/application/validation/IssueTest.java new file mode 100644 index 0000000..628b026 --- /dev/null +++ b/src/test/java/de/todesbaum/jsite/application/validation/IssueTest.java @@ -0,0 +1,118 @@ +package de.todesbaum.jsite.application.validation; + +import org.junit.Test; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.allOf; +import static org.hamcrest.Matchers.containsString; +import static org.hamcrest.Matchers.equalTo; +import static org.hamcrest.Matchers.not; + +public class IssueTest { + + @Test + public void issueRetainsErrorKey() { + Issue issue = new Issue("error-key", false, "param1", "param2"); + assertThat(issue.getErrorKey(), equalTo("error-key")); + } + + @Test + public void issueRetainsFatalFalse() { + Issue issue = new Issue("error-key", false, "param1", "param2"); + assertThat(issue.isFatal(), equalTo(false)); + } + + @Test + public void issueRetainsFatalTrue() { + Issue issue = new Issue("error-key", true, "param1", "param2"); + assertThat(issue.isFatal(), equalTo(true)); + } + + @Test + public void issueRetainsParameters() { + Issue issue = new Issue("error-key", true, "param1", "param2"); + assertThat(issue.getParameters(), equalTo(new String[] { "param1", "param2" })); + } + + @Test + public void issuesAreEqualIfAllValuesAreEqual() { + Issue firstIssue = new Issue("error-key", true, "param1", "param2"); + Issue secondIssue = new Issue("error-key", true, "param1", "param2"); + assertThat(firstIssue, equalTo(secondIssue)); + } + + @Test + public void hashCodeIsTheSameIfObjectsAreEqual() { + Issue firstIssue = new Issue("error-key", true, "param1", "param2"); + Issue secondIssue = new Issue("error-key", true, "param1", "param2"); + assertThat(firstIssue.hashCode(), equalTo(secondIssue.hashCode())); + } + + @Test + public void issuesAreEqualToThemselves() { + Issue issue = new Issue("error-key", true, "param1", "param2"); + assertThat(issue, equalTo(issue)); + } + + @Test + public void issueIsNotEqualToNull() { + Issue issue = new Issue("error-key", true, "param1", "param2"); + assertThat(issue.equals(null), equalTo(false)); + } + + @Test + public void issuesAreNotEqualToObjectsOfDifferentClass() { + Issue issue = new Issue("error-key", true, "param1", "param2"); + assertThat(issue.equals(new Object()), equalTo(false)); + } + + @Test + public void issuesAreNotEqualIfErrorKeyIsDifferent() { + Issue firstIssue = new Issue("first-error-key", true, "param1", "param2"); + Issue secondIssue = new Issue("second-error-key", true, "param1", "param2"); + assertThat(firstIssue, not(equalTo(secondIssue))); + } + + @Test + public void issuesAreNotEqualIfFatalIsDifferent() { + Issue firstIssue = new Issue("error-key", true, "param1", "param2"); + Issue secondIssue = new Issue("error-key", false, "param1", "param2"); + assertThat(firstIssue, not(equalTo(secondIssue))); + } + + @Test + public void issuesAreNotEqualIfParametersAreDifferent() { + Issue firstIssue = new Issue("error-key", true, "param1", "param2"); + Issue secondIssue = new Issue("error-key", true, "param1", "param2", "param3"); + assertThat(firstIssue, not(equalTo(secondIssue))); + } + + @Test + public void toStringContainsErrorKey() { + Issue issue = new Issue("error-key", true, "param1", "param2"); + assertThat(issue.toString(), allOf( + containsString("errorKey"), + containsString("error-key") + )); + } + + @Test + public void toStringContainsFatal() { + Issue issue = new Issue("error-key", true, "param1", "param2"); + assertThat(issue.toString(), allOf( + containsString("fatal"), + containsString("true") + )); + } + + @Test + public void toStringContainsParameters() { + Issue issue = new Issue("error-key", true, "param1", "param2"); + assertThat(issue.toString(), allOf( + containsString("parameters"), + containsString("param1"), + containsString("param2") + )); + } + +}