--- /dev/null
+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));
+ }
+
+}
--- /dev/null
+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");
+
+}