package wikokit.base.wikipedia.text;
import wikokit.base.wikipedia.text.WikiParser;
import wikokit.base.wikipedia.text.ReferenceParser;
import wikokit.base.wikipedia.language.LanguageType;
import junit.framework.TestCase;
public class ReferenceParserTest extends TestCase {
public ReferenceParserTest(String testName) {
super(testName);
}
@Override
protected void setUp() throws Exception {
super.setUp();
}
@Override
protected void tearDown() throws Exception {
super.tearDown();
}
/** Test of expandMoveToEndOfText method, of class ReferenceParser. */
public void testExpandMoveToEndOfText() {
System.out.println("expandMoveToEndOfText");
StringBuffer wiki_text, expResult, result;
// 1. expand and move ref text to the end of text
wiki_text = new StringBuffer(
"Впечатление произвело не только, и даже не столько увиденное и услышанное, сколько личность самого " +
"их будущего Гуруджи<ref>Джи – уважительная приставка, по типу «сан» у японцев.</ref> — Шри Рам Кумар Шармы.");
expResult = new StringBuffer(
"Впечатление произвело не только, и даже не столько увиденное и услышанное, сколько личность самого " +
"их будущего Гуруджи — Шри Рам Кумар Шармы.\n\nДжи – уважительная приставка, по типу «сан» у японцев.");
result = ReferenceParser.expandMoveToEndOfText(wiki_text);
assertTrue(expResult.toString().equalsIgnoreCase( result.toString() ) );
// 2. complex: remove ref with template inside: <ref>{{...}}</ref>
wiki_text = new StringBuffer(
"''Bold [[wiktionary:pale|pale]] text. ''<ref>{{cite book |last= Axell |first= Albert |coauthors = " +
"Kase, Hideaki | year=2002 | title= Kamikaze: Japan’s suicide gods |publisher= New York: Longman. " +
"ISBN 0-582-77232-X | pages=p. 16 }}</ref>\n" +
" A special ceremony before going to combat usually took place.");
expResult = new StringBuffer(
"Bold pale text. \n A special ceremony before going to combat usually took place.");
result = ReferenceParser.expandMoveToEndOfText(wiki_text);
//result = WikiParser.parseCurlyBrackets(result);
result = WikiParser.parseDoubleApostrophe(result);
result = WikiParser.parseDoubleBrackets(result, LanguageType.en, true);
assertTrue(expResult.toString().equalsIgnoreCase( result.toString() ) );
}
/** remove hyperlink in ref which is not within brackets '[]' */
public void testExpandReferenceToEndOfText_hyperlink() {
System.out.println("expandReferenceToEndOfText_hyperlink");
StringBuffer wiki_text, expResult, result;
// 1. remove (only link)
// <ref>http://tank.uw.ru/archive/koliestwennyj/index.khtml</ref> -> ""
wiki_text = new StringBuffer("<ref>http://tank.uw.ru/archive/koliestwennyj/index.khtml</ref>");
result = ReferenceParser.expandMoveToEndOfText(wiki_text);
assertEquals(0, result.length());
// "abc <ref>http://tank.uw.ru/archive/koliestwennyj/index.khtml</ref> text -> "abc text"
wiki_text = new StringBuffer("abc<ref>http://tank.uw.ru/archive/koliestwennyj/index.khtml</ref> text");
expResult = new StringBuffer("abc text");
result = WikiParser.convertWikiToText(wiki_text, LanguageType.ru, true);
assertTrue(expResult.toString().equalsIgnoreCase( result.toString() ) );
// 2. append text
// "abc<ref>http://tank.uw link text</ref> text" -> "abc text\n\n link text"
wiki_text = new StringBuffer("abc<ref>http://tank.uw link text</ref> text");
expResult = new StringBuffer("abc text\n\nlink text");
result = WikiParser.convertWikiToText(wiki_text, LanguageType.ru, true);
assertTrue(expResult.toString().equalsIgnoreCase( result.toString() ) );
}
/** Test of removeReferences method, of class ReferenceParser. */
public void testRemoveReferencesOnly() {
System.out.println("removeReferencesOnly");
StringBuffer wiki_text, expResult, result;
// 1. expand and move ref text to the end of text
wiki_text = new StringBuffer(
"Впечатление от Гуруджи<ref>Джи – уважительная приставка....</ref> — Шри Рам Кумар Шармы.");
expResult = new StringBuffer(
"Впечатление от Гуруджи — Шри Рам Кумар Шармы.");
result = ReferenceParser.removeReferences(wiki_text);
assertTrue(expResult.toString().equalsIgnoreCase( result.toString() ) );
// 2. complex: remove ref with template inside: <ref>{{...}}</ref>
// but do not expand [[Wiki text|wiki text]]
wiki_text = new StringBuffer(
"''Bold [[wiktionary:pale|pale]] text. ''<ref>{{cite book |last= Axell |first= Albert |coauthors = " +
"Kase, Hideaki | year=2002 | title= Kamikaze: Japan’s suicide gods |publisher= New York: Longman. " +
"ISBN 0-582-77232-X | pages=p. 16 }}</ref>\n" +
" A special ceremony before going to combat usually took place.");
//expResult = new StringBuffer(
// "Bold pale text. \n A special ceremony before going to combat usually took place.");
expResult = new StringBuffer(
"''Bold [[wiktionary:pale|pale]] text. ''" +
"\n" +
" A special ceremony before going to combat usually took place.");
result = ReferenceParser.removeReferences(wiki_text);
assertTrue(expResult.toString().equalsIgnoreCase( result.toString() ) );
// 3. complex: remove several references
wiki_text = new StringBuffer(
"{{помета|сиб.}} [[ловушка]]<ref>Брокгауз</ref><ref>Даль</ref><ref>[http://www]</ref>{{пример|кулёма на медведя…}}");
expResult = new StringBuffer(
"{{помета|сиб.}} [[ловушка]]{{пример|кулёма на медведя…}}");
result = ReferenceParser.removeReferences(wiki_text);
assertTrue(expResult.toString().equalsIgnoreCase( result.toString() ) );
}
}