aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/de/hysky/skyblocker/utils
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java/de/hysky/skyblocker/utils')
-rw-r--r--src/test/java/de/hysky/skyblocker/utils/chat/ChatPatternListenerTest.java28
-rw-r--r--src/test/java/de/hysky/skyblocker/utils/scheduler/SchedulerTest.java88
2 files changed, 116 insertions, 0 deletions
diff --git a/src/test/java/de/hysky/skyblocker/utils/chat/ChatPatternListenerTest.java b/src/test/java/de/hysky/skyblocker/utils/chat/ChatPatternListenerTest.java
new file mode 100644
index 00000000..8b670cbb
--- /dev/null
+++ b/src/test/java/de/hysky/skyblocker/utils/chat/ChatPatternListenerTest.java
@@ -0,0 +1,28 @@
+package de.hysky.skyblocker.utils.chat;
+
+import java.util.regex.Matcher;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+public abstract class ChatPatternListenerTest<T extends ChatPatternListener> {
+ protected final T listener;
+
+ public ChatPatternListenerTest(T listener) {
+ this.listener = listener;
+ }
+
+ protected Matcher matcher(String message) {
+ return listener.pattern.matcher(message);
+ }
+
+ protected void assertMatches(String message) {
+ assertTrue(matcher(message).matches());
+ }
+
+ protected void assertGroup(String message, int group, String expect) {
+ Matcher matcher = matcher(message);
+ assertTrue(matcher.matches());
+ assertEquals(expect, matcher.group(group));
+ }
+} \ No newline at end of file
diff --git a/src/test/java/de/hysky/skyblocker/utils/scheduler/SchedulerTest.java b/src/test/java/de/hysky/skyblocker/utils/scheduler/SchedulerTest.java
new file mode 100644
index 00000000..429273ac
--- /dev/null
+++ b/src/test/java/de/hysky/skyblocker/utils/scheduler/SchedulerTest.java
@@ -0,0 +1,88 @@
+package de.hysky.skyblocker.utils.scheduler;
+
+import org.apache.commons.lang3.mutable.MutableInt;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+public class SchedulerTest {
+ private final MutableInt currentTick = new MutableInt(0);
+ private final MutableInt cycleCount1 = new MutableInt(0);
+ private final MutableInt cycleCount2 = new MutableInt(0);
+ private final MutableInt cycleCount3 = new MutableInt(0);
+ private final MutableInt cycleCount4 = new MutableInt(0);
+ private final MutableInt cycleCount5 = new MutableInt(0);
+ private final MutableInt cycleCount6 = new MutableInt(0);
+ private final MutableInt cycleCount7 = new MutableInt(0);
+ private final MutableInt cycleCount8 = new MutableInt(0);
+
+ @Test
+ public void testSchedule() {
+ Scheduler.INSTANCE.schedule(() -> Assertions.assertEquals(0, currentTick.intValue()), 0);
+ Scheduler.INSTANCE.schedule(() -> Assertions.assertEquals(1, currentTick.intValue()), 1);
+ Scheduler.INSTANCE.schedule(() -> Assertions.assertEquals(2, currentTick.intValue()), 2);
+ Scheduler.INSTANCE.schedule(() -> Assertions.assertEquals(10, currentTick.intValue()), 10);
+ Scheduler.INSTANCE.schedule(() -> Assertions.assertEquals(20, currentTick.intValue()), 20);
+ Scheduler.INSTANCE.schedule(() -> Assertions.assertEquals(50, currentTick.intValue()), 50);
+ Scheduler.INSTANCE.schedule(() -> Assertions.assertEquals(100, currentTick.intValue()), 100);
+ Scheduler.INSTANCE.schedule(() -> Assertions.assertEquals(123, currentTick.intValue()), 123);
+ Scheduler.INSTANCE.scheduleCyclic(() -> {}, 1);
+ Scheduler.INSTANCE.scheduleCyclic(() -> {}, 1);
+ Scheduler.INSTANCE.scheduleCyclic(() -> {}, 1);
+ Scheduler.INSTANCE.scheduleCyclic(() -> {}, 1);
+ Scheduler.INSTANCE.scheduleCyclic(() -> {
+ Assertions.assertEquals(cycleCount1.intValue(), currentTick.intValue());
+ cycleCount1.increment();
+ }, 1);
+ Scheduler.INSTANCE.scheduleCyclic(() -> {
+ Assertions.assertEquals(0, currentTick.intValue() % 10);
+ Assertions.assertEquals(cycleCount2.intValue(), currentTick.intValue() / 10);
+ cycleCount2.increment();
+ }, 10);
+ Scheduler.INSTANCE.scheduleCyclic(() -> {
+ Assertions.assertEquals(0, currentTick.intValue() % 55);
+ Assertions.assertEquals(cycleCount3.intValue(), currentTick.intValue() / 55);
+ cycleCount3.increment();
+ }, 55);
+ Scheduler.INSTANCE.schedule(() -> Scheduler.INSTANCE.scheduleCyclic(() -> {
+ Assertions.assertEquals(7, currentTick.intValue() % 10);
+ Assertions.assertEquals(cycleCount4.intValue(), currentTick.intValue() / 10);
+ cycleCount4.increment();
+ }, 10), 7);
+ Scheduler.INSTANCE.schedule(() -> Scheduler.INSTANCE.scheduleCyclic(() -> {
+ Assertions.assertEquals(0, currentTick.intValue() % 75);
+ Assertions.assertEquals(cycleCount5.intValue(), currentTick.intValue() / 75);
+ cycleCount5.increment();
+ }, 75), 0);
+ Scheduler.INSTANCE.schedule(() -> Scheduler.INSTANCE.scheduleCyclic(() -> {
+ Assertions.assertEquals(1, currentTick.intValue() % 99);
+ Assertions.assertEquals(cycleCount6.intValue(), currentTick.intValue() / 99);
+ cycleCount6.increment();
+ }, 99), 1);
+ Scheduler.INSTANCE.scheduleCyclic(() -> Scheduler.INSTANCE.schedule(() -> {
+ Assertions.assertEquals(5, currentTick.intValue() % 10);
+ Assertions.assertEquals(cycleCount7.intValue(), currentTick.intValue() / 10);
+ cycleCount7.increment();
+ }, 5), 10);
+ Scheduler.INSTANCE.scheduleCyclic(() -> Scheduler.INSTANCE.schedule(() -> {
+ Assertions.assertEquals(10, currentTick.intValue() % 55);
+ Assertions.assertEquals(cycleCount8.intValue(), currentTick.intValue() / 55);
+ cycleCount8.increment();
+ }, 10), 55);
+ while (currentTick.intValue() < 100_000) {
+ tick();
+ }
+ Assertions.assertEquals(100000, cycleCount1.intValue());
+ Assertions.assertEquals(10000, cycleCount2.intValue());
+ Assertions.assertEquals(1819, cycleCount3.intValue());
+ Assertions.assertEquals(10000, cycleCount4.intValue());
+ Assertions.assertEquals(1334, cycleCount5.intValue());
+ Assertions.assertEquals(1011, cycleCount6.intValue());
+ Assertions.assertEquals(10000, cycleCount7.intValue());
+ Assertions.assertEquals(1818, cycleCount8.intValue());
+ }
+
+ private void tick() {
+ Scheduler.INSTANCE.tick();
+ currentTick.increment();
+ }
+}