From 24a233db5cb5436795bc7805ee888857be75117b Mon Sep 17 00:00:00 2001 From: Paul Campbell Date: Mon, 25 Jun 2018 22:51:18 +0100 Subject: [PATCH] Implement Result.equals() and hashcode() --- src/main/java/net/kemitix/mon/result/Err.java | 11 +++++++++++ src/test/java/net/kemitix/mon/ResultTest.java | 10 ++++++++++ 2 files changed, 21 insertions(+) diff --git a/src/main/java/net/kemitix/mon/result/Err.java b/src/main/java/net/kemitix/mon/result/Err.java index 0e76126..d0c4cb4 100644 --- a/src/main/java/net/kemitix/mon/result/Err.java +++ b/src/main/java/net/kemitix/mon/result/Err.java @@ -24,6 +24,7 @@ package net.kemitix.mon.result; import lombok.RequiredArgsConstructor; import net.kemitix.mon.maybe.Maybe; +import java.util.Objects; import java.util.function.Consumer; import java.util.function.Function; import java.util.function.Predicate; @@ -73,6 +74,16 @@ class Err implements Result { throw error; } + @Override + public boolean equals(Object other) { + return other instanceof Err && Objects.equals(error, ((Err) other).error); + } + + @Override + public int hashCode() { + return Objects.hash(error); + } + @Override public String toString() { return String.format("Result.Error{error=%s}", error); diff --git a/src/test/java/net/kemitix/mon/ResultTest.java b/src/test/java/net/kemitix/mon/ResultTest.java index 75ab5d1..0f28501 100644 --- a/src/test/java/net/kemitix/mon/ResultTest.java +++ b/src/test/java/net/kemitix/mon/ResultTest.java @@ -8,6 +8,16 @@ import org.junit.Test; public class ResultTest implements WithAssertions { + @Test + public void equality() { + assertThat(Result.ok(1)).isEqualTo(Result.ok(1)); + assertThat(Result.ok(1)).isNotEqualTo(Result.ok(2)); + final RuntimeException runtimeException = new RuntimeException(); + assertThat(Result.ok(1)).isNotEqualTo(Result.error(runtimeException)); + assertThat(Result.error(runtimeException)).isEqualTo(Result.error(runtimeException)); + assertThat(Result.ok(1).equals("1")).isFalse(); + } + @Test public void createSuccess_isSuccess() { //when