package wikokit.base.wikipedia.util;
import wikokit.base.wikipedia.util.StringUtil;
import java.util.Arrays;
import java.util.List;
import junit.framework.*;
public class StringUtilTest extends TestCase {
//public StringUtil string_util;
public StringUtilTest(String testName) {
super(testName);
}
protected void setUp() throws Exception {
//string_util = new StringUtil();
}
protected void tearDown() throws Exception {
}
public static Test suite() {
TestSuite suite = new TestSuite(StringUtilTest.class);
return suite;
}
public void testJoin() {
System.out.println("Join");
String[] words = {"one", "two", "five"};
String delimiter = "_";
String result = StringUtil.join(delimiter, words);
assertEquals(0, result.compareTo("one_two_five"));
}
public void testJoinInt() {
System.out.println("JoinInt");
int[] n = {1, 2, 7};
String delimiter = "_";
String result = StringUtil.join(delimiter, n);
assertEquals(0, result.compareTo("1_2_7"));
}
public void testSplit() {
System.out.println("Split");
//String[] words; // = {"one", "two", "five"};
String delimiter = "_";
String[] words = StringUtil.split(delimiter, "one_two_five");
assertEquals(3, words.length);
String[] word1 = StringUtil.split(delimiter, "one");
assertEquals(1, word1.length);
String[] word0 = StringUtil.split(delimiter, "");
assertEquals(0, word0.length);
}
public void testEscapeChars(){
System.out.println("EscapeChars");
String escaped, unescaped, empty;
StringUtil.escapeChars(null);
empty = "";
escaped = StringUtil.escapeChars(empty);
assertEquals(0, escaped.length());
unescaped = "New's coming!";
escaped = StringUtil.escapeChars(unescaped);
assertEquals(escaped, "New\\'s coming!");
unescaped = "\\";
escaped = StringUtil.escapeChars(unescaped);
assertEquals("\\\\", escaped);
}
public void testEscapeCharDollarAndBackslash(){
System.out.println("escapeCharDollarAndBackslash");
String unescaped, empty;
StringBuffer escaped;
StringUtil.escapeCharDollarAndBackslash(null);
empty = "";
escaped = StringUtil.escapeCharDollarAndBackslash(empty);
assertEquals(0, escaped.length());
// first: $ -> \\$
unescaped = "$dollar";
escaped = StringUtil.escapeCharDollarAndBackslash(unescaped);
assertEquals(escaped.toString(), "\\$dollar");
// second: skip, in order to don't double slashes \\$ -> \\$
escaped = StringUtil.escapeCharDollarAndBackslash(escaped.toString());
assertEquals(escaped.toString(), "\\$dollar");
// f'''\\\\'''v
// two slashes "\\" - skip double slashes, \\ -> \\
unescaped = "f\\\\v";
escaped = StringUtil.escapeCharDollarAndBackslash(unescaped);
assertEquals(escaped.toString(), "f\\\\\\\\v");
unescaped = "ff\\\\v";
escaped = StringUtil.escapeCharDollarAndBackslash(unescaped);
assertEquals(escaped.toString(), "ff\\\\\\\\v");
// )\\ -> )\\\\
unescaped = ")\\";
escaped = StringUtil.escapeCharDollarAndBackslash(unescaped);
assertEquals(")\\\\", escaped.toString());
// double slashes \\) -> \\\\)
unescaped = "\\)";
escaped = StringUtil.escapeCharDollarAndBackslash(unescaped);
assertEquals("\\\\)", escaped.toString());
}
//public static String (String text, char s, char d){
public void testSubstChar(){
System.out.println("substChar");
String s = "Too much spaces are here.!@#(*$&";
String s_underscored = s.replace(' ', '_');
assertEquals(s_underscored, "Too_much___spaces_are_here.!@#(*$&");
}
public void testGetUnique(){
System.out.println("getUnique");
String[] l = {"dinnER", "dinner", "cUp", "Cup", "CUP"};
String[] exp_result = {"dinnER", "cUp"};
List<String> result = StringUtil.getUnique(Arrays.asList(l));
assertEquals(Arrays.asList(exp_result), result);
result = StringUtil.getUnique(null);
assertEquals(0, result.size());
}
public void testAddOR(){
System.out.println("addOR");
List<String> result = StringUtil.addOR(null, null);
assertEquals(0, result.size());
String[] a = {"dinnER", "dinner", "CUP", "halva"};
String[] b = {"DInner", "dinner", "dressing"};
String[] exp_result = {"dinnER", "CUP", "halva", "dressing"};
result = StringUtil.addOR(Arrays.asList(a), Arrays.asList(b));
assertEquals(Arrays.asList(exp_result), result);
result = StringUtil.addOR(null, Arrays.asList(b));
assertEquals(Arrays.asList(b), result);
result = StringUtil.addOR(null, Arrays.asList(a));
assertEquals(Arrays.asList(a), result);
// b is null, and changes of source 'a' do not affect the 'result' array
result = StringUtil.addOR(Arrays.asList(a), null);
assertEquals(Arrays.asList(a), result);
a[0] = "new value";
assertFalse(result.get(0).equalsIgnoreCase(a[0]));
}
//String[] addORCaseSensitive(String[] a,String[] b)
public void testAddORCaseSensitive(){
System.out.println("addORCaseSensitive");
String[] result = StringUtil.addORCaseSensitive(null, null);
assertEquals(0, result.length);
String[] a = {"dinnER", "dinner", "CUP", "halva"};
String[] b = {"DInner", "dinner", "CUP", "dressing"};
String[] exp_result = {"dinnER", "dinner", "CUP", "halva", "DInner", "dressing"};
result = StringUtil.addORCaseSensitive(a, b);
assertEquals(exp_result.length, result.length);
for(String s : exp_result) {
assertTrue(StringUtil.containsIgnoreCase(result, s));
}
// b is null, and changes of source 'a' do not affect the 'result' array
result = StringUtil.addORCaseSensitive(a, null);
a[0] = "new value";
assertFalse(result[0].equalsIgnoreCase(a[0]));
}
public void testContainsIgnoreCase() {
System.out.println("testContainsIgnoreCase");
boolean b = StringUtil.containsIgnoreCase(null, "");
assertEquals(false, b);
String[] a = {"dinnER", "dinner", "CUP", "halva"};
b = StringUtil.containsIgnoreCase(a, "cuP");
assertEquals(true, b);
}
public void testIntersect() {
System.out.println("testIntersect");
String[] a = {"apple", "intel", "amd"};
String[] b = {"intel", "super-turbo-cpu", "amd", "something"};
String[] should_be = {"intel", "amd"};
String[] res = StringUtil.intersect(a, b);
assertEquals(res.length, should_be.length);
for(int i=0;i<res.length;i++) {
assertEquals(res[i], should_be[i]);
}
}
public void testgetTextBeforeFirstColumn() {
System.out.println("testgetTextBeforeFirstColumn");
StringUtil.getTextBeforeFirstColumn(null);
assertEquals("text", StringUtil.getTextBeforeFirstColumn("text"));
assertEquals("text2", StringUtil.getTextBeforeFirstColumn("text2:asdf"));
assertEquals("", StringUtil.getTextBeforeFirstColumn(":|text2:asdf"));
}
//getTextBeforeFirstVerticalPipe
public void testgetTextBeforeFirstVerticalPipe() {
System.out.println("testgetTextBeforeFirstVerticalPipe");
assertEquals("text", StringUtil.getTextBeforeFirstVerticalPipe("text"));
assertEquals("text2", StringUtil.getTextBeforeFirstVerticalPipe("text2|asdf"));
assertEquals(":", StringUtil.getTextBeforeFirstVerticalPipe(":|text2:|asdf"));
}
public void testGetTextAfterFirstColumn() {
System.out.println("testGetTextAfterFirstColumn");
StringUtil.getTextAfterFirstColumn(null);
assertEquals("", StringUtil.getTextAfterFirstColumn("text"));
assertEquals("asdf", StringUtil.getTextAfterFirstColumn("text2:asdf"));
assertEquals("", StringUtil.getTextAfterFirstColumn("text2:"));
assertEquals("text2:asdf", StringUtil.getTextAfterFirstColumn(":text2:asdf"));
}
public void testGetTextAfterFirstVerticalPipe() {
System.out.println("testGetTextAfterFirstVerticalPipe");
StringUtil.getTextAfterFirstVerticalPipe(null);
assertEquals("", StringUtil.getTextAfterFirstVerticalPipe("text"));
assertEquals("asdf", StringUtil.getTextAfterFirstVerticalPipe("text2|asdf"));
assertEquals("", StringUtil.getTextAfterFirstVerticalPipe("text2|"));
assertEquals("text2:asdf", StringUtil.getTextAfterFirstVerticalPipe("|text2:asdf"));
}
public void testGetTextAfterFirstSpace() {
System.out.println("testGetTextAfterFirstSpace");
StringUtil.getTextAfterFirstSpace(null);
assertEquals("", StringUtil.getTextAfterFirstSpace("text"));
assertEquals("asdf", StringUtil.getTextAfterFirstSpace("text2 asdf"));
assertEquals("", StringUtil.getTextAfterFirstSpace("text2 "));
assertEquals("text2:asdf", StringUtil.getTextAfterFirstSpace(" text2:asdf"));
}
public void testgetTextBeforeFirstAndSecondColumns() {
System.out.println("testgetTextBeforeFirstAndSecondColumns");
StringUtil.getTextBeforeFirstAndSecondColumns(null);
assertEquals("text", StringUtil.getTextBeforeFirstAndSecondColumns("text"));
assertEquals("asdf", StringUtil.getTextBeforeFirstAndSecondColumns("text2:asdf"));
assertEquals("text2", StringUtil.getTextBeforeFirstAndSecondColumns(":text2:asdf"));
assertEquals("Теория_множеств",StringUtil.getTextBeforeFirstAndSecondColumns("C:Теория_множеств:Eo:Kategorio:Aroteorio"));
}
public void testGetTextTillSpaceOrPuctuationMark() {
System.out.println("getTextTillSpaceOrPuctuationMark");
StringUtil.getTextTillSpaceOrPuctuationMark(0, null);
StringUtil.getTextTillSpaceOrPuctuationMark(100, ":text2:asdf");
StringUtil.getTextTillSpaceOrPuctuationMark(3, "012");
assertEquals("text", StringUtil.getTextTillSpaceOrPuctuationMark(0, "text"));
assertEquals("ext2", StringUtil.getTextTillSpaceOrPuctuationMark(1, "text2:asdf"));
assertEquals("word", StringUtil.getTextTillSpaceOrPuctuationMark(4, "0123word next"));
assertEquals("word", StringUtil.getTextTillSpaceOrPuctuationMark(4, "0123word, next"));
}
public void testIsInterWiki() {
System.out.println("testIsInterWiki");
assertTrue( StringUtil.isInterWiki("ru:test"));
assertFalse(StringUtil.isInterWiki("ruutest"));
// #
assertTrue (StringUtil.isInterWiki("ru:"));
assertFalse(StringUtil.isInterWiki("ru"));
assertFalse(StringUtil.isInterWiki("r"));
assertFalse(StringUtil.isInterWiki(""));
assertFalse(StringUtil.isInterWiki(null));
String[] iwiki_example = {"ru:", "fa:وب جهانگستر","br:World Wide","lt:Žiniatinklis","lv:Globālais tīmeklis","th:เวิลด์ไวด์เว็บ","tr:Dünya Çapında Ağ"};
for(String title : iwiki_example) {
assertTrue(StringUtil.isInterWiki(title));
}
}
public void testUpperFirstLowerSecondLetter() {
System.out.println("testUpperFirstLowerSecondLetter");
String source[] = {"en", "rU", "Eo", "FR"};
String compare[] = {"En", "Ru", "Eo", "Fr"};
for(int i=0; i<source.length; i++) {
String res = StringUtil.UpperFirstLowerSecondLetter(source[i]);
assertEquals(res, compare[i]);
}
}
public void testUpperFirstLetter() {
System.out.println("testUpperFirstLetter");
String source[] = {"THE TEXT", "алфавит", "alphabet", "a"};
String compare[] = {"THE TEXT", "Алфавит", "Alphabet", "A"};
assertEquals(null, StringUtil.UpperFirstLetter(null));
for(int i=0; i<source.length; i++) {
String res = StringUtil.UpperFirstLetter(source[i]);
assertEquals(res, compare[i]);
}
}
}