/**
* Copyright (C) 2010 Peter Karich <jetwick_@_pannous_._info>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package de.jetwick.tw;
import de.jetwick.data.JTweet;
import de.jetwick.data.JUser;
import de.jetwick.data.UrlEntry;
import de.jetwick.util.Helper;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*;
/**
*
* @author Peter Karich, peat_hal 'at' users 'dot' sourceforge 'dot' net
*/
public class ExtractorTest {
private String link = "http://adf.ly/2GgD";
private Extractor extractor;
public ExtractorTest() {
}
@Before
public void setUp() {
extractor = new Extractor();
}
@Test
public void testToSaveHtml() {
assertEquals("", extractor.toSaveHtml(""));
assertEquals("test", extractor.toSaveHtml("test"));
assertEquals("#", extractor.toSaveHtml("#"));
assertEquals("http:", extractor.toSaveHtml("http:"));
assertEquals("@", extractor.toSaveHtml("@"));
assertEquals(Helper.toJetwickUser("@notfail", "%40notfail"), extractor.toSaveHtml("@notfail"));
assertEquals("@ fail", extractor.toSaveHtml("@ fail"));
assertEquals("@?", extractor.toSaveHtml("@?"));
}
@Test
public void testLinkToSaveHtml() {
assertEquals("bla : " + extractor.toLink(link, link) + " bla",
extractor.toSaveHtml("bla : " + link + " bla"));
link = "http://bit.ly/bgkw";
assertEquals(extractor.toLink(link, link), extractor.toSaveHtml(link));
}
@Test
public void testNoScriptInjecting() {
assertEquals("<a href="ho">hi</a>", extractor.toSaveHtml("<a href=\"ho\">hi</a>"));
assertEquals("Peter Andre Confirms He's Releasing Children's Books",
extractor.toSaveHtml("Peter Andre Confirms He's Releasing Children's Books"));
}
@Test
public void testUserAndAnchorToSaveHtml() {
assertEquals("Hi " + Helper.toJetwickUser("@timetabling", "%40timetabling") + " how are you?",
extractor.toSaveHtml("Hi @timetabling how are you?"));
assertEquals(" " + Helper.toJetwickUser("@timetabling", "%40timetabling") + " look here " + extractor.toLink(link, link),
extractor.toSaveHtml(" @timetabling look here " + link));
assertEquals(Helper.toJetwickUser("@timetabling", "%40timetabling") + ":",
extractor.toSaveHtml("@timetabling:"));
assertEquals(Helper.toJetwickUser("@timetabling", "%40timetabling"),
extractor.toSaveHtml("@timetabling"));
assertEquals("peter.k@test.de",
extractor.toSaveHtml("peter.k@test.de"));
assertEquals(Helper.toJetwickSearch("#java", "%23java") + " " + extractor.toLink(link, link),
extractor.toSaveHtml("#java " + link));
assertEquals(Helper.toJetwickSearch("#<B>java</B>", "%23java") + " " + extractor.toLink(link, link),
extractor.toSaveHtml("#<B>java</B> " + link));
}
// @Test
// public void testBolding() {
// assertEquals("<a href=\"http://jetwick.com/?u=peter\">@peter</a>", extractor.toSaveHtml("@<B>peter</B>"));
// assertEquals("peter_nitsch", extractor.toSaveHtml("@<B>peter</B>_nitsch"));
// assertEquals(Helper.toJetwickSearch("notfail", "notfail"), Helper.getAnchors("#<B>notfail</B>").size());
// }
@Test
public void testLinks() {
assertTrue(extractor.toSaveHtml("http://www.<b>unitime</b>.org/").
endsWith("href=\"http://www.unitime.org/\">http://www.<b>unitime</b>.org/</a>"));
assertTrue(extractor.toSaveHtml("www.<b>unitime</b>.org/").
contains("href=\"http://www.unitime.org/\">www.<b>unitime</b>.org/</a>"));
String str = "http://j.mp/dv6kfF";
assertEquals("Android app stealing user data<br/>" + extractor.toLink(str, str),
extractor.toSaveHtml("Android app stealing user data\nhttp://j.mp/dv6kfF"));
assertEquals("Android " + extractor.toLink("http://j.mp/dv6kfF", "http://j.mp/dv6kfF") + "<br/> test",
extractor.toSaveHtml("Android http://j.mp/dv6kfF\n test"));
}
@Test
public void testComplex() {
link = "http://is.gd/bSmRb";
assertEquals(Helper.toJetwickSearch("#jobs", "%23jobs")
+ " " + Helper.toJetwickSearch("#hiring", "%23hiring"),
extractor.toSaveHtml("#jobs #hiring"));
}
@Test
public void testNewLine() {
assertEquals("bla<br/>bli", extractor.toSaveHtml("bla\nbli"));
}
@Test
public void testUrlWithNewLine() {
assertEquals(extractor.toLink("http://test.de", "http://test.de") + "<br/>bli",
extractor.toSaveHtml("http://test.de\nbli"));
}
@Test
public void testUrlEntriesToAvoidMemoryLeak() {
extractor.setTweet(new JTweet(1L, "test", new JUser("tester")).addUrlEntry(new UrlEntry(1, 2, "test.de"))).run();
assertEquals(1, extractor.getUrlEntrySize());
extractor.setTweet(new JTweet(1L, "test", new JUser("tester")).addUrlEntry(new UrlEntry(10, 2, "test.de"))).run();
assertEquals(1, extractor.getUrlEntrySize());
}
}