From a7e4411cd06c8e9e56d14fe087707f1de3913cc6 Mon Sep 17 00:00:00 2001 From: Lars Simon Winzer Date: Sun, 26 Apr 2026 17:13:11 +0200 Subject: [PATCH] Test: Add unit tests for RequestParameterAccessor --- .../RequestParameterAccessorTest.java | 115 ++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 src/test/java/ch/unibas/dmi/dbis/cs108/casono/server/network/protocol/request/accessor/RequestParameterAccessorTest.java diff --git a/src/test/java/ch/unibas/dmi/dbis/cs108/casono/server/network/protocol/request/accessor/RequestParameterAccessorTest.java b/src/test/java/ch/unibas/dmi/dbis/cs108/casono/server/network/protocol/request/accessor/RequestParameterAccessorTest.java new file mode 100644 index 0000000..e290293 --- /dev/null +++ b/src/test/java/ch/unibas/dmi/dbis/cs108/casono/server/network/protocol/request/accessor/RequestParameterAccessorTest.java @@ -0,0 +1,115 @@ +package ch.unibas.dmi.dbis.cs108.casono.server.network.protocol.request.accessor; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import ch.unibas.dmi.dbis.cs108.casono.server.network.command.parsing.RequestParameter; +import java.util.List; +import org.junit.jupiter.api.Test; + +public class RequestParameterAccessorTest { + @Test + void testRequiredParameterPresent() { + List parameters = List.of(new RequestParameter("ARG1", "VAL1")); + RequestParameterAccessor accessor = new RequestParameterAccessor(parameters); + + assertEquals("VAL1", accessor.require("ARG1")); + } + + @Test + void testMissingRequiredParameterThrows() { + List parameters = List.of(); + RequestParameterAccessor accessor = new RequestParameterAccessor(parameters); + + MissingParameterException ex = + assertThrows(MissingParameterException.class, () -> accessor.require("ARG1")); + assertEquals("Required parameter with key 'ARG1' is missing.", ex.getMessage()); + assertEquals("ARG1", ex.getParameterKey()); + } + + @Test + void testRequiredParameterSuccessfulParsing() { + List parameters = List.of(new RequestParameter("ARG1", "42")); + RequestParameterAccessor accessor = new RequestParameterAccessor(parameters); + + assertEquals(42, (int) accessor.require("ARG1", Integer::valueOf)); + } + + @Test + void testRequiredParameterInvalidParsingThrows() { + List parameters = + List.of(new RequestParameter("ARG1", "The answer is: 42")); + RequestParameterAccessor accessor = new RequestParameterAccessor(parameters); + + ParameterParseException ex = + assertThrows( + ParameterParseException.class, + () -> accessor.require("ARG1", Integer::valueOf)); + assertEquals("Error while parsing 'ARG1' with specified parser", ex.getMessage()); + assertEquals("ARG1", ex.getParameterKey()); + } + + @Test + void testOptionalParameterPresent() { + List parameters = List.of(new RequestParameter("ARG1", "VAL1")); + RequestParameterAccessor accessor = new RequestParameterAccessor(parameters); + + assertEquals("VAL1", accessor.optional("ARG1", "DEFAULT")); + } + + @Test + void testOptionalParameterMissing() { + List parameters = List.of(); + RequestParameterAccessor accessor = new RequestParameterAccessor(parameters); + + assertEquals("DEFAULT", accessor.optional("ARG1", "DEFAULT")); + } + + @Test + void testOptionalParameterSuccessfulParsing() { + List parameters = List.of(new RequestParameter("ARG1", "42")); + RequestParameterAccessor accessor = new RequestParameterAccessor(parameters); + + assertEquals(42, (int) accessor.optional("ARG1", 7411, Integer::valueOf)); + } + + @Test + void testMissingOptionalParameterSuccessfulParsing() { + List parameters = List.of(); + RequestParameterAccessor accessor = new RequestParameterAccessor(parameters); + + assertEquals(7411, (int) accessor.optional("ARG1", 7411, Integer::valueOf)); + } + + @Test + void testOptionalParameterInvalidParsingThrows() { + List parameters = + List.of(new RequestParameter("ARG1", "The answer is: 42")); + RequestParameterAccessor accessor = new RequestParameterAccessor(parameters); + + ParameterParseException ex = + assertThrows( + ParameterParseException.class, + () -> accessor.optional("ARG1", 7411, Integer::valueOf)); + assertEquals("Error while parsing 'ARG1' with specified parser", ex.getMessage()); + assertEquals("ARG1", ex.getParameterKey()); + } + + @Test + void testContainsExistingKey() { + List parameters = List.of(new RequestParameter("ARG1", "VAL1")); + RequestParameterAccessor accessor = new RequestParameterAccessor(parameters); + + assertTrue(accessor.containsKey("ARG1")); + } + + @Test + void testContainsMissingKey() { + List parameters = List.of(); + RequestParameterAccessor accessor = new RequestParameterAccessor(parameters); + + assertFalse(accessor.containsKey("ARG1")); + } +} -- 2.52.0