From 363a0ed8955314223dd44df1781dc05319b6a690 Mon Sep 17 00:00:00 2001 From: Lars Simon Winzer Date: Mon, 27 Apr 2026 01:04:45 +0200 Subject: [PATCH] Test: Add unit tests for CommandParserDispatcher --- .../parsing/CommandParserDispatcherTest.java | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 src/test/java/ch/unibas/dmi/dbis/cs108/casono/server/network/command/parsing/CommandParserDispatcherTest.java diff --git a/src/test/java/ch/unibas/dmi/dbis/cs108/casono/server/network/command/parsing/CommandParserDispatcherTest.java b/src/test/java/ch/unibas/dmi/dbis/cs108/casono/server/network/command/parsing/CommandParserDispatcherTest.java new file mode 100644 index 0000000..3754f14 --- /dev/null +++ b/src/test/java/ch/unibas/dmi/dbis/cs108/casono/server/network/command/parsing/CommandParserDispatcherTest.java @@ -0,0 +1,55 @@ +package ch.unibas.dmi.dbis.cs108.casono.server.network.command.parsing; + +import static org.junit.jupiter.api.Assertions.*; + +import ch.unibas.dmi.dbis.cs108.casono.server.network.protocol.request.PrimitiveRequest; +import ch.unibas.dmi.dbis.cs108.casono.server.network.protocol.request.Request; +import ch.unibas.dmi.dbis.cs108.casono.server.network.protocol.request.RequestContext; +import ch.unibas.dmi.dbis.cs108.casono.server.network.sessions.SessionId; +import java.util.List; +import java.util.UUID; +import org.junit.jupiter.api.Test; + +public class CommandParserDispatcherTest { + private class DummyRequest extends Request { + public DummyRequest(RequestContext context) { + super(context); + } + } + + @Test + void testSuccessfulParsing() { + CommandParserDispatcher dispatcher = new CommandParserDispatcher(); + + RequestContext ctx = new RequestContext(new SessionId(UUID.randomUUID()), 7411); + PrimitiveRequest primitiveRequest = new PrimitiveRequest(ctx, "TEST_CMD", List.of()); + + dispatcher.register( + "TEST_CMD", + new CommandParser() { + @Override + public Request parse(PrimitiveRequest primitiveRequest) { + return new DummyRequest(primitiveRequest.context()); + } + }); + + Request result = dispatcher.parse(primitiveRequest); + + assertTrue(result instanceof DummyRequest); + assertEquals(ctx, result.getContext()); + } + + @Test + void testUnknownCommandThrows() { + CommandParserDispatcher dispatcher = new CommandParserDispatcher(); + + RequestContext ctx = new RequestContext(new SessionId(UUID.randomUUID()), 42); + PrimitiveRequest primitiveRequest = new PrimitiveRequest(ctx, "UNKNOWN_CMD", List.of()); + + UnknownCommandException ex = + assertThrows( + UnknownCommandException.class, () -> dispatcher.parse(primitiveRequest)); + + assertEquals("UNKNOWN_CMD", ex.getMessage()); + } +} -- 2.52.0