package com.fsck.k9.message.html; import com.fsck.k9.K9RobolectricTestRunner; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.annotation.Config; import static com.fsck.k9.message.html.UriParserTestHelper.assertLinkOnly; import static junit.framework.Assert.assertEquals; @RunWith(K9RobolectricTestRunner.class) @Config(manifest = Config.NONE) public class UriLinkifierTest { private StringBuffer outputBuffer = new StringBuffer(); @Test public void emptyText() { String text = ""; UriLinkifier.linkifyText(text, outputBuffer); assertEquals(text, outputBuffer.toString()); } @Test public void textWithoutUri_shouldBeCopiedToOutputBuffer() { String text = "some text here"; UriLinkifier.linkifyText(text, outputBuffer); assertEquals(text, outputBuffer.toString()); } @Test public void simpleUri() { String uri = "http://example.org"; UriLinkifier.linkifyText(uri, outputBuffer); assertLinkOnly(uri, outputBuffer); } @Test public void uriPrecededBySpace() { String text = " http://example.org"; UriLinkifier.linkifyText(text, outputBuffer); assertEquals(" <a href=\"http://example.org\">http://example.org</a>", outputBuffer.toString()); } @Test public void uriPrecededByOpeningParenthesis() { String text = "(http://example.org"; UriLinkifier.linkifyText(text, outputBuffer); assertEquals("(<a href=\"http://example.org\">http://example.org</a>", outputBuffer.toString()); } @Test public void uriPrecededBySomeText() { String uri = "Check out my fantastic URI: http://example.org"; UriLinkifier.linkifyText(uri, outputBuffer); assertEquals("Check out my fantastic URI: <a href=\"http://example.org\">http://example.org</a>", outputBuffer.toString()); } @Test public void uriWithTrailingText() { String uri = "http://example.org/ is the best"; UriLinkifier.linkifyText(uri, outputBuffer); assertEquals("<a href=\"http://example.org/\">http://example.org/</a> is the best", outputBuffer.toString()); } @Test public void uriEmbeddedInText() { String uri = "prefix http://example.org/ suffix"; UriLinkifier.linkifyText(uri, outputBuffer); assertEquals("prefix <a href=\"http://example.org/\">http://example.org/</a> suffix", outputBuffer.toString()); } @Test public void uriWithUppercaseScheme() { String uri = "HTTP://example.org/"; UriLinkifier.linkifyText(uri, outputBuffer); assertEquals("<a href=\"HTTP://example.org/\">HTTP://example.org/</a>", outputBuffer.toString()); } @Test public void uriNotPrecededByValidSeparator_shouldNotBeLinkified() { String text = "myhttp://example.org"; UriLinkifier.linkifyText(text, outputBuffer); assertEquals(text, outputBuffer.toString()); } @Test public void uriNotPrecededByValidSeparatorFollowedByValidUri() { String text = "myhttp: http://example.org"; UriLinkifier.linkifyText(text, outputBuffer); assertEquals("myhttp: <a href=\"http://example.org\">http://example.org</a>", outputBuffer.toString()); } @Test public void schemaMatchWithInvalidUriInMiddleOfTextFollowedByValidUri() { String text = "prefix http:42 http://example.org"; UriLinkifier.linkifyText(text, outputBuffer); assertEquals("prefix http:42 <a href=\"http://example.org\">http://example.org</a>", outputBuffer.toString()); } @Test public void multipleValidUrisInRow() { String text = "prefix http://uri1.example.org some text http://uri2.example.org/path postfix"; UriLinkifier.linkifyText(text, outputBuffer); assertEquals( "prefix <a href=\"http://uri1.example.org\">http://uri1.example.org</a> some text " + "<a href=\"http://uri2.example.org/path\">http://uri2.example.org/path</a> postfix", outputBuffer.toString()); } }