✨ Add SendText message
authorDavid ‘Bombe’ Roden <bombe@freenetproject.org>
Mon, 6 Jan 2025 08:26:03 +0000 (09:26 +0100)
committerDavid ‘Bombe’ Roden <bombe@freenetproject.org>
Mon, 6 Jan 2025 08:26:03 +0000 (09:26 +0100)
Apparently, this has been “SendText” since build 1236… oops. 😄

src/main/java/net/pterodactylus/fcp/SendText.java [new file with mode: 0644]
src/test/java/net/pterodactylus/fcp/SendTextTest.java [new file with mode: 0644]

diff --git a/src/main/java/net/pterodactylus/fcp/SendText.java b/src/main/java/net/pterodactylus/fcp/SendText.java
new file mode 100644 (file)
index 0000000..1edc761
--- /dev/null
@@ -0,0 +1,19 @@
+package net.pterodactylus.fcp;
+
+import java.io.ByteArrayInputStream;
+import java.nio.charset.StandardCharsets;
+
+import static java.nio.charset.StandardCharsets.UTF_8;
+
+public class SendText extends FcpMessage {
+
+       public SendText(String identifier, String nodeIdentifier, String text) {
+               super("SendText");
+               setField("Identifier", identifier);
+               setField("NodeIdentifier", nodeIdentifier);
+               byte[] encodedText = text.getBytes(UTF_8);
+               setPayloadInputStream(new ByteArrayInputStream(encodedText));
+               setField("DataLength", String.valueOf(encodedText.length));
+       }
+
+}
diff --git a/src/test/java/net/pterodactylus/fcp/SendTextTest.java b/src/test/java/net/pterodactylus/fcp/SendTextTest.java
new file mode 100644 (file)
index 0000000..f0b4e97
--- /dev/null
@@ -0,0 +1,36 @@
+package net.pterodactylus.fcp;
+
+import net.pterodactylus.fcp.test.InputStreamMatchers;
+import org.junit.Test;
+
+import static java.nio.charset.StandardCharsets.UTF_8;
+import static net.pterodactylus.fcp.test.InputStreamMatchers.equalTo;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.equalTo;
+
+public class SendTextTest {
+
+       @Test
+       public void sendTextMessageHasCorrectName() {
+               assertThat(sendText.getName(), equalTo("SendText"));
+       }
+
+       @Test
+       public void sendTextMessageSetsIdentifierField() {
+               assertThat(sendText.getField("Identifier"), equalTo("identifier"));
+       }
+
+       @Test
+       public void sendTextMessageSetsNodeIdentifierField() {
+               assertThat(sendText.getField("NodeIdentifier"), equalTo("node-identifier"));
+       }
+
+       @Test
+       public void sendTextMessageSetsTextAsPayload() {
+               assertThat(sendText.getField("DataLength"), equalTo("13"));
+               assertThat(sendText.getPayloadInputStream(), equalTo("Hällo Wőrld".getBytes(UTF_8)));
+       }
+
+       private final SendText sendText = new SendText("identifier", "node-identifier", "Hällo Wőrld");
+
+}