# Conflicts:
#	runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java
#	runelite-client/src/main/java/net/runelite/client/game/ItemMapping.java
#	runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/EmoteClue.java
#	runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/MapClue.java
#	runelite-client/src/main/java/net/runelite/client/plugins/config/ConfigPanel.java
#	runelite-client/src/main/java/net/runelite/client/plugins/config/PluginListItem.java
#	runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/MenuEntrySwapperConfig.java
#	runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/MenuEntrySwapperPlugin.java
#	runelite-client/src/main/java/net/runelite/client/plugins/opponentinfo/HitpointsDisplayStyle.java
#	runelite-client/src/main/java/net/runelite/client/plugins/questlist/QuestListPlugin.java
#	runelite-client/src/main/java/net/runelite/client/plugins/timetracking/farming/FarmingTracker.java
#	runelite-client/src/main/java/net/runelite/client/ui/overlay/components/ProgressBarComponent.java
This commit is contained in:
Ganom
2019-05-30 13:26:28 -04:00
53 changed files with 2088 additions and 1856 deletions

View File

@@ -38,6 +38,7 @@ import java.applet.Applet;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
@@ -47,6 +48,8 @@ import java.util.Set;
import net.runelite.api.Client;
import net.runelite.client.RuneLite;
import net.runelite.client.RuneLiteModule;
import net.runelite.client.config.Config;
import net.runelite.client.config.ConfigItem;
import net.runelite.client.eventbus.EventBus;
import net.runelite.client.rs.ClientUpdateCheckMode;
import static org.junit.Assert.assertEquals;
@@ -75,6 +78,7 @@ public class PluginManagerTest
public Client client;
private Set<Class> pluginClasses;
private Set<Class> configClasses;
@Before
public void before() throws IOException
@@ -85,8 +89,9 @@ public class PluginManagerTest
RuneLite.setInjector(injector);
// Find plugins we expect to have
// Find plugins and configs we expect to have
pluginClasses = new HashSet<>();
configClasses = new HashSet<>();
Set<ClassInfo> classes = ClassPath.from(getClass().getClassLoader()).getTopLevelClassesRecursive(PLUGIN_PACKAGE);
for (ClassInfo classInfo : classes)
{
@@ -95,6 +100,12 @@ public class PluginManagerTest
if (pluginDescriptor != null)
{
pluginClasses.add(clazz);
continue;
}
if (Config.class.isAssignableFrom(clazz))
{
configClasses.add(clazz);
}
}
@@ -155,4 +166,37 @@ public class PluginManagerTest
}
}
@Test
public void ensureNoDuplicateConfigKeyNames()
{
for (final Class clazz : configClasses)
{
final Set<String> configKeyNames = new HashSet<>();
for (final Method method : clazz.getMethods())
{
if (!method.isDefault())
{
continue;
}
final ConfigItem annotation = method.getAnnotation(ConfigItem.class);
if (annotation == null)
{
continue;
}
final String configKeyName = annotation.keyName();
if (configKeyNames.contains(configKeyName))
{
throw new IllegalArgumentException("keyName " + configKeyName + " is duplicated in " + clazz);
}
configKeyNames.add(configKeyName);
}
}
}
}

View File

@@ -1,5 +1,6 @@
/*
* Copyright (c) 2019, Adam <Adam@sigterm.info>
* Copyright (c) 2019, osrs-music-map <osrs-music-map@users.noreply.github.com>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -29,8 +30,11 @@ import com.google.inject.testing.fieldbinder.Bind;
import com.google.inject.testing.fieldbinder.BoundFieldModule;
import javax.inject.Inject;
import net.runelite.api.Client;
import net.runelite.api.Player;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -49,6 +53,10 @@ public class ChatFilterPluginTest
@Bind
private ChatFilterConfig chatFilterConfig;
@Mock
@Bind
private Player localPlayer;
@Inject
private ChatFilterPlugin chatFilterPlugin;
@@ -60,6 +68,7 @@ public class ChatFilterPluginTest
when(chatFilterConfig.filterType()).thenReturn(ChatFilterType.CENSOR_WORDS);
when(chatFilterConfig.filteredWords()).thenReturn("");
when(chatFilterConfig.filteredRegex()).thenReturn("");
when(client.getLocalPlayer()).thenReturn(localPlayer);
}
@Test
@@ -110,4 +119,51 @@ public class ChatFilterPluginTest
chatFilterPlugin.updateFilteredPatterns();
assertNull(chatFilterPlugin.censorMessage("te\u008Cst"));
}
@Test
public void testMessageFromFriendIsFiltered()
{
when(client.isFriended("Iron Mammal", false)).thenReturn(true);
when(chatFilterConfig.filterFriends()).thenReturn(true);
assertTrue(chatFilterPlugin.shouldFilterPlayerMessage("Iron Mammal"));
}
@Test
public void testMessageFromFriendIsNotFiltered()
{
when(client.isFriended("Iron Mammal", false)).thenReturn(true);
when(chatFilterConfig.filterFriends()).thenReturn(false);
assertFalse(chatFilterPlugin.shouldFilterPlayerMessage("Iron Mammal"));
}
@Test
public void testMessageFromClanIsFiltered()
{
when(client.isClanMember("B0aty")).thenReturn(true);
when(chatFilterConfig.filterClan()).thenReturn(true);
assertTrue(chatFilterPlugin.shouldFilterPlayerMessage("B0aty"));
}
@Test
public void testMessageFromClanIsNotFiltered()
{
when(client.isClanMember("B0aty")).thenReturn(true);
when(chatFilterConfig.filterClan()).thenReturn(false);
assertFalse(chatFilterPlugin.shouldFilterPlayerMessage("B0aty"));
}
@Test
public void testMessageFromSelfIsNotFiltered()
{
when(localPlayer.getName()).thenReturn("Swampletics");
assertFalse(chatFilterPlugin.shouldFilterPlayerMessage("Swampletics"));
}
@Test
public void testMessageFromNonFriendNonClanIsFiltered()
{
when(client.isFriended("Woox", false)).thenReturn(false);
when(client.isClanMember("Woox")).thenReturn(false);
assertTrue(chatFilterPlugin.shouldFilterPlayerMessage("Woox"));
}
}

View File

@@ -29,13 +29,11 @@ import com.google.inject.testing.fieldbinder.Bind;
import com.google.inject.testing.fieldbinder.BoundFieldModule;
import javax.inject.Inject;
import net.runelite.api.ChatMessageType;
import net.runelite.api.Client;
import net.runelite.api.events.ChatMessage;
import net.runelite.client.ui.overlay.OverlayManager;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.mockito.Mockito.when;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -52,13 +50,16 @@ public class CookingPluginTest
"You cook the karambwan. It looks delicious.",
"You roast a lobster.",
"You cook a bass.",
"You squeeze the grapes into the jug. The wine begins to ferment.",
"You successfully bake a tasty garden pie."
};
@Inject
CookingPlugin cookingPlugin;
@Mock
@Bind
Client client;
@Mock
@Bind
CookingConfig config;
@@ -94,26 +95,4 @@ public class CookingPluginTest
assertNotNull(cookingSession);
assertEquals(COOKING_MESSAGES.length, cookingSession.getCookAmount());
}
@Test
public void testFermentTimerOnChatMessage()
{
when(config.fermentTimer()).thenReturn(true);
ChatMessage chatMessage = new ChatMessage(null, ChatMessageType.SPAM, "", COOKING_MESSAGES[6], "", 0);
cookingPlugin.onChatMessage(chatMessage);
FermentTimerSession fermentTimerSession = cookingPlugin.getFermentTimerSession();
assertNotNull(fermentTimerSession);
}
@Test
public void testFermentTimerOnChatMessage_pluginDisabled()
{
when(config.fermentTimer()).thenReturn(false);
ChatMessage chatMessage = new ChatMessage(null, ChatMessageType.SPAM, "", COOKING_MESSAGES[6], "", 0);
cookingPlugin.onChatMessage(chatMessage);
FermentTimerSession fermentTimerSession = cookingPlugin.getFermentTimerSession();
assertNull(fermentTimerSession);
}
}