aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--build.gradle6
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/chat/filters/AdFilter.java4
-rw-r--r--src/test/java/me/xmrvizzy/skyblocker/chat/ChatListenerTest.java35
-rw-r--r--src/test/java/me/xmrvizzy/skyblocker/chat/filters/AbilityFilterTest.java20
-rw-r--r--src/test/java/me/xmrvizzy/skyblocker/chat/filters/AdFilterTest.java50
-rw-r--r--src/test/java/me/xmrvizzy/skyblocker/chat/filters/AoteFilterTest.java15
-rw-r--r--src/test/java/me/xmrvizzy/skyblocker/chat/filters/HealFilterTest.java20
-rw-r--r--src/test/java/me/xmrvizzy/skyblocker/chat/filters/ImplosionFilterTest.java20
-rw-r--r--src/test/java/me/xmrvizzy/skyblocker/skyblock/dungeon/ThreeWeirdosTest.java19
-rw-r--r--src/test/java/me/xmrvizzy/skyblocker/skyblock/dungeon/TriviaTest.java33
-rw-r--r--src/test/java/me/xmrvizzy/skyblocker/skyblock/dwarven/FetchurTest.java17
-rw-r--r--src/test/java/me/xmrvizzy/skyblocker/skyblock/dwarven/PuzzlerTest.java15
13 files changed, 253 insertions, 2 deletions
diff --git a/.gitignore b/.gitignore
index 09cd281f..896dca7f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,6 +4,7 @@
build/
out/
classes/
+logs/
# eclipse
diff --git a/build.gradle b/build.gradle
index debb058d..4594368c 100644
--- a/build.gradle
+++ b/build.gradle
@@ -30,6 +30,8 @@ repositories {
dependencies {
implementation 'com.google.code.gson:gson:2.8.8'
+ testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
+ testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
// To change the versions see the gradle.properties file
minecraft "com.mojang:minecraft:${project.minecraft_version}"
mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2"
@@ -84,6 +86,10 @@ jar {
}
}
+test {
+ useJUnitPlatform()
+}
+
// configure the maven publication
publishing {
publications {
diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AdFilter.java b/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AdFilter.java
index a874da83..e772f098 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AdFilter.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AdFilter.java
@@ -21,10 +21,10 @@ public class AdFilter extends ChatListener {
StringBuilder sb = new StringBuilder("^§[67ab](?:\\[(?:MVP|VIP)(?:§[0-9a-f]\\+{1,2}§[6ab])?] )?([a-zA-Z0-9_]{2,16})§[7f]: ");
String[] inexact = new String[] {
"(?:on|in|check|at) my ah",
- "(?>(.)\\1{7,})",
+ "(?>(.)\\2{7,})",
};
String[] exact = new String[]{
- "(?:i(?:m|'m| am)? |(?:is )?any(?: ?one|1) )?(?:buy|sell|lowball|trade?)(?:ing)?(?:\\W.*|).*",
+ "(?:i(?:m|'m| am)? |(?:is )?any(?: ?one|1) )?(?:buy|sell|lowball|trade?)(?:ing)?(?:\\W|).*",
};
sb.append("(?i:.*(?:");
sb.append(inexact[0]);
diff --git a/src/test/java/me/xmrvizzy/skyblocker/chat/ChatListenerTest.java b/src/test/java/me/xmrvizzy/skyblocker/chat/ChatListenerTest.java
new file mode 100644
index 00000000..78574c74
--- /dev/null
+++ b/src/test/java/me/xmrvizzy/skyblocker/chat/ChatListenerTest.java
@@ -0,0 +1,35 @@
+package me.xmrvizzy.skyblocker.chat;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+public abstract class ChatListenerTest<T extends ChatListener> {
+ private final Pattern pattern;
+
+ public ChatListenerTest(T chatListener) {
+ pattern = chatListener.getPattern();
+ }
+
+ protected void assertMatches(String text) {
+ assertTrue(pattern.matcher(text).matches());
+ }
+
+ protected void assertNotMatches(String text) {
+ assertFalse(pattern.matcher(text).matches());
+ }
+
+ protected String[] getGroups(String text) {
+ Matcher matcher = pattern.matcher(text);
+ assertTrue(matcher.matches());
+ String[] groups = new String[matcher.groupCount() + 1];
+ for (int i = 0; i < groups.length; i++)
+ groups[i] = matcher.group(i);
+ return groups;
+ }
+
+ protected void assertGroup(String text, int group, String expect) {
+ assertEquals(getGroups(text)[group], expect);
+ }
+} \ No newline at end of file
diff --git a/src/test/java/me/xmrvizzy/skyblocker/chat/filters/AbilityFilterTest.java b/src/test/java/me/xmrvizzy/skyblocker/chat/filters/AbilityFilterTest.java
new file mode 100644
index 00000000..b8a5f9da
--- /dev/null
+++ b/src/test/java/me/xmrvizzy/skyblocker/chat/filters/AbilityFilterTest.java
@@ -0,0 +1,20 @@
+package me.xmrvizzy.skyblocker.chat.filters;
+
+import me.xmrvizzy.skyblocker.chat.ChatListenerTest;
+import org.junit.jupiter.api.Test;
+
+class AbilityFilterTest extends ChatListenerTest<AbilityFilter> {
+ public AbilityFilterTest() {
+ super(new AbilityFilter());
+ }
+
+ @Test
+ void charges() {
+ assertMatches("No more charges, next one in 13.2s!");
+ }
+
+ @Test
+ void cooldown() {
+ assertMatches("This ability is on cooldown for 42s.");
+ }
+} \ No newline at end of file
diff --git a/src/test/java/me/xmrvizzy/skyblocker/chat/filters/AdFilterTest.java b/src/test/java/me/xmrvizzy/skyblocker/chat/filters/AdFilterTest.java
new file mode 100644
index 00000000..54e1643d
--- /dev/null
+++ b/src/test/java/me/xmrvizzy/skyblocker/chat/filters/AdFilterTest.java
@@ -0,0 +1,50 @@
+package me.xmrvizzy.skyblocker.chat.filters;
+
+import me.xmrvizzy.skyblocker.chat.ChatListenerTest;
+import org.junit.jupiter.api.Test;
+
+class AdFilterTest extends ChatListenerTest<AdFilter> {
+ public AdFilterTest() {
+ super(new AdFilter());
+ }
+
+ @Test
+ void noRank() {
+ assertMatches("§7Advertiser§7: buy");
+ }
+
+ @Test
+ void vip() {
+ assertMatches("§a[VIP] Advertiser§f: buy");
+ }
+
+ @Test
+ void mvp() {
+ assertMatches("§b[MVP§c+§b] Advertiser§f: buy");
+ }
+
+ @Test
+ void plusPlus() {
+ assertMatches("§6[MVP§c++§6] Advertiser§f: buy");
+ }
+
+ @Test
+ void simpleAd() {
+ assertMatches("§b[MVP§c+§b] b2dderr§f: buying prismapump");
+ }
+
+ @Test
+ void uppercaseAd() {
+ assertMatches("§a[VIP] Tecnoisnoob§f: SELLING REJUVENATE 5 Book on ah!");
+ }
+
+ @Test
+ void characterSpam() {
+ assertMatches("§a[VIP] Benyyy_§f: Hey, Visit my Island, i spent lots of time to build it! I also made donate room! <<<<<<<<<<<<<<<<<<<");
+ }
+
+ @Test
+ void notAd() {
+ assertNotMatches("§a[VIP] NotMatching§f: This message shouldn't match!");
+ }
+} \ No newline at end of file
diff --git a/src/test/java/me/xmrvizzy/skyblocker/chat/filters/AoteFilterTest.java b/src/test/java/me/xmrvizzy/skyblocker/chat/filters/AoteFilterTest.java
new file mode 100644
index 00000000..52ab5fe9
--- /dev/null
+++ b/src/test/java/me/xmrvizzy/skyblocker/chat/filters/AoteFilterTest.java
@@ -0,0 +1,15 @@
+package me.xmrvizzy.skyblocker.chat.filters;
+
+import me.xmrvizzy.skyblocker.chat.ChatListenerTest;
+import org.junit.jupiter.api.Test;
+
+class AoteFilterTest extends ChatListenerTest<AoteFilter> {
+ public AoteFilterTest() {
+ super(new AoteFilter());
+ }
+
+ @Test
+ void testRegex() {
+ assertMatches("There are blocks in the way!");
+ }
+} \ No newline at end of file
diff --git a/src/test/java/me/xmrvizzy/skyblocker/chat/filters/HealFilterTest.java b/src/test/java/me/xmrvizzy/skyblocker/chat/filters/HealFilterTest.java
new file mode 100644
index 00000000..49ceadb3
--- /dev/null
+++ b/src/test/java/me/xmrvizzy/skyblocker/chat/filters/HealFilterTest.java
@@ -0,0 +1,20 @@
+package me.xmrvizzy.skyblocker.chat.filters;
+
+import me.xmrvizzy.skyblocker.chat.ChatListenerTest;
+import org.junit.jupiter.api.Test;
+
+class HealFilterTest extends ChatListenerTest<HealFilter> {
+ public HealFilterTest() {
+ super(new HealFilter());
+ }
+
+ @Test
+ void healSelf() {
+ assertMatches("You healed yourself for 18.3 health!");
+ }
+
+ @Test
+ void healedYou() {
+ assertMatches("H3aler_ healed you for 56 health!");
+ }
+} \ No newline at end of file
diff --git a/src/test/java/me/xmrvizzy/skyblocker/chat/filters/ImplosionFilterTest.java b/src/test/java/me/xmrvizzy/skyblocker/chat/filters/ImplosionFilterTest.java
new file mode 100644
index 00000000..8ee58564
--- /dev/null
+++ b/src/test/java/me/xmrvizzy/skyblocker/chat/filters/ImplosionFilterTest.java
@@ -0,0 +1,20 @@
+package me.xmrvizzy.skyblocker.chat.filters;
+
+import me.xmrvizzy.skyblocker.chat.ChatListenerTest;
+import org.junit.jupiter.api.Test;
+
+class ImplosionFilterTest extends ChatListenerTest<ImplosionFilter> {
+ public ImplosionFilterTest() {
+ super(new ImplosionFilter());
+ }
+
+ @Test
+ void oneEnemy() {
+ assertMatches("Your Implosion hit 1 enemy for 636,116.8 damage.");
+ }
+
+ @Test
+ void multipleEnemies() {
+ assertMatches("Your Implosion hit 7 enemies for 4,452,817.4 damage.");
+ }
+} \ No newline at end of file
diff --git a/src/test/java/me/xmrvizzy/skyblocker/skyblock/dungeon/ThreeWeirdosTest.java b/src/test/java/me/xmrvizzy/skyblocker/skyblock/dungeon/ThreeWeirdosTest.java
new file mode 100644
index 00000000..18c638c7
--- /dev/null
+++ b/src/test/java/me/xmrvizzy/skyblocker/skyblock/dungeon/ThreeWeirdosTest.java
@@ -0,0 +1,19 @@
+package me.xmrvizzy.skyblocker.skyblock.dungeon;
+
+import me.xmrvizzy.skyblocker.chat.ChatListenerTest;
+import org.junit.jupiter.api.Test;
+
+class ThreeWeirdosTest extends ChatListenerTest<ThreeWeirdos> {
+ public ThreeWeirdosTest() {
+ super(new ThreeWeirdos());
+ }
+
+ @Test
+ void test1() {
+ assertGroup("§e[NPC] §cBaxter§f: My chest doesn't have the reward. We are all telling the truth.", 1, "Baxter");
+ }
+ @Test
+ void test2() {
+ assertGroup("§e[NPC] §cHope§f: The reward isn't in any of our chests.", 1, "Hope");
+ }
+} \ No newline at end of file
diff --git a/src/test/java/me/xmrvizzy/skyblocker/skyblock/dungeon/TriviaTest.java b/src/test/java/me/xmrvizzy/skyblocker/skyblock/dungeon/TriviaTest.java
new file mode 100644
index 00000000..6f7950e3
--- /dev/null
+++ b/src/test/java/me/xmrvizzy/skyblocker/skyblock/dungeon/TriviaTest.java
@@ -0,0 +1,33 @@
+package me.xmrvizzy.skyblocker.skyblock.dungeon;
+
+import me.xmrvizzy.skyblocker.chat.ChatListenerTest;
+import org.junit.jupiter.api.Test;
+
+class TriviaTest extends ChatListenerTest<Trivia> {
+ public TriviaTest() {
+ super(new Trivia());
+ }
+
+ @Test
+ void anyQuestion1() {
+ assertGroup(" What is the first question?", 1, "What is the first question?");
+ }
+
+ @Test
+ void anyQestion2() {
+ assertGroup(" How many questions are there?", 1, "How many questions are there?");
+ }
+
+ @Test
+ void answer1() {
+ assertGroup(" §6 ⓐ §aAnswer 1", 3, "Answer 1");
+ }
+ @Test
+ void answer2() {
+ assertGroup(" §6 ⓑ §aAnswer 2", 3, "Answer 2");
+ }
+ @Test
+ void answer3() {
+ assertGroup(" §6 ⓒ §aAnswer 3", 3, "Answer 3");
+ }
+} \ No newline at end of file
diff --git a/src/test/java/me/xmrvizzy/skyblocker/skyblock/dwarven/FetchurTest.java b/src/test/java/me/xmrvizzy/skyblocker/skyblock/dwarven/FetchurTest.java
new file mode 100644
index 00000000..35b8ab58
--- /dev/null
+++ b/src/test/java/me/xmrvizzy/skyblocker/skyblock/dwarven/FetchurTest.java
@@ -0,0 +1,17 @@
+package me.xmrvizzy.skyblocker.skyblock.dwarven;
+
+import me.xmrvizzy.skyblocker.chat.ChatListenerTest;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+class FetchurTest extends ChatListenerTest<Fetchur> {
+ public FetchurTest() {
+ super(new Fetchur());
+ }
+
+ @Test
+ public void patternCaptures() {
+ assertGroup("§e[NPC] Fetchur§f: its a hint", 1, "a hint");
+ }
+}
diff --git a/src/test/java/me/xmrvizzy/skyblocker/skyblock/dwarven/PuzzlerTest.java b/src/test/java/me/xmrvizzy/skyblocker/skyblock/dwarven/PuzzlerTest.java
new file mode 100644
index 00000000..ab2878ef
--- /dev/null
+++ b/src/test/java/me/xmrvizzy/skyblocker/skyblock/dwarven/PuzzlerTest.java
@@ -0,0 +1,15 @@
+package me.xmrvizzy.skyblocker.skyblock.dwarven;
+
+import me.xmrvizzy.skyblocker.chat.ChatListenerTest;
+import org.junit.jupiter.api.Test;
+
+class PuzzlerTest extends ChatListenerTest<Puzzler> {
+ public PuzzlerTest() {
+ super(new Puzzler());
+ }
+
+ @Test
+ void puzzler() {
+ assertGroup("§e[NPC] §dPuzzler§f: §b◀§d▲§b◀§d▲§d▲§5▶§5▶§b◀§d▲§a▼", 1, "§b◀§d▲§b◀§d▲§d▲§5▶§5▶§b◀§d▲§a▼");
+ }
+} \ No newline at end of file