/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package wikokit.base.wikipedia.text;
import wikokit.base.wikipedia.text.XMLTagsParser;
import junit.framework.TestCase;
/**
*
* @author andrew
*/
public class XMLTagsParserTest extends TestCase {
public XMLTagsParserTest(String testName) {
super(testName);
}
@Override
protected void setUp() throws Exception {
super.setUp();
}
@Override
protected void tearDown() throws Exception {
super.tearDown();
}
public void testIsAmpersandTag(){
System.out.println("isAmpersandTag");
String source, empty, should_be, border_failed, border_success;
String ampersand_tag;
XMLTagsParser.isAmpersandTag(null, 1);
empty = "";
ampersand_tag = XMLTagsParser.isAmpersandTag(empty,0);
assertEquals(0, ampersand_tag.length());
empty = "hello";
ampersand_tag = XMLTagsParser.isAmpersandTag(empty,-1);
assertEquals(0, ampersand_tag.length());
ampersand_tag = XMLTagsParser.isAmpersandTag(empty,1);
assertEquals(0, ampersand_tag.length());
border_failed = "<";
border_success = "<";
ampersand_tag = XMLTagsParser.isAmpersandTag(border_failed,0);
assertEquals(0, ampersand_tag.length());
ampersand_tag = XMLTagsParser.isAmpersandTag(border_success,0);
assertEquals("<", ampersand_tag);
// "less < greater > amp & quot " one symbol '";
source = "x>&";
should_be = ">";
ampersand_tag = XMLTagsParser.isAmpersandTag(source,1);
assertEquals(should_be, ampersand_tag);
// failed boundary
source = "x&"";
ampersand_tag = XMLTagsParser.isAmpersandTag(source,2);
assertEquals(0, ampersand_tag.length());
source = "x&"";
should_be = """;
ampersand_tag = XMLTagsParser.isAmpersandTag(source,2);
assertEquals(should_be, ampersand_tag);
source = "– space —";
should_be = "–";
ampersand_tag = XMLTagsParser.isAmpersandTag(source,0);
assertEquals(should_be, ampersand_tag);
should_be = "—";
ampersand_tag = XMLTagsParser.isAmpersandTag(source,14);
assertEquals(should_be, ampersand_tag);
}
public void testIsNonBreakingSpaceTag(){
System.out.println("isNonBreakingSpaceTag");
String br_tag;
// "<br />,<br/>,<br>"
br_tag = XMLTagsParser.isBRNewlineTag("<br />,<br/>,<br>", 0);
assertEquals("<br />", br_tag);
br_tag = XMLTagsParser.isBRNewlineTag("<br />,<br/>,<br>", 1);
assertEquals(0, br_tag.length());
br_tag = XMLTagsParser.isBRNewlineTag("<br />,<br/>,<br>", 7);
assertEquals("<br/>", br_tag);
br_tag = XMLTagsParser.isBRNewlineTag("<br />,<br/>,<br>", 13);
assertEquals("<br>", br_tag);
// near the end
// a) longest: <br />
br_tag = XMLTagsParser.isBRNewlineTag("<br /", 0);
assertEquals(0, br_tag.length());
br_tag = XMLTagsParser.isBRNewlineTag("<br />", 0);
assertEquals("<br />", br_tag);
// b) shortest: <br>
br_tag = XMLTagsParser.isBRNewlineTag("<br", 0);
assertEquals(0, br_tag.length());
br_tag = XMLTagsParser.isBRNewlineTag("<br>", 0);
assertEquals("<br>", br_tag);
}
public void testEscapeCharFromXML(){
System.out.println("escapeCharFromXML");
String unescaped, empty, should_be;
String escaped;
XMLTagsParser.escapeCharFromXML(null);
empty = "";
escaped = XMLTagsParser.escapeCharFromXML(empty);
assertEquals(0, escaped.length());
// "less < greater > amp & quot \"" ->
// "less < greater > amp & quot " ' '"
unescaped = "less < greater > amp & quot \" one symbol '";
should_be = "less < greater > amp & quot " one symbol '";
escaped = XMLTagsParser.escapeCharFromXML(unescaped);
assertEquals(should_be, escaped.toString());
// "<" -> "<" second pass should not change anything
escaped = XMLTagsParser.escapeCharFromXML(escaped);
assertEquals(should_be, escaped.toString());
}
public void testReplaceCharFromXML(){
System.out.println("replaceCharFromXML");
String unescaped, empty, should_be;
String escaped;
XMLTagsParser.replaceCharFromXML(null, ' ');
empty = "";
escaped = XMLTagsParser.replaceCharFromXML(empty, ' ');
assertEquals(0, escaped.length());
// "<>" -> " "
unescaped = "<1>2<3&4 non-breaking space";
should_be = " 1 2 3 4 non-breaking space";
escaped = XMLTagsParser.replaceCharFromXML(unescaped, ' ');
assertEquals(should_be, escaped.toString());
// "less < greater > amp & quot \"" ->
// "less < greater > amp & quot " ' '"
unescaped = "< greater > amp & quot \" one symbol '";
should_be = " greater amp quot one symbol '";
escaped = XMLTagsParser.replaceCharFromXML(unescaped, ' ');
assertEquals(should_be, escaped.toString());
// second pass should not change anything
escaped = XMLTagsParser.replaceCharFromXML(escaped, ' ');
assertEquals(should_be, escaped.toString());
// – space —
unescaped = "– space —";
should_be = " space ";
escaped = XMLTagsParser.replaceCharFromXML(unescaped, ' ');
assertEquals(should_be, escaped.toString());
}
// <br /> <br/> <br> should be replaced by "\n"
public void testReplaceCharFromXML_nbsp(){
System.out.println("replaceCharFromXML_nbsp");
String unescaped, empty, should_be;
String escaped;
// "<br />1<br/>2<br>3" -> "\n1\n2\n3"
unescaped = "<br />1<br/>2<br>3";
should_be = "\n1\n2\n3";
escaped = XMLTagsParser.replaceCharFromXML(unescaped, ' ');
assertEquals(should_be, escaped.toString());
// "<br />1<br/>2<br><br/>3<br/ joke><br />" -> "\n1\n2\n\n3<br/ joke>\n"
unescaped = "<br />1<br/>2<br><br/>3<br/ joke><br />";
should_be = "\n1\n2\n\n3 br/ joke \n";
escaped = XMLTagsParser.replaceCharFromXML(unescaped, ' ');
assertEquals(should_be, escaped.toString());
}
}