From d19c25d5d58944d03011a99ff2dbeaaa29e416d2 Mon Sep 17 00:00:00 2001 From: Linnea Gräf Date: Thu, 14 Nov 2024 02:23:01 +0100 Subject: Add re-encode tests --- src/main/java/moe/nea/pcj/Result.java | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'src/main/java/moe/nea') diff --git a/src/main/java/moe/nea/pcj/Result.java b/src/main/java/moe/nea/pcj/Result.java index e43633b..22c94f9 100644 --- a/src/main/java/moe/nea/pcj/Result.java +++ b/src/main/java/moe/nea/pcj/Result.java @@ -5,6 +5,7 @@ import org.jspecify.annotations.Nullable; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Objects; import java.util.Optional; import java.util.function.Function; @@ -40,6 +41,7 @@ public sealed interface Result permits Result.Ok, Result.Fail { record Ok(Good okValue) implements Result { @Override public Result appendErrors(List errors) { + if (errors.isEmpty()) return new Ok<>(okValue); return new Fail<>(okValue, errors); } @@ -67,6 +69,20 @@ public sealed interface Result permits Result.Ok, Result.Fail { public Optional value() { return Optional.of(okValue); } + + @Override + public int hashCode() { + return Objects.hash(okValue); + } + + @Override + public boolean equals(Object obj) { + if (obj == this) return true; + if (obj instanceof Result.Ok ok) { + return Objects.equals(ok.okValue, this.okValue); + } + return false; + } } record Fail(@Nullable Good partialValue, List badValue) implements Result { @@ -75,6 +91,20 @@ public sealed interface Result permits Result.Ok, Result.Fail { throw new IllegalArgumentException("Cannot create failure without any error values"); } + @Override + public boolean equals(Object obj) { + if (this == obj) return true; + if (obj instanceof Result.Fail fail) { + return Objects.equals(partialValue, fail.partialValue) && badValue.equals(fail.badValue); + } + return false; + } + + @Override + public int hashCode() { + return Objects.hash(partialValue, badValue); + } + @Override public Optional value() { return Optional.empty(); -- cgit