From 7998bc7761cc45723b75c323cc625fde3549072b Mon Sep 17 00:00:00 2001 From: Marco Cetica Date: Tue, 17 Sep 2024 11:00:21 +0200 Subject: [PATCH] Added match method and unit tests --- pom.xml | 8 +++++++ src/main/java/com/ceticamarco/Left.java | 18 ---------------- src/main/java/com/ceticamarco/Right.java | 10 --------- .../ceticamarco/{ => lambdatonic}/Either.java | 2 +- .../com/ceticamarco/lambdatonic/Left.java | 19 +++++++++++++++++ .../com/ceticamarco/lambdatonic/Right.java | 19 +++++++++++++++++ .../ceticamarco/lambdatonic/LeftTests.java | 21 +++++++++++++++++++ .../ceticamarco/lambdatonic/RightTests.java | 21 +++++++++++++++++++ 8 files changed, 89 insertions(+), 29 deletions(-) delete mode 100644 src/main/java/com/ceticamarco/Left.java delete mode 100644 src/main/java/com/ceticamarco/Right.java rename src/main/java/com/ceticamarco/{ => lambdatonic}/Either.java (93%) create mode 100644 src/main/java/com/ceticamarco/lambdatonic/Left.java create mode 100644 src/main/java/com/ceticamarco/lambdatonic/Right.java create mode 100644 src/test/java/com/ceticamarco/lambdatonic/LeftTests.java create mode 100644 src/test/java/com/ceticamarco/lambdatonic/RightTests.java diff --git a/pom.xml b/pom.xml index edf9b6b..ed086bf 100644 --- a/pom.xml +++ b/pom.xml @@ -13,5 +13,13 @@ 22 UTF-8 + + + junit + junit + RELEASE + test + + \ No newline at end of file diff --git a/src/main/java/com/ceticamarco/Left.java b/src/main/java/com/ceticamarco/Left.java deleted file mode 100644 index 51ec3d7..0000000 --- a/src/main/java/com/ceticamarco/Left.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.ceticamarco; - -import java.util.function.Function; - -/** - *

- * - *

- * @param value - * @param - * @param - */ -public record Left(L value) implements Either { - @Override - public T match(Function onLeft, Function onRight) { - return onLeft.apply(this.value); - } -} \ No newline at end of file diff --git a/src/main/java/com/ceticamarco/Right.java b/src/main/java/com/ceticamarco/Right.java deleted file mode 100644 index 6aee839..0000000 --- a/src/main/java/com/ceticamarco/Right.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.ceticamarco; - -import java.util.function.Function; - -public record Right(R value) implements Either { - @Override - public T match(Function onLeft, Function onRight) { - return onRight.apply(this.value); - } -} \ No newline at end of file diff --git a/src/main/java/com/ceticamarco/Either.java b/src/main/java/com/ceticamarco/lambdatonic/Either.java similarity index 93% rename from src/main/java/com/ceticamarco/Either.java rename to src/main/java/com/ceticamarco/lambdatonic/Either.java index 565e7ad..a1df4f7 100644 --- a/src/main/java/com/ceticamarco/Either.java +++ b/src/main/java/com/ceticamarco/lambdatonic/Either.java @@ -1,4 +1,4 @@ -package com.ceticamarco; +package com.ceticamarco.lambdatonic; import java.util.function.Function; diff --git a/src/main/java/com/ceticamarco/lambdatonic/Left.java b/src/main/java/com/ceticamarco/lambdatonic/Left.java new file mode 100644 index 0000000..72eba3b --- /dev/null +++ b/src/main/java/com/ceticamarco/lambdatonic/Left.java @@ -0,0 +1,19 @@ +package com.ceticamarco.lambdatonic; + +import java.util.function.Function; + +/** + *

+ * Subtype of the Either protocol. + * This class sets the left value of the Either type + *

+ * @param value The left value of the Either type + * @param The left type, representing the error value + * @param The right type, representing the actual value + */ +public record Left(L value) implements Either { + @Override + public T match(Function onLeft, Function onRight) { + return onLeft.apply(this.value); + } +} \ No newline at end of file diff --git a/src/main/java/com/ceticamarco/lambdatonic/Right.java b/src/main/java/com/ceticamarco/lambdatonic/Right.java new file mode 100644 index 0000000..288f07d --- /dev/null +++ b/src/main/java/com/ceticamarco/lambdatonic/Right.java @@ -0,0 +1,19 @@ +package com.ceticamarco.lambdatonic; + +import java.util.function.Function; + +/** + *

+ * Subtype of the Either protocol. + * This class sets the right value of the either type + *

+ * @param value The right value of the Either type + * @param The left type, representing the error value + * @param The right type, representing the actual value + */ +public record Right(R value) implements Either { + @Override + public T match(Function onLeft, Function onRight) { + return onRight.apply(this.value); + } +} \ No newline at end of file diff --git a/src/test/java/com/ceticamarco/lambdatonic/LeftTests.java b/src/test/java/com/ceticamarco/lambdatonic/LeftTests.java new file mode 100644 index 0000000..64afce1 --- /dev/null +++ b/src/test/java/com/ceticamarco/lambdatonic/LeftTests.java @@ -0,0 +1,21 @@ +package com.ceticamarco.lambdatonic; + +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class LeftTests { + @Test + public void testMatchLeft() { + Either resEither = new Left<>(19); + + var actual = resEither.match( + errorCode -> "Error code: " + errorCode.toString(), + successMsg -> successMsg + ); + + var expected = "Error code: 19"; + + assertEquals(expected, actual); + } +} diff --git a/src/test/java/com/ceticamarco/lambdatonic/RightTests.java b/src/test/java/com/ceticamarco/lambdatonic/RightTests.java new file mode 100644 index 0000000..743fcb0 --- /dev/null +++ b/src/test/java/com/ceticamarco/lambdatonic/RightTests.java @@ -0,0 +1,21 @@ +package com.ceticamarco.lambdatonic; + +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class RightTests { + @Test + public void testMatchRight() { + Either resEither = new Right<>("Query executed successfully"); + + var actual = resEither.match( + errorCode -> "Error code: " + errorCode.toString(), + successMsg -> successMsg + ); + + var expected = "Query executed successfully"; + + assertEquals(expected, actual); + } +}