X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Ftest%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Ftext%2FSoneTextParserTest.java;h=56e31abc331f9bbc4de18656e0155887508bd235;hb=52513d6490a4c84c5a60f4232614f8222b9bdd57;hp=e1857a0ebc11715aaf3445e71db5b51323b3ef35;hpb=66b03d16a393c9f02090245ea963d45ce0b4cf79;p=Sone.git diff --git a/src/test/java/net/pterodactylus/sone/text/SoneTextParserTest.java b/src/test/java/net/pterodactylus/sone/text/SoneTextParserTest.java index e1857a0..56e31ab 100644 --- a/src/test/java/net/pterodactylus/sone/text/SoneTextParserTest.java +++ b/src/test/java/net/pterodactylus/sone/text/SoneTextParserTest.java @@ -1,5 +1,5 @@ /* - * Sone - SoneTextParserTest.java - Copyright © 2011–2012 David Roden + * Sone - SoneTextParserTest.java - Copyright © 2011–2016 David Roden * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -17,20 +17,28 @@ package net.pterodactylus.sone.text; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.is; +import static org.hamcrest.Matchers.isIn; +import static org.hamcrest.Matchers.notNullValue; + import java.io.IOException; -import java.io.StringReader; -import java.util.Arrays; +import java.util.Collection; -import junit.framework.TestCase; -import net.pterodactylus.sone.core.SoneProvider; import net.pterodactylus.sone.data.Sone; +import net.pterodactylus.sone.data.impl.IdOnlySone; +import net.pterodactylus.sone.database.SoneProvider; + +import com.google.common.base.Function; +import com.google.common.base.Optional; +import org.junit.Test; /** * JUnit test case for {@link SoneTextParser}. * * @author David ‘Bombe’ Roden */ -public class SoneTextParserTest extends TestCase { +public class SoneTextParserTest { // // ACTIONS @@ -43,24 +51,25 @@ public class SoneTextParserTest extends TestCase { * if an I/O error occurs */ @SuppressWarnings("static-method") + @Test public void testPlainText() throws IOException { SoneTextParser soneTextParser = new SoneTextParser(null, null); Iterable parts; /* check basic operation. */ - parts = soneTextParser.parse(null, new StringReader("Test.")); - assertNotNull("Parts", parts); - assertEquals("Part Text", "Test.", convertText(parts, PlainTextPart.class)); + parts = soneTextParser.parse("Test.", null); + assertThat("Parts", parts, notNullValue()); + assertThat("Part Text", "Test.", is(convertText(parts, PlainTextPart.class))); /* check empty lines at start and end. */ - parts = soneTextParser.parse(null, new StringReader("\nTest.\n\n")); - assertNotNull("Parts", parts); - assertEquals("Part Text", "Test.", convertText(parts, PlainTextPart.class)); + parts = soneTextParser.parse("\nTest.\n\n", null); + assertThat("Parts", parts, notNullValue()); + assertThat("Part Text", "Test.", is(convertText(parts, PlainTextPart.class))); /* check duplicate empty lines in the text. */ - parts = soneTextParser.parse(null, new StringReader("\nTest.\n\n\nTest.")); - assertNotNull("Parts", parts); - assertEquals("Part Text", "Test.\n\nTest.", convertText(parts, PlainTextPart.class)); + parts = soneTextParser.parse("\nTest.\n\n\nTest.", null); + assertThat("Parts", parts, notNullValue()); + assertThat("Part Text", "Test.\n\nTest.", is(convertText(parts, PlainTextPart.class))); } /** @@ -70,24 +79,25 @@ public class SoneTextParserTest extends TestCase { * if an I/O error occurs */ @SuppressWarnings("static-method") + @Test public void testKSKLinks() throws IOException { SoneTextParser soneTextParser = new SoneTextParser(null, null); Iterable parts; /* check basic links. */ - parts = soneTextParser.parse(null, new StringReader("KSK@gpl.txt")); - assertNotNull("Parts", parts); - assertEquals("Part Text", "[KSK@gpl.txt|gpl.txt|gpl.txt]", convertText(parts, FreenetLinkPart.class)); + parts = soneTextParser.parse("KSK@gpl.txt", null); + assertThat("Parts", parts, notNullValue()); + assertThat("Part Text", "[KSK@gpl.txt|gpl.txt|gpl.txt]", is(convertText(parts, FreenetLinkPart.class))); /* check embedded links. */ - parts = soneTextParser.parse(null, new StringReader("Link is KSK@gpl.txt\u200b.")); - assertNotNull("Parts", parts); - assertEquals("Part Text", "Link is [KSK@gpl.txt|gpl.txt|gpl.txt]\u200b.", convertText(parts, PlainTextPart.class, FreenetLinkPart.class)); + parts = soneTextParser.parse("Link is KSK@gpl.txt\u200b.", null); + assertThat("Parts", parts, notNullValue()); + assertThat("Part Text", "Link is [KSK@gpl.txt|gpl.txt|gpl.txt]\u200b.", is(convertText(parts, PlainTextPart.class, FreenetLinkPart.class))); /* check embedded links and line breaks. */ - parts = soneTextParser.parse(null, new StringReader("Link is KSK@gpl.txt\nKSK@test.dat\n")); - assertNotNull("Parts", parts); - assertEquals("Part Text", "Link is [KSK@gpl.txt|gpl.txt|gpl.txt]\n[KSK@test.dat|test.dat|test.dat]", convertText(parts, PlainTextPart.class, FreenetLinkPart.class)); + parts = soneTextParser.parse("Link is KSK@gpl.txt\nKSK@test.dat\n", null); + assertThat("Parts", parts, notNullValue()); + assertThat("Part Text", "Link is [KSK@gpl.txt|gpl.txt|gpl.txt]\n[KSK@test.dat|test.dat|test.dat]", is(convertText(parts, PlainTextPart.class, FreenetLinkPart.class))); } /** @@ -97,14 +107,15 @@ public class SoneTextParserTest extends TestCase { * if an I/O error occurs */ @SuppressWarnings({ "synthetic-access", "static-method" }) + @Test public void testEmptyLinesAndSoneLinks() throws IOException { SoneTextParser soneTextParser = new SoneTextParser(new TestSoneProvider(), null); Iterable parts; /* check basic links. */ - parts = soneTextParser.parse(null, new StringReader("Some text.\n\nLink to sone://DAxKQzS48mtaQc7sUVHIgx3fnWZPQBz0EueBreUVWrU and stuff.")); - assertNotNull("Parts", parts); - assertEquals("Part Text", "Some text.\n\nLink to [Sone|DAxKQzS48mtaQc7sUVHIgx3fnWZPQBz0EueBreUVWrU] and stuff.", convertText(parts, PlainTextPart.class, SonePart.class)); + parts = soneTextParser.parse("Some text.\n\nLink to sone://DAxKQzS48mtaQc7sUVHIgx3fnWZPQBz0EueBreUVWrU and stuff.", null); + assertThat("Parts", parts, notNullValue()); + assertThat("Part Text", "Some text.\n\nLink to [Sone|DAxKQzS48mtaQc7sUVHIgx3fnWZPQBz0EueBreUVWrU] and stuff.", is(convertText(parts, PlainTextPart.class, SonePart.class))); } /** @@ -115,14 +126,15 @@ public class SoneTextParserTest extends TestCase { * if an I/O error occurs */ @SuppressWarnings({ "synthetic-access", "static-method" }) + @Test public void testEmpyHttpLinks() throws IOException { SoneTextParser soneTextParser = new SoneTextParser(new TestSoneProvider(), null); Iterable parts; /* check empty http links. */ - parts = soneTextParser.parse(null, new StringReader("Some text. Empty link: http:// – nice!")); - assertNotNull("Parts", parts); - assertEquals("Part Text", "Some text. Empty link: http:// – nice!", convertText(parts, PlainTextPart.class)); + parts = soneTextParser.parse("Some text. Empty link: http:// – nice!", null); + assertThat("Parts", parts, notNullValue()); + assertThat("Part Text", "Some text. Empty link: http:// – nice!", is(convertText(parts, PlainTextPart.class))); } // @@ -143,16 +155,9 @@ public class SoneTextParserTest extends TestCase { private static String convertText(Iterable parts, Class... validClasses) { StringBuilder text = new StringBuilder(); for (Part part : parts) { - assertNotNull("Part", part); - boolean classValid = validClasses.length == 0; - for (Class validClass : validClasses) { - if (validClass.isAssignableFrom(part.getClass())) { - classValid = true; - break; - } - } - if (!classValid) { - fail("Part’s Class (" + part.getClass() + ") is not one of " + Arrays.toString(validClasses)); + assertThat("Part", part, notNullValue()); + if (validClasses.length != 0) { + assertThat("Part’s class", part.getClass(), isIn(validClasses)); } if (part instanceof PlainTextPart) { text.append(((PlainTextPart) part).getText()); @@ -177,21 +182,46 @@ public class SoneTextParserTest extends TestCase { */ private static class TestSoneProvider implements SoneProvider { + @Override + public Function> soneLoader() { + return new Function>() { + @Override + public Optional apply(String soneId) { + return getSone(soneId); + } + }; + } + /** * {@inheritDoc} */ @Override - public Sone getSone(final String soneId, boolean create) { - return new Sone(soneId) { + public Optional getSone(final String soneId) { + return Optional.of(new IdOnlySone(soneId)); + } - /** - * {@inheritDoc} - */ - @Override - public String getName() { - return soneId; - } - }; + /** + * {@inheritDocs} + */ + @Override + public Collection getSones() { + return null; + } + + /** + * {@inheritDocs} + */ + @Override + public Collection getLocalSones() { + return null; + } + + /** + * {@inheritDocs} + */ + @Override + public Collection getRemoteSones() { + return null; } }