From 906171ca97b7fcb11cac4df29214cd97305ef7f6 Mon Sep 17 00:00:00 2001 From: =?utf8?q?David=20=E2=80=98Bombe=E2=80=99=20Roden?= Date: Mon, 6 Jan 2025 10:06:44 +0100 Subject: [PATCH] =?utf8?q?=E2=9C=A8=20Add=20SendURI=20message?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- src/main/java/net/pterodactylus/fcp/SendUri.java | 22 +++++++++ .../java/net/pterodactylus/fcp/SendUriTest.java | 57 ++++++++++++++++++++++ 2 files changed, 79 insertions(+) create mode 100644 src/main/java/net/pterodactylus/fcp/SendUri.java create mode 100644 src/test/java/net/pterodactylus/fcp/SendUriTest.java diff --git a/src/main/java/net/pterodactylus/fcp/SendUri.java b/src/main/java/net/pterodactylus/fcp/SendUri.java new file mode 100644 index 0000000..a127e4b --- /dev/null +++ b/src/main/java/net/pterodactylus/fcp/SendUri.java @@ -0,0 +1,22 @@ +package net.pterodactylus.fcp; + +import java.io.ByteArrayInputStream; + +import static java.nio.charset.StandardCharsets.UTF_8; + +public class SendUri extends FcpMessage { + + public SendUri(String identifier, String nodeIdentifier, String uri) { + super("SendURI"); + setField("Identifier", identifier); + setField("NodeIdentifier", nodeIdentifier); + setField("URI", uri); + } + + public void setDescription(String description) { + byte[] encodedDescription = description.getBytes(UTF_8); + setField("DataLength", String.valueOf(encodedDescription.length)); + setPayloadInputStream(new ByteArrayInputStream(encodedDescription)); + } + +} diff --git a/src/test/java/net/pterodactylus/fcp/SendUriTest.java b/src/test/java/net/pterodactylus/fcp/SendUriTest.java new file mode 100644 index 0000000..2a73df7 --- /dev/null +++ b/src/test/java/net/pterodactylus/fcp/SendUriTest.java @@ -0,0 +1,57 @@ +package net.pterodactylus.fcp; + +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; +import static org.hamcrest.Matchers.nullValue; + +public class SendUriTest { + + @Test + public void sendUriMessageHasCorrectName() { + assertThat(sendUri.getName(), equalTo("SendURI")); + } + + @Test + public void sendUriMessageSetsIdentifierFieldCorrectly() { + assertThat(sendUri.getField("Identifier"), equalTo("identifier")); + } + + @Test + public void sendUriMessageSetsNodeIdentifierFieldCorrectly() { + assertThat(sendUri.getField("NodeIdentifier"), equalTo("node-identifier")); + } + + @Test + public void sendUriMessageSetsUriFieldCorrectly() { + assertThat(sendUri.getField("URI"), equalTo("uri")); + } + + @Test + public void sendUriMessageWithoutDescriptionDoesNotHaveADataLengthField() { + assertThat(sendUri.getField("DataLength"), nullValue()); + } + + @Test + public void sendUriMessageWithoutDescriptionDoesNotHaveAPayloadInputStream() { + assertThat(sendUri.getPayloadInputStream(), nullValue()); + } + + @Test + public void sendUriMessageWithDescriptionHasADataLengthField() { + sendUri.setDescription("Hällo Wőrld"); + assertThat(sendUri.getField("DataLength"), equalTo("13")); + } + + @Test + public void sendUriMessageWithDescriptionHasPayload() { + sendUri.setDescription("Hällo Wőrld"); + assertThat(sendUri.getPayloadInputStream(), equalTo("Hällo Wőrld".getBytes(UTF_8))); + } + + private final SendUri sendUri = new SendUri("identifier", "node-identifier", "uri"); + +} -- 2.7.4