From 2fd6595b73e25efd2aab66d81d93259877d05fc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Brage=20Skj=C3=B8nborg?= Date: Thu, 1 Jan 2026 20:36:37 +0100 Subject: [PATCH] Added missing files --- .../kotlin/no/iktdev/eventi/Annotation.kt | 5 ++ .../events/EventListenerRegistryTest.kt | 61 +++++++++++++ .../eventi/tasks/TaskListenerRegistryTest.kt | 90 +++++++++++++++++++ 3 files changed, 156 insertions(+) create mode 100644 src/main/kotlin/no/iktdev/eventi/Annotation.kt create mode 100644 src/test/kotlin/no/iktdev/eventi/events/EventListenerRegistryTest.kt create mode 100644 src/test/kotlin/no/iktdev/eventi/tasks/TaskListenerRegistryTest.kt diff --git a/src/main/kotlin/no/iktdev/eventi/Annotation.kt b/src/main/kotlin/no/iktdev/eventi/Annotation.kt new file mode 100644 index 0000000..86da2e3 --- /dev/null +++ b/src/main/kotlin/no/iktdev/eventi/Annotation.kt @@ -0,0 +1,5 @@ +package no.iktdev.eventi + +@Target(AnnotationTarget.CLASS) +@Retention(AnnotationRetention.RUNTIME) +annotation class ListenerOrder(val value: Int) diff --git a/src/test/kotlin/no/iktdev/eventi/events/EventListenerRegistryTest.kt b/src/test/kotlin/no/iktdev/eventi/events/EventListenerRegistryTest.kt new file mode 100644 index 0000000..b166910 --- /dev/null +++ b/src/test/kotlin/no/iktdev/eventi/events/EventListenerRegistryTest.kt @@ -0,0 +1,61 @@ +package no.iktdev.eventi.events + +import no.iktdev.eventi.ListenerOrder +import no.iktdev.eventi.models.Event +import no.iktdev.eventi.testUtil.wipe +import org.assertj.core.api.Assertions.assertThat +import org.junit.jupiter.api.Assertions.* +import org.junit.jupiter.api.BeforeEach +import org.junit.jupiter.api.Test + +class EventListenerRegistryTest { + + @ListenerOrder(1) + class MockTest1() : EventListener() { + override fun onEvent(event: Event, history: List): Event? { + return null + } + } + + @ListenerOrder(2) + class MockTest2() : EventListener() { + override fun onEvent(event: Event, history: List): Event? { + return null + } + } + + @ListenerOrder(3) + class MockTest3() : EventListener() { + override fun onEvent(event: Event, history: List): Event? { + return null + } + } + + class MockTestRandom() : EventListener() { + override fun onEvent(event: Event, history: List): Event? { + return null + } + } + + @BeforeEach + fun clear() { + EventListenerRegistry.wipe() + } + + @Test + fun validateOrder() { + MockTestRandom() + MockTest1() + MockTest2() + MockTest3() + val listeners = EventListenerRegistry.getListeners() + // Assert + assertThat(listeners.map { it::class.simpleName }).containsExactly( + MockTest1::class.simpleName, // @ListenerOrder(1) + MockTest2::class.simpleName, // @ListenerOrder(2) + MockTest3::class.simpleName, // @ListenerOrder(3) + MockTestRandom::class.simpleName // no annotation → goes last + ) + } + +} \ No newline at end of file diff --git a/src/test/kotlin/no/iktdev/eventi/tasks/TaskListenerRegistryTest.kt b/src/test/kotlin/no/iktdev/eventi/tasks/TaskListenerRegistryTest.kt new file mode 100644 index 0000000..dfadac7 --- /dev/null +++ b/src/test/kotlin/no/iktdev/eventi/tasks/TaskListenerRegistryTest.kt @@ -0,0 +1,90 @@ +package no.iktdev.eventi.tasks + +import no.iktdev.eventi.ListenerOrder +import no.iktdev.eventi.events.EventListener +import no.iktdev.eventi.events.EventListenerRegistry +import no.iktdev.eventi.models.Event +import no.iktdev.eventi.models.Task +import no.iktdev.eventi.testUtil.wipe +import org.assertj.core.api.Assertions.assertThat +import org.junit.jupiter.api.Assertions.* +import org.junit.jupiter.api.BeforeEach +import org.junit.jupiter.api.Test + +class TaskListenerRegistryTest { + + + @ListenerOrder(1) + class MockTest1() : TaskListener() { + override fun getWorkerId(): String { + TODO("Not yet implemented") + } + override fun supports(task: Task): Boolean { + TODO("Not yet implemented") + } + override suspend fun onTask(task: Task): Event? { + TODO("Not yet implemented") + } + } + + @ListenerOrder(2) + class MockTest2() : TaskListener() { + override fun getWorkerId(): String { + TODO("Not yet implemented") + } + override fun supports(task: Task): Boolean { + TODO("Not yet implemented") + } + override suspend fun onTask(task: Task): Event? { + TODO("Not yet implemented") + } + } + + @ListenerOrder(3) + class MockTest3() : TaskListener() { + override fun getWorkerId(): String { + TODO("Not yet implemented") + } + override fun supports(task: Task): Boolean { + TODO("Not yet implemented") + } + override suspend fun onTask(task: Task): Event? { + TODO("Not yet implemented") + } + } + + class MockTestRandom() : TaskListener() { + override fun getWorkerId(): String { + TODO("Not yet implemented") + } + override fun supports(task: Task): Boolean { + TODO("Not yet implemented") + } + override suspend fun onTask(task: Task): Event? { + TODO("Not yet implemented") + } + } + + @BeforeEach + fun clear() { + TaskListenerRegistry.wipe() + } + + @Test + fun validateOrder() { + MockTestRandom() + MockTest1() + MockTest2() + MockTest3() + val listeners = TaskListenerRegistry.getListeners() + // Assert + assertThat(listeners.map { it::class.simpleName }).containsExactly( + MockTest1::class.simpleName, // @ListenerOrder(1) + MockTest2::class.simpleName, // @ListenerOrder(2) + MockTest3::class.simpleName, // @ListenerOrder(3) + MockTestRandom::class.simpleName // no annotation → goes last + ) + } + + +} \ No newline at end of file