X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Ftest%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Ftext%2FSoneTextParserTest.java;h=ece45f03c5991241365d92b468a7a868a9e84d9b;hb=15d615074733889c8e1553581a2cae2846070fa8;hp=f0b0e1bd9464549fb23eb3d2f9530bd99c5b67e9;hpb=6b9c7c806fd1fc168e598d6e4eb6ee46ad2aa6fd;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 f0b0e1b..ece45f0 100644 --- a/src/test/java/net/pterodactylus/sone/text/SoneTextParserTest.java +++ b/src/test/java/net/pterodactylus/sone/text/SoneTextParserTest.java @@ -38,37 +38,63 @@ public class SoneTextParserTest extends TestCase { public void testPlainText() throws IOException { SoneTextParser soneTextParser = new SoneTextParser(null, null); Iterable parts; - StringBuilder text = new StringBuilder(); /* check basic operation. */ - text.setLength(0); parts = soneTextParser.parse(null, new StringReader("Test.")); assertNotNull("Parts", parts); - for (Part part : parts) { - assertTrue("Part is PlainTextPart", part instanceof PlainTextPart); - text.append(((PlainTextPart) part).getText()); - } - assertEquals("Part Text", "Test.", text.toString()); + assertEquals("Part Text", "Test.", convertText(parts, PlainTextPart.class)); /* check empty lines at start and end. */ - text.setLength(0); parts = soneTextParser.parse(null, new StringReader("\nTest.\n\n")); assertNotNull("Parts", parts); - for (Part part : parts) { - assertTrue("Part is PlainTextPart", part instanceof PlainTextPart); - text.append(((PlainTextPart) part).getText()); - } - assertEquals("Part Text", "Test.", text.toString()); + assertEquals("Part Text", "Test.", convertText(parts, PlainTextPart.class)); /* check duplicate empty lines in the text. */ - text.setLength(0); parts = soneTextParser.parse(null, new StringReader("\nTest.\n\n\nTest.")); assertNotNull("Parts", parts); + assertEquals("Part Text", "Test.\n\nTest.", convertText(parts, PlainTextPart.class)); + } + + // + // PRIVATE METHODS + // + + /** + * Converts all given {@link Part}s into a string, validating that the + * part’s classes match only the expected classes. + * + * @param parts + * The parts to convert to text + * @param validClasses + * The valid classes; if no classes are given, all classes are + * valid + * @return The converted text + */ + private String convertText(Iterable parts, Class... validClasses) { + StringBuilder text = new StringBuilder(); for (Part part : parts) { - assertTrue("Part is PlainTextPart", part instanceof PlainTextPart); - text.append(((PlainTextPart) part).getText()); + assertNotNull("Part", part); + boolean classValid = validClasses.length == 0; + for (Class validClass : validClasses) { + if (validClass.isAssignableFrom(part.getClass())) { + classValid = true; + break; + } + } + if (!classValid) { + assertEquals("Part’s Class", null, part.getClass()); + } + if (part instanceof PlainTextPart) { + 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(']'); + } else if (part instanceof LinkPart) { + LinkPart linkPart = (LinkPart) part; + text.append('[').append(linkPart.getLink()).append('|').append(linkPart.getTitle()).append('|').append(linkPart.getText()).append(']'); + } } - assertEquals("Part Text", "Test.\n\nTest.", text.toString()); + return text.toString(); } }