diff --git a/src/test/java/net/kemitix/mon/MaybeTest.java b/src/test/java/net/kemitix/mon/MaybeTest.java index 61941ee..575826a 100644 --- a/src/test/java/net/kemitix/mon/MaybeTest.java +++ b/src/test/java/net/kemitix/mon/MaybeTest.java @@ -51,8 +51,13 @@ public class MaybeTest implements WithAssertions { } @Test - public void testHashCode() { - assertThat(just(1).hashCode()).isEqualTo(Objects.hashCode(1)); + public void justHashCode() { + assertThat(just(1).hashCode()).isNotEqualTo(just(2).hashCode()); + } + + @Test + public void nothingHashCode() { + assertThat(nothing().hashCode()).isEqualTo(maybe(null).hashCode()); } @Test diff --git a/src/test/java/net/kemitix/mon/ResultTest.java b/src/test/java/net/kemitix/mon/ResultTest.java index 0f28501..5e56fca 100644 --- a/src/test/java/net/kemitix/mon/ResultTest.java +++ b/src/test/java/net/kemitix/mon/ResultTest.java @@ -18,6 +18,22 @@ public class ResultTest implements WithAssertions { assertThat(Result.ok(1).equals("1")).isFalse(); } + @Test + public void successHashCode() { + assertThat(Result.ok(1).hashCode()).isNotEqualTo(Result.ok(2).hashCode()); + } + + @Test + public void errorHashCode() { + // despite having 'equivalent' exceptions, the exceptions are distinct instances, so should be considered unique + final RuntimeException exception1 = new RuntimeException("message"); + final RuntimeException exception2 = new RuntimeException("message"); + assertThat(exception1.hashCode()).isNotEqualTo(exception2.hashCode()); + final Result error1 = Result.error(exception1); + final Result error2 = Result.error(exception2); + assertThat(error1.hashCode()).isNotEqualTo(error2.hashCode()); + } + @Test public void createSuccess_isSuccess() { //when