X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Ftest%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Ftext%2FSoneTextParserTest.java;h=46eecb790848cbc7ce8fb49b0bf365833a1eb732;hp=cec779aefee7de2b35f9d5f947a2f191d2317e69;hb=a2369ab3b5b0f3f6dcc9d9fd1fcdc02c3003da64;hpb=594aaf74980949ecb964284e51e280c2d24c349d diff --git a/src/test/java/net/pterodactylus/sone/text/SoneTextParserTest.java b/src/test/java/net/pterodactylus/sone/text/SoneTextParserTest.java index cec779a..46eecb7 100644 --- a/src/test/java/net/pterodactylus/sone/text/SoneTextParserTest.java +++ b/src/test/java/net/pterodactylus/sone/text/SoneTextParserTest.java @@ -26,20 +26,21 @@ import static org.hamcrest.Matchers.notNullValue; import java.io.IOException; import java.util.Collection; +import javax.annotation.Nonnull; +import javax.annotation.Nullable; + import net.pterodactylus.sone.data.Post; import net.pterodactylus.sone.data.Sone; import net.pterodactylus.sone.data.impl.IdOnlySone; import net.pterodactylus.sone.database.PostProvider; import net.pterodactylus.sone.database.SoneProvider; -import com.google.common.base.Function; import com.google.common.base.Optional; +import kotlin.jvm.functions.Function1; import org.junit.Test; /** * JUnit test case for {@link SoneTextParser}. - * - * @author David ‘Bombe’ Roden */ public class SoneTextParserTest { @@ -93,6 +94,13 @@ public class SoneTextParserTest { } @Test + public void soneAndPostCanBeParsedFromTheSameText() { + SoneTextParser parser = new SoneTextParser(new TestSoneProvider(), new TestPostProvider()); + Iterable parts = parser.parse("Text sone://DAxKQzS48mtaQc7sUVHIgx3fnWZPQBz0EueBreUVWrU more text post://f3757817-b45a-497a-803f-9c5aafc10dc6 even more text", null); + assertThat("Part Text", convertText(parts), is("Text [Sone|DAxKQzS48mtaQc7sUVHIgx3fnWZPQBz0EueBreUVWrU] more text [Post|f3757817-b45a-497a-803f-9c5aafc10dc6|text] even more text")); + } + + @Test public void postLinkIsRenderedAsPlainTextIfPostIdIsTooShort() { Iterable parts = soneTextParser.parse("post://too-short", null); assertThat("Part Text", convertText(parts), is("post://too-short")); @@ -197,6 +205,23 @@ public class SoneTextParserTest { } @Test + public void invalidSskAndUskLinkIsParsedAsText() { + Iterable parts = soneTextParser.parse("SSK@a USK@a", null); + assertThat("Part Text", convertText(parts), is("SSK@a USK@a")); + } + + @Test + public void sskWithoutDocumentNameIsParsedCorrectly() { + Iterable parts = soneTextParser.parse( + "SSK@qM1nmgU-YUnIttmEhqjTl7ifAF3Z6o~5EPwQW03uEQU,aztSUkT-VT1dWvfSUt9YpfyW~Flmf5yXpBnIE~v8sAg,AAMC--8", + null); + assertThat("Part Text", convertText(parts), + is("[SSK@qM1nmgU-YUnIttmEhqjTl7ifAF3Z6o~5EPwQW03uEQU,aztSUkT-VT1dWvfSUt9YpfyW~Flmf5yXpBnIE~v8sAg,AAMC--8|" + + "SSK@qM1nmgU-YUnIttmEhqjTl7ifAF3Z6o~5EPwQW03uEQU,aztSUkT-VT1dWvfSUt9YpfyW~Flmf5yXpBnIE~v8sAg,AAMC--8|" + + "SSK@qM1nmgU-YUnIttmEhqjTl7ifAF3Z6o~5EPwQW03uEQU]")); + } + + @Test public void sskLinkWithoutContextIsNotTrusted() { Iterable parts = soneTextParser.parse("SSK@qM1nmgU-YUnIttmEhqjTl7ifAF3Z6o~5EPwQW03uEQU,aztSUkT-VT1dWvfSUt9YpfyW~Flmf5yXpBnIE~v8sAg,AAMC--8/test", null); assertThat("Part Text", convertText(parts), is("[SSK@qM1nmgU-YUnIttmEhqjTl7ifAF3Z6o~5EPwQW03uEQU,aztSUkT-VT1dWvfSUt9YpfyW~Flmf5yXpBnIE~v8sAg,AAMC--8/test|SSK@qM1nmgU-YUnIttmEhqjTl7ifAF3Z6o~5EPwQW03uEQU,aztSUkT-VT1dWvfSUt9YpfyW~Flmf5yXpBnIE~v8sAg,AAMC--8/test|test]")); @@ -372,7 +397,7 @@ public class SoneTextParserTest { text.append(((PlainTextPart) part).getText()); } else if (part instanceof FreenetLinkPart) { FreenetLinkPart freenetLinkPart = (FreenetLinkPart) part; - text.append('[').append(freenetLinkPart.getLink()).append('|').append(freenetLinkPart.isTrusted() ? "trusted|" : "").append(freenetLinkPart.getTitle()).append('|').append(freenetLinkPart.getText()).append(']'); + text.append('[').append(freenetLinkPart.getLink()).append('|').append(freenetLinkPart.getTrusted() ? "trusted|" : "").append(freenetLinkPart.getTitle()).append('|').append(freenetLinkPart.getText()).append(']'); } else if (part instanceof FreemailPart) { FreemailPart freemailPart = (FreemailPart) part; text.append(format("[Freemail|%s|%s|%s]", freemailPart.getEmailLocalPart(), freemailPart.getFreemailId(), freemailPart.getIdentityId())); @@ -392,27 +417,24 @@ public class SoneTextParserTest { /** * Mock Sone provider. - * - * @author David ‘Bombe’ Roden */ private static class TestSoneProvider implements SoneProvider { + @Nonnull @Override - public Function> soneLoader() { - return new Function>() { + public Function1 getSoneLoader() { + return new Function1() { @Override - public Optional apply(String soneId) { + public Sone invoke(String soneId) { return getSone(soneId); } }; } - /** - * {@inheritDoc} - */ + @Nullable @Override - public Optional getSone(final String soneId) { - return Optional.of(new IdOnlySone(soneId)); + public Sone getSone(final String soneId) { + return new IdOnlySone(soneId); } /** @@ -444,17 +466,18 @@ public class SoneTextParserTest { private static class AbsentSoneProvider extends TestSoneProvider { @Override - public Optional getSone(String soneId) { - return Optional.absent(); + public Sone getSone(String soneId) { + return null; } } private static class TestPostProvider implements PostProvider { + @Nullable @Override - public Optional getPost(final String postId) { - return Optional.of(new Post() { + public Post getPost(@Nonnull final String postId) { + return new Post() { @Override public String getId() { return postId; @@ -499,7 +522,7 @@ public class SoneTextParserTest { public Post setKnown(boolean known) { return null; } - }); + }; } @Override @@ -516,9 +539,10 @@ public class SoneTextParserTest { private static class AbsentPostProvider extends TestPostProvider { + @Nullable @Override - public Optional getPost(String postId) { - return Optional.absent(); + public Post getPost(@Nonnull String postId) { + return null; } }