diff options
13 files changed, 253 insertions, 2 deletions
@@ -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 |