--- /dev/null
+package net.pterodactylus.fcp;
+
+import org.junit.Test;
+
+import static net.pterodactylus.fcp.test.MessageTests.verifyFieldValueAfterSettingFlag;
+import static net.pterodactylus.fcp.test.MessageTests.verifyFieldValueAfterSettingProperty;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.equalTo;
+import static org.hamcrest.Matchers.equalToIgnoringCase;
+
+public class LoadPluginTest {
+
+ @Test
+ public void loadPluginSetsIdentifier() {
+ assertThat(loadPlugin.getField("Identifier"), equalTo("identifier"));
+ }
+
+ @Test
+ public void settingPluginUrlWillSetField() {
+ verifyFieldValueAfterSettingProperty(loadPlugin, LoadPlugin::setPluginUrl, "PluginURL", "plugin-url");
+ }
+
+ @Test
+ public void settingUrlTypeToOfficialSetsCorrectField() {
+ verifyFieldValueAfterSettingProperty(loadPlugin, LoadPlugin::setUrlType, "URLType", LoadPlugin.UrlType.OFFICIAL, equalToIgnoringCase("official"));
+ }
+
+ @Test
+ public void settingUrlTypeToFileSetsCorrectField() {
+ verifyFieldValueAfterSettingProperty(loadPlugin, LoadPlugin::setUrlType, "URLType", LoadPlugin.UrlType.FILE, equalToIgnoringCase("file"));
+ }
+
+ @Test
+ public void settingUrlTypeToFreenetSetsCorrectField() {
+ verifyFieldValueAfterSettingProperty(loadPlugin, LoadPlugin::setUrlType, "URLType", LoadPlugin.UrlType.FREENET, equalToIgnoringCase("freenet"));
+ }
+
+ @Test
+ public void settingUrlTypeToUrlSetsCorrectField() {
+ verifyFieldValueAfterSettingProperty(loadPlugin, LoadPlugin::setUrlType, "URLType", LoadPlugin.UrlType.URL, equalToIgnoringCase("url"));
+ }
+
+ @Test
+ public void settingStoreToFalseSetsStoreFieldToFalse() {
+ verifyFieldValueAfterSettingFlag(loadPlugin, LoadPlugin::setStore, "Store", false);
+ }
+
+ @Test
+ public void settingStoreToTrueSetsStoreFieldToTrue() {
+ verifyFieldValueAfterSettingFlag(loadPlugin, LoadPlugin::setStore, "Store", true);
+ }
+
+ @Test
+ public void settingOfficialSourceToFreenetSetsCorrectField() {
+ verifyFieldValueAfterSettingProperty(loadPlugin, LoadPlugin::setOfficialSource, "OfficialSource", LoadPlugin.OfficialSource.FREENET, equalToIgnoringCase("freenet"));
+ }
+
+ @Test
+ public void settingOfficialSourceToHttpsSetsCorrectField() {
+ verifyFieldValueAfterSettingProperty(loadPlugin, LoadPlugin::setOfficialSource, "OfficialSource", LoadPlugin.OfficialSource.HTTPS, equalToIgnoringCase("https"));
+ }
+
+ private final LoadPlugin loadPlugin = new LoadPlugin("identifier");
+
+}
package net.pterodactylus.fcp.test;
import net.pterodactylus.fcp.FcpMessage;
+import org.hamcrest.Matcher;
import java.util.function.BiConsumer;
import java.util.function.Function;
verifyPropertyAfterSettingFlag(message, setter, m -> m.getField(fieldName), false);
}
+ public static <M extends FcpMessage> void verifyFieldValueAfterSettingProperty(M message, BiConsumer<M, String> setter, String fieldName, String value) {
+ verifyFieldValueAfterSettingProperty(message, setter, fieldName, value, equalTo(value));
+ }
+
+ public static <M extends FcpMessage, V> void verifyFieldValueAfterSettingProperty(M message, BiConsumer<M, ? super V> setter, String fieldName, V value, Matcher<? super String> matcher) {
+ setter.accept(message, value);
+ assertThat(message.getField(fieldName), matcher);
+ }
+
}