chatfilter: add collapse duplicate chat option

Co-authored-by: Adam <Adam@sigterm.info>
This commit is contained in:
Corey Forsyth
2020-05-11 21:26:35 -04:00
committed by Adam
parent ab22082e38
commit 0715e3c9fc
3 changed files with 164 additions and 20 deletions

View File

@@ -34,6 +34,7 @@ import net.runelite.api.Client;
import net.runelite.api.IterableHashTable;
import net.runelite.api.MessageNode;
import net.runelite.api.Player;
import net.runelite.api.events.ChatMessage;
import net.runelite.api.events.ScriptCallbackEvent;
import net.runelite.client.game.ClanManager;
import static net.runelite.client.plugins.chatfilter.ChatFilterPlugin.CENSOR_MESSAGE;
@@ -108,6 +109,13 @@ public class ChatFilterPluginTest
return node;
}
private MessageNode mockMessageNode(int id)
{
MessageNode node = mock(MessageNode.class);
when(node.getId()).thenReturn(id);
return node;
}
@Test
public void testCensorWords()
{
@@ -322,4 +330,42 @@ public class ChatFilterPluginTest
chatFilterPlugin.onScriptCallbackEvent(event);
assertEquals(CENSOR_MESSAGE, client.getStringStack()[client.getStringStackSize() - 1]);
}
@Test
public void testDuplicateChatFiltered()
{
when(chatFilterConfig.collapseGameChat()).thenReturn(true);
chatFilterPlugin.onChatMessage(new ChatMessage(mockMessageNode(0), ChatMessageType.GAMEMESSAGE, null, "testMessage", null, 0));
ScriptCallbackEvent event = createCallbackEvent(null, "testMessage", ChatMessageType.GAMEMESSAGE);
chatFilterPlugin.onScriptCallbackEvent(event);
assertEquals(0, client.getIntStack()[client.getIntStackSize() - 3]);
}
@Test
public void testNoDuplicate()
{
when(chatFilterConfig.collapseGameChat()).thenReturn(true);
chatFilterPlugin.onChatMessage(new ChatMessage(mockMessageNode(1), ChatMessageType.GAMEMESSAGE, null, "testMessage", null, 0));
ScriptCallbackEvent event = createCallbackEvent(null, "testMessage", ChatMessageType.GAMEMESSAGE);
chatFilterPlugin.onScriptCallbackEvent(event);
assertEquals(1, client.getIntStack()[client.getIntStackSize() - 3]);
assertEquals("testMessage", client.getStringStack()[client.getStringStackSize() - 1]);
}
@Test
public void testDuplicateChatCount()
{
when(chatFilterConfig.collapseGameChat()).thenReturn(true);
chatFilterPlugin.onChatMessage(new ChatMessage(mockMessageNode(4), ChatMessageType.GAMEMESSAGE, null, "testMessage", null, 0));
chatFilterPlugin.onChatMessage(new ChatMessage(mockMessageNode(3), ChatMessageType.GAMEMESSAGE, null, "testMessage", null, 0));
chatFilterPlugin.onChatMessage(new ChatMessage(mockMessageNode(2), ChatMessageType.GAMEMESSAGE, null, "testMessage", null, 0));
chatFilterPlugin.onChatMessage(new ChatMessage(mockMessageNode(1), ChatMessageType.GAMEMESSAGE, null, "testMessage", null, 0));
ScriptCallbackEvent event = createCallbackEvent(null, "testMessage", ChatMessageType.GAMEMESSAGE);
chatFilterPlugin.onScriptCallbackEvent(event);
assertEquals(1, client.getIntStack()[client.getIntStackSize() - 3]);
assertEquals("testMessage (4)", client.getStringStack()[client.getStringStackSize() - 1]);
}
}