aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/chat/filters/AdFilter.java38
-rw-r--r--src/test/java/me/xmrvizzy/skyblocker/chat/ChatListenerTest.java27
-rw-r--r--src/test/java/me/xmrvizzy/skyblocker/chat/filters/AbilityFilterTest.java6
-rw-r--r--src/test/java/me/xmrvizzy/skyblocker/chat/filters/AdFilterTest.java23
-rw-r--r--src/test/java/me/xmrvizzy/skyblocker/chat/filters/AoteFilterTest.java4
-rw-r--r--src/test/java/me/xmrvizzy/skyblocker/chat/filters/ChatFilterTest.java26
-rw-r--r--src/test/java/me/xmrvizzy/skyblocker/chat/filters/HealFilterTest.java6
-rw-r--r--src/test/java/me/xmrvizzy/skyblocker/chat/filters/ImplosionFilterTest.java6
8 files changed, 76 insertions, 60 deletions
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 16cb5fc3..cf13e26e 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AdFilter.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AdFilter.java
@@ -1,15 +1,17 @@
package me.xmrvizzy.skyblocker.chat.filters;
-import me.xmrvizzy.skyblocker.chat.ChatListener;
import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
import java.util.regex.Pattern;
public class AdFilter extends ChatFilter {
- private static final String regex;
-
+ private static final Pattern[] AD_FILTERS = new Pattern[]{
+ Pattern.compile("^(?:i(?:m|'m| am)? |(?:is )?any(?: ?one|1) )?(?:buy|sell|lowball|trade?)(?:ing)?(?:\\W|$)", Pattern.CASE_INSENSITIVE),
+ Pattern.compile("(.)\\1{7,}"),
+ Pattern.compile("\\W(?:on|in|check|at) my (?:ah|bin)(?:\\W|$)", Pattern.CASE_INSENSITIVE),
+ };
public AdFilter() {
- super(regex);
+ super("^§[67ab](?:\\[(?:MVP|VIP)(?:§[0-9a-f]\\+{1,2}§[6ab])?] )?([a-zA-Z0-9_]{2,16})§[7f]: (.*)$");
}
@Override
@@ -17,27 +19,11 @@ public class AdFilter extends ChatFilter {
return SkyblockerConfig.get().messages.hideAds;
}
- static {
- 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",
- "(?>(.)\\2{7,})",
- };
- String[] exact = new String[]{
- "(?:i(?:m|'m| am)? |(?:is )?any(?: ?one|1) )?(?:buy|sell|lowball|trade?)(?:ing)?(?:\\W|).*",
- };
- sb.append("(?i:.*(?:");
- sb.append(inexact[0]);
- for(int i = 1; i < inexact.length; i++) {
- sb.append("|");
- sb.append(inexact[i]);
- }
- sb.append(").*");
- for (String s : exact) {
- sb.append("|");
- sb.append(s);
- }
- sb.append(")$");
- regex = sb.toString();
+ @Override
+ public boolean onMessage(String[] groups) {
+ for(Pattern adFilter : AD_FILTERS)
+ if(adFilter.matcher(groups[2]).find())
+ return true;
+ return false;
}
} \ No newline at end of file
diff --git a/src/test/java/me/xmrvizzy/skyblocker/chat/ChatListenerTest.java b/src/test/java/me/xmrvizzy/skyblocker/chat/ChatListenerTest.java
index 78574c74..803f72d8 100644
--- a/src/test/java/me/xmrvizzy/skyblocker/chat/ChatListenerTest.java
+++ b/src/test/java/me/xmrvizzy/skyblocker/chat/ChatListenerTest.java
@@ -1,35 +1,34 @@
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;
+ protected final T listener;
- public ChatListenerTest(T chatListener) {
- pattern = chatListener.getPattern();
+ public ChatListenerTest(T listener) {
+ this.listener = listener;
}
- protected void assertMatches(String text) {
- assertTrue(pattern.matcher(text).matches());
+ protected boolean captures(String text) {
+ return listener.getPattern().matcher(text).matches();
}
-
- protected void assertNotMatches(String text) {
- assertFalse(pattern.matcher(text).matches());
- }
-
protected String[] getGroups(String text) {
- Matcher matcher = pattern.matcher(text);
+ Matcher matcher = listener.getPattern().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 assertCaptures(String text) {
+ assertTrue(captures(text));
+ }
+ protected void assertNotCaptures(String text) {
+ assertTrue(captures(text));
+ }
protected void assertGroup(String text, int group, String expect) {
- assertEquals(getGroups(text)[group], expect);
+ assertEquals(expect, getGroups(text)[group]);
}
} \ 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
index b8a5f9da..ec2db07b 100644
--- a/src/test/java/me/xmrvizzy/skyblocker/chat/filters/AbilityFilterTest.java
+++ b/src/test/java/me/xmrvizzy/skyblocker/chat/filters/AbilityFilterTest.java
@@ -3,18 +3,18 @@ package me.xmrvizzy.skyblocker.chat.filters;
import me.xmrvizzy.skyblocker.chat.ChatListenerTest;
import org.junit.jupiter.api.Test;
-class AbilityFilterTest extends ChatListenerTest<AbilityFilter> {
+class AbilityFilterTest extends ChatFilterTest<AbilityFilter> {
public AbilityFilterTest() {
super(new AbilityFilter());
}
@Test
void charges() {
- assertMatches("No more charges, next one in 13.2s!");
+ assertFilters("No more charges, next one in 13.2s!");
}
@Test
void cooldown() {
- assertMatches("This ability is on cooldown for 42s.");
+ assertFilters("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
index 54e1643d..639042fe 100644
--- a/src/test/java/me/xmrvizzy/skyblocker/chat/filters/AdFilterTest.java
+++ b/src/test/java/me/xmrvizzy/skyblocker/chat/filters/AdFilterTest.java
@@ -3,48 +3,53 @@ package me.xmrvizzy.skyblocker.chat.filters;
import me.xmrvizzy.skyblocker.chat.ChatListenerTest;
import org.junit.jupiter.api.Test;
-class AdFilterTest extends ChatListenerTest<AdFilter> {
+class AdFilterTest extends ChatFilterTest<AdFilter> {
public AdFilterTest() {
super(new AdFilter());
}
@Test
void noRank() {
- assertMatches("§7Advertiser§7: buy");
+ assertCaptures("§7Advertiser§7: advertisement");
}
@Test
void vip() {
- assertMatches("§a[VIP] Advertiser§f: buy");
+ assertCaptures("§a[VIP] Advertiser§f: advertisement");
}
@Test
void mvp() {
- assertMatches("§b[MVP§c+§b] Advertiser§f: buy");
+ assertCaptures("§b[MVP§c+§b] Advertiser§f: advertisement");
}
@Test
void plusPlus() {
- assertMatches("§6[MVP§c++§6] Advertiser§f: buy");
+ assertCaptures("§6[MVP§c++§6] Advertiser§f: advertisement");
+ }
+
+ @Test
+ void capturesMessage() {
+ assertGroup("§b[MVP§c+§b] b2dderr§f: buying prismapump", 2, "buying prismapump");
}
@Test
void simpleAd() {
- assertMatches("§b[MVP§c+§b] b2dderr§f: buying prismapump");
+ assertFilters("§b[MVP§c+§b] b2dderr§f: buying prismapump");
}
@Test
void uppercaseAd() {
- assertMatches("§a[VIP] Tecnoisnoob§f: SELLING REJUVENATE 5 Book on ah!");
+ assertFilters("§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! <<<<<<<<<<<<<<<<<<<");
+ assertFilters("§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!");
+ assertNotFilters("§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
index 52ab5fe9..2aa14e1c 100644
--- a/src/test/java/me/xmrvizzy/skyblocker/chat/filters/AoteFilterTest.java
+++ b/src/test/java/me/xmrvizzy/skyblocker/chat/filters/AoteFilterTest.java
@@ -3,13 +3,13 @@ package me.xmrvizzy.skyblocker.chat.filters;
import me.xmrvizzy.skyblocker.chat.ChatListenerTest;
import org.junit.jupiter.api.Test;
-class AoteFilterTest extends ChatListenerTest<AoteFilter> {
+class AoteFilterTest extends ChatFilterTest<AoteFilter> {
public AoteFilterTest() {
super(new AoteFilter());
}
@Test
void testRegex() {
- assertMatches("There are blocks in the way!");
+ assertFilters("There are blocks in the way!");
}
} \ No newline at end of file
diff --git a/src/test/java/me/xmrvizzy/skyblocker/chat/filters/ChatFilterTest.java b/src/test/java/me/xmrvizzy/skyblocker/chat/filters/ChatFilterTest.java
new file mode 100644
index 00000000..ff3399a7
--- /dev/null
+++ b/src/test/java/me/xmrvizzy/skyblocker/chat/filters/ChatFilterTest.java
@@ -0,0 +1,26 @@
+package me.xmrvizzy.skyblocker.chat.filters;
+
+import me.xmrvizzy.skyblocker.chat.ChatListener;
+import me.xmrvizzy.skyblocker.chat.ChatListenerTest;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+
+public class ChatFilterTest<T extends ChatListener> extends ChatListenerTest<T> {
+ public ChatFilterTest(T listener) {
+ super(listener);
+ }
+
+ protected boolean filters(String text) {
+ if(!captures(text))
+ return false;
+ String[] groups = getGroups(text);
+ return listener.onMessage(groups);
+ }
+ protected void assertFilters(String text) {
+ assertTrue(filters(text));
+ }
+ protected void assertNotFilters(String text) {
+ assertFalse(filters(text));
+ }
+}
diff --git a/src/test/java/me/xmrvizzy/skyblocker/chat/filters/HealFilterTest.java b/src/test/java/me/xmrvizzy/skyblocker/chat/filters/HealFilterTest.java
index 49ceadb3..f7b4d59b 100644
--- a/src/test/java/me/xmrvizzy/skyblocker/chat/filters/HealFilterTest.java
+++ b/src/test/java/me/xmrvizzy/skyblocker/chat/filters/HealFilterTest.java
@@ -3,18 +3,18 @@ package me.xmrvizzy.skyblocker.chat.filters;
import me.xmrvizzy.skyblocker.chat.ChatListenerTest;
import org.junit.jupiter.api.Test;
-class HealFilterTest extends ChatListenerTest<HealFilter> {
+class HealFilterTest extends ChatFilterTest<HealFilter> {
public HealFilterTest() {
super(new HealFilter());
}
@Test
void healSelf() {
- assertMatches("You healed yourself for 18.3 health!");
+ assertFilters("You healed yourself for 18.3 health!");
}
@Test
void healedYou() {
- assertMatches("H3aler_ healed you for 56 health!");
+ assertFilters("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
index 8ee58564..a6526925 100644
--- a/src/test/java/me/xmrvizzy/skyblocker/chat/filters/ImplosionFilterTest.java
+++ b/src/test/java/me/xmrvizzy/skyblocker/chat/filters/ImplosionFilterTest.java
@@ -3,18 +3,18 @@ package me.xmrvizzy.skyblocker.chat.filters;
import me.xmrvizzy.skyblocker.chat.ChatListenerTest;
import org.junit.jupiter.api.Test;
-class ImplosionFilterTest extends ChatListenerTest<ImplosionFilter> {
+class ImplosionFilterTest extends ChatFilterTest<ImplosionFilter> {
public ImplosionFilterTest() {
super(new ImplosionFilter());
}
@Test
void oneEnemy() {
- assertMatches("Your Implosion hit 1 enemy for 636,116.8 damage.");
+ assertFilters("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.");
+ assertFilters("Your Implosion hit 7 enemies for 4,452,817.4 damage.");
}
} \ No newline at end of file