♻️ Allow easier combining of different parameters
authorDavid ‘Bombe’ Roden <bombe@freenetproject.org>
Wed, 8 Jan 2025 15:44:43 +0000 (16:44 +0100)
committerDavid ‘Bombe’ Roden <bombe@freenetproject.org>
Wed, 8 Jan 2025 15:58:39 +0000 (16:58 +0100)
src/test/java/net/pterodactylus/fcp/plugin/WebOfTrustPluginTest.java

index 7a29658..cec4542 100644 (file)
@@ -14,8 +14,12 @@ import org.junit.rules.Timeout;
 import org.junit.runner.RunWith;
 
 import java.io.IOException;
+import java.util.AbstractMap.SimpleEntry;
+import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
+import java.util.Map.Entry;
 import java.util.Set;
 import java.util.function.BiConsumer;
 import java.util.function.Function;
@@ -120,7 +124,7 @@ public class WebOfTrustPluginTest {
                private TestFcpConnection createConnectionThatCreatesOwnIdentity() {
                        return createFcpConnection(message -> (listener, connection) -> {
                                Map<String, String> fields = createWebOfTrustReplyFields("IdentityCreated", true,
-                                               "ID", "identity", "InsertURI", "insert-uri", "RequestURI", "request-uri");
+                                               entries("ID", "identity", "InsertURI", "insert-uri", "RequestURI", "request-uri"));
                                FcpMessage replyMessage = createPluginReply(message, fields);
                                listener.receivedFCPPluginReply(connection, new FCPPluginReply(replyMessage, null));
                        });
@@ -210,10 +214,7 @@ public class WebOfTrustPluginTest {
                private TestFcpConnection createConnectionThatDeliversOwnIdentities() {
                        return createFcpConnection(message -> (listener, connection) -> {
                                Map<String, String> fields = createWebOfTrustReplyFields("OwnIdentities", true,
-                                               "Amount", "2", "Identity0", "identity-0", "Nickname0", "Nick 0", "RequestURI0", "request-uri-0", "InsertURI0", "insert-uri-0",
-                                               "Contexts0.Context0", "test-context-1", "Contexts0.Context1", "test-context-2", "Properties0.Property0.Name", "prop1", "Properties0.Property0.Value", "value1", "Properties0.Property1.Name", "prop2", "Properties0.Property1.Value", "value2",
-                                               "Identity1", "identity-1", "Nickname1", "Nick 1", "RequestURI1", "request-uri-1", "InsertURI1", "insert-uri-1",
-                                               "Contexts1.Context0", "test-context-2", "Contexts1.Context1", "test-context-3", "Properties1.Property0.Name", "prop3", "Properties1.Property0.Value", "value3", "Properties1.Property1.Name", "prop4", "Properties1.Property1.Value", "value4"
+                                               entries("Amount", "2"), identity1, identity2
                                );
                                FcpMessage replyMessage = createPluginReply(message, fields);
                                listener.receivedFCPPluginReply(connection, new FCPPluginReply(replyMessage, null));
@@ -234,6 +235,11 @@ public class WebOfTrustPluginTest {
                        assertThrows(FcpException.class, webOfTrustPlugin::getOwnIdentites);
                }
 
+               private final List<Entry<String, String>> identity1 = entries("Identity0", "identity-0", "Nickname0", "Nick 0", "RequestURI0", "request-uri-0", "InsertURI0", "insert-uri-0",
+                               "Contexts0.Context0", "test-context-1", "Contexts0.Context1", "test-context-2", "Properties0.Property0.Name", "prop1", "Properties0.Property0.Value", "value1", "Properties0.Property1.Name", "prop2", "Properties0.Property1.Value", "value2");
+               private final List<Entry<String, String>> identity2 = entries("Identity1", "identity-1", "Nickname1", "Nick 1", "RequestURI1", "request-uri-1", "InsertURI1", "insert-uri-1",
+                               "Contexts1.Context0", "test-context-2", "Contexts1.Context1", "test-context-3", "Properties1.Property0.Name", "prop3", "Properties1.Property0.Value", "value3", "Properties1.Property1.Name", "prop4", "Properties1.Property1.Value", "value4");
+
        }
 
        public static class GetIdentityTrustTests extends Common {
@@ -268,12 +274,9 @@ public class WebOfTrustPluginTest {
                private TestFcpConnection createConnectionThatDeliversIdentityTrustAndScore() {
                        return createFcpConnection(message -> (listener, connection) -> {
                                Map<String, String> fields = createWebOfTrustReplyFields("Identity", true,
-                                               "Identities.Amount", "1",
-                                               "Identities.0.Type", "Identity", "Identities.0.Nickname", "Nick Name", "Identities.0.RequestURI", "nick-pub", "Identities.0.ID", "nick-id", "Identities.0.VersionID", "0-0", "Identities.0.PublishesTrustList", "true", "Identities.0.CurrentEditionFetchState", "Fetched",
-                                               "Identities.0.Contexts.0.Name", "context-1", "Identities.0.Contexts.1.Name", "context-2", "Identities.0.Contexts.Amount", "2",
-                                               "Identities.0.Properties.0.Name", "prop1", "Identities.0.Properties.0.Value", "value1", "Identities.0.Properties.1.Name", "prop2", "Identities.0.Properties.1.Value", "value2", "Identities.0.Properties.Amount", "2",
-                                               "Trusts.Amount", "1", "Trusts.0.Truster", "own-id", "Trusts.0.Trustee", "nick-id", "Trusts.0.Value", "56", "Trusts.0.Comment", "some trust", "Trusts.0.TrusterEdition", "123", "Trusts.0.VersionID", "1-1",
-                                               "Scores.Amount", "1", "Scores.0.Truster", "own-id", "Scores.0.Trustee", "nick-id", "Scores.0.Capacity", "40", "Scores.0.Rank", "1", "Scores.0.Value", "56", "Scores.0.VersionID", "2-2"
+                                               entries("Identities.Amount", "1"), identityNick0,
+                                               entries("Trusts.Amount", "1"), trustValue,
+                                               entries("Scores.Amount", "1"), scoreValue
                                );
                                FcpMessage replyMessage = createPluginReply(message, fields);
                                listener.receivedFCPPluginReply(connection, new FCPPluginReply(replyMessage, null));
@@ -288,6 +291,12 @@ public class WebOfTrustPluginTest {
                        assertThrows(FcpException.class, () -> webOfTrustPlugin.getIdentityTrust(ownIdentity, "other-id"));
                }
 
+               private final List<Entry<String, String>> identityNick0 = entries("Identities.0.Type", "Identity", "Identities.0.Nickname", "Nick Name", "Identities.0.RequestURI", "nick-pub", "Identities.0.ID", "nick-id", "Identities.0.VersionID", "0-0", "Identities.0.PublishesTrustList", "true", "Identities.0.CurrentEditionFetchState", "Fetched",
+                               "Identities.0.Contexts.0.Name", "context-1", "Identities.0.Contexts.1.Name", "context-2", "Identities.0.Contexts.Amount", "2",
+                               "Identities.0.Properties.0.Name", "prop1", "Identities.0.Properties.0.Value", "value1", "Identities.0.Properties.1.Name", "prop2", "Identities.0.Properties.1.Value", "value2", "Identities.0.Properties.Amount", "2");
+               private final List<Entry<String, String>> trustValue = entries("Trusts.0.Truster", "own-id", "Trusts.0.Trustee", "nick-id", "Trusts.0.Value", "56", "Trusts.0.Comment", "some trust", "Trusts.0.TrusterEdition", "123", "Trusts.0.VersionID", "1-1");
+               private final List<Entry<String, String>> scoreValue = entries("Scores.0.Truster", "own-id", "Scores.0.Trustee", "nick-id", "Scores.0.Capacity", "40", "Scores.0.Rank", "1", "Scores.0.Value", "56", "Scores.0.VersionID", "2-2");
+
        }
 
        private static class Common {
@@ -304,12 +313,13 @@ public class WebOfTrustPluginTest {
                        return new WebOfTrustPlugin(new FcpClient(fcpConnection));
                }
 
-               protected Map<String, String> createWebOfTrustReplyFields(String message, boolean success, String... fields) {
+               @SafeVarargs
+               protected final Map<String, String> createWebOfTrustReplyFields(String message, boolean success, List<Entry<String, String>>... replies) {
                        Map<String, String> replyFields = new HashMap<>();
                        replyFields.put("Success", String.valueOf(success));
                        replyFields.put("Replies.Message", message);
-                       for (int fieldIndex = 0; fieldIndex < fields.length - 1; fieldIndex += 2) {
-                               replyFields.put("Replies." + fields[fieldIndex], fields[fieldIndex + 1]);
+                       for (List<Entry<String, String>> replyEntries : replies) {
+                               replyEntries.forEach(entry -> replyFields.put("Replies." + entry.getKey(), entry.getValue()));
                        }
                        return replyFields;
                }
@@ -326,6 +336,14 @@ public class WebOfTrustPluginTest {
                        return new TestFcpConnection(messageConsumer);
                }
 
+               protected List<Entry<String, String>> entries(String... replies) {
+                       List<Entry<String, String>> entries = new ArrayList<>();
+                       for (int replyIndex = 0; replyIndex < replies.length - 1; replyIndex += 2) {
+                               entries.add(new SimpleEntry<>(replies[replyIndex], replies[replyIndex + 1]));
+                       }
+                       return entries;
+               }
+
                @Rule
                public final Timeout timeout = Timeout.seconds(5);