diff --git a/util/src/main/kotlin/org/openrs2/util/collect/UniqueQueue.kt b/util/src/main/kotlin/org/openrs2/util/collect/UniqueQueue.kt index 85ab246b..d6f4e87f 100644 --- a/util/src/main/kotlin/org/openrs2/util/collect/UniqueQueue.kt +++ b/util/src/main/kotlin/org/openrs2/util/collect/UniqueQueue.kt @@ -13,6 +13,20 @@ public class UniqueQueue { return false } + public operator fun plusAssign(v: T) { + add(v) + } + + public fun addAll(vs: Iterable) { + for (v in vs) { + add(v) + } + } + + public operator fun plusAssign(vs: Iterable) { + addAll(vs) + } + public fun poll(): T? { val v = queue.removeFirstOrNull() if (v != null) { @@ -22,4 +36,9 @@ public class UniqueQueue { return null } + + public fun clear() { + queue.clear() + set.clear() + } } diff --git a/util/src/test/kotlin/org/openrs2/util/collect/UniqueQueueTest.kt b/util/src/test/kotlin/org/openrs2/util/collect/UniqueQueueTest.kt index 09302967..535699c3 100644 --- a/util/src/test/kotlin/org/openrs2/util/collect/UniqueQueueTest.kt +++ b/util/src/test/kotlin/org/openrs2/util/collect/UniqueQueueTest.kt @@ -18,4 +18,24 @@ class UniqueQueueTest { assertEquals("b", queue.poll()) assertNull(queue.poll()) } + + @Test + fun testAddAll() { + val queue = UniqueQueue() + queue.addAll(listOf("a", "b", "a")) + + assertEquals("a", queue.poll()) + assertEquals("b", queue.poll()) + assertNull(queue.poll()) + } + + @Test + fun testClear() { + val queue = UniqueQueue() + assertTrue(queue.add("a")) + + queue.clear() + + assertNull(queue.poll()) + } }