From 823b406fe625ef6e7870e75d590e69545001456f Mon Sep 17 00:00:00 2001 From: Lars Simon Winzer Date: Mon, 27 Apr 2026 00:41:17 +0200 Subject: [PATCH] Test: Add unit tests for EventBus --- .../server/network/events/EventBusTest.java | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 src/test/java/ch/unibas/dmi/dbis/cs108/casono/server/network/events/EventBusTest.java diff --git a/src/test/java/ch/unibas/dmi/dbis/cs108/casono/server/network/events/EventBusTest.java b/src/test/java/ch/unibas/dmi/dbis/cs108/casono/server/network/events/EventBusTest.java new file mode 100644 index 0000000..afdc9af --- /dev/null +++ b/src/test/java/ch/unibas/dmi/dbis/cs108/casono/server/network/events/EventBusTest.java @@ -0,0 +1,49 @@ +package ch.unibas.dmi.dbis.cs108.casono.server.network.events; + +import static org.junit.jupiter.api.Assertions.*; + +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicInteger; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class EventBusTest { + private EventBus eventBus; + + @BeforeEach + void setUp() { + eventBus = new EventBus(); + } + + static class TestEvent implements Event {} + + @Test + void singleSubscriberReceivesEvent() { + AtomicBoolean called = new AtomicBoolean(false); + eventBus.subscribe(TestEvent.class, e -> called.set(true)); + eventBus.publish(new TestEvent()); + assertTrue(called.get()); + } + + @Test + void multipleSubscribersReceiveEvent() { + AtomicInteger counter = new AtomicInteger(0); + eventBus.subscribe(TestEvent.class, e -> counter.incrementAndGet()); + eventBus.subscribe(TestEvent.class, e -> counter.incrementAndGet()); + eventBus.publish(new TestEvent()); + assertEquals(2, counter.get()); + } + + @Test + void publishNullThrowsNpe() { + assertThrows(NullPointerException.class, () -> eventBus.publish((Event) null)); + } + + @Test + void subscribingToBaseEventDoesNotReceiveSubclass() { + AtomicBoolean called = new AtomicBoolean(false); + eventBus.subscribe(Event.class, e -> called.set(true)); + eventBus.publish(new TestEvent()); + assertFalse(called.get()); + } +}