/*
* Rapid Beans Framework: StringHelperTest.java
*
* Copyright Martin Bluemel, 2008
*
* Nov 9, 2005
*/
package org.rapidbeans.core.util;
import java.util.List;
import junit.framework.TestCase;
/**
* Tests for the StringHelper.
*
* @author Martin Bluemel
*/
public final class StringHelperTest extends TestCase {
public void testStripBothWhitespace() {
assertEquals("hello world", StringHelper.strip("\t\t \n hello world \t \n", StringHelper.StripMode.both));
}
public void testStripTrailing() {
assertEquals("/\\ abc 789/ ",
StringHelper.strip("/\\ abc 789/ /\\///\\", new char[] { '/', '\\' }, StringHelper.StripMode.trailing));
}
public void testStripLeading() {
assertEquals("abc/789", StringHelper.strip("//abc/789", '/', StringHelper.StripMode.leading));
}
public void testFillUpLeft() {
assertEquals("000123", StringHelper.fillUp("123", 6, '0', StringHelper.FillMode.left));
}
public void testFillUpRight() {
assertEquals("hello world ", StringHelper.fillUp("hello world", 20, ' ', StringHelper.FillMode.right));
}
// // Core 2 Duo Notebook: 0,75 sec
// public void testFillUpPerf() {
// for (int i = 0; i < 1000000; i++) {
// StringHelper.fillUp("hello world", 20, ' ', StringHelper.FillMode.left);
// StringHelper.fillUp("hello world", 20, ' ', StringHelper.FillMode.right);
// }
// }
public void testSplitWhitespace() {
List<String> sp = StringHelper.split("\t1 22\n\t\t 333 \n4444\n");
assertEquals(4, sp.size());
assertEquals("1", sp.get(0));
assertEquals("22", sp.get(1));
assertEquals("333", sp.get(2));
assertEquals("4444", sp.get(3));
}
public void testSplitPath() {
List<String> sp = StringHelper.split("//D:/Projects/RapidBeans\\org.rapidbeans\\src", "/\\");
assertEquals(5, sp.size());
assertEquals("D:", sp.get(0));
assertEquals("Projects", sp.get(1));
assertEquals("RapidBeans", sp.get(2));
assertEquals("org.rapidbeans", sp.get(3));
assertEquals("src", sp.get(4));
}
public void testSplitFirstWhitespace() {
assertEquals("1", StringHelper.splitFirst("\t1 22\n\t\t 333 \n4444\n"));
}
public void testSplitFirstPath() {
assertEquals("D:", StringHelper.splitFirst("//D:/Projects/RapidBeans\\org.rapidbeans\\src", "/\\"));
}
public void testSplitFirstWhitespaceNo() {
assertNull(StringHelper.splitFirst("\t \n\t\t \n\n"));
}
public void testSplitFirstWhitespaceNull() {
try {
StringHelper.splitFirst(null);
fail();
} catch (NullPointerException e) {
assertTrue(true);
}
}
public void testSplitLastWhitespace() {
assertEquals("4444", StringHelper.splitLast("\t1 22\n\t\t 333 \n4444\n"));
}
public void testSplitLastPath() {
assertEquals("src", StringHelper.splitLast("//D:/Projects/RapidBeans\\org.rapidbeans\\src", "/\\"));
}
public void testSplitBeforeLast() {
assertEquals("http://www.martin-bluemel.de",
StringHelper.splitBeforeLast("http://www.martin-bluemel.de/software", "/.-"));
}
public void testSplitBeforeLastMultipleDelimSequence() {
assertEquals("http://www.martin-bluemel.de",
StringHelper.splitBeforeLast("http://www.martin-bluemel.de/-.--..software-/./.--", "/.-"));
}
public void testSplitBeforeLastOnlyOneDelimsAround() {
assertEquals("software", StringHelper.splitBeforeLast("-.--..software-/./.--", "/.-"));
}
public void testSplitBeforeLastOnlyOneDelimsRight() {
assertEquals("software", StringHelper.splitBeforeLast("software-/./.--", "/.-"));
}
public void testSplitBeforeLastOnlyOneDelimsLeft() {
assertEquals("software", StringHelper.splitBeforeLast("-.--..software", "/.-"));
}
public void testSplitBeforeLastOnlyOneDelimsNo() {
assertEquals("software", StringHelper.splitBeforeLast("software", "/.-"));
}
public void testSplitEscaped() {
assertEquals("X,Y,Z", StringHelper.splitEscaped("X\\,Y\\,Z,Bluemel\\,Martin,ABC", ',', '\\').get(0));
assertEquals("Bluemel,Martin", StringHelper.splitEscaped("X\\,Y\\,Z,Bluemel\\,Martin,ABC", ',', '\\').get(1));
assertEquals("ABC", StringHelper.splitEscaped("X\\,Y\\,Z,Bluemel\\,Martin,ABC", ',', '\\').get(2));
}
public void testSplitQuotedMixed() {
String[] sa = StringHelper.splitQuoted(" \t Hier \n\t \"kommt die\" \t\n"
+ "\t \"kleine, schlaue\" \n \t\tMaus\n \t ");
assertEquals(4, sa.length);
assertEquals("Hier", sa[0]);
assertEquals("kommt die", sa[1]);
assertEquals("kleine, schlaue", sa[2]);
assertEquals("Maus", sa[3]);
}
public void testSplitQoutedSingle() {
String[] sa = StringHelper.splitQuoted("Hier");
assertEquals(1, sa.length);
assertEquals("Hier", sa[0]);
}
public void testSplitQoutedQuotesEscaped() {
String[] sa = StringHelper.splitQuoted("/C \"echo Hello \\\"My Folks\\\"!& pause\"");
assertEquals(2, sa.length);
assertEquals("/C", sa[0]);
assertEquals("echo Hello \"My Folks\"!& pause", sa[1]);
}
public void testSplitQuotedToken() {
final List<StringHelper.SplitToken> sl = StringHelper
.splitQuotedIsQuoted("/C \"echo Hello \\\"My Folks\\\"!& pause\"");
assertEquals(2, sl.size());
assertEquals("/C", sl.get(0).getToken());
assertEquals(false, sl.get(0).isQuoted());
assertEquals("echo Hello \"My Folks\"!& pause", sl.get(1).getToken());
assertEquals(true, sl.get(1).isQuoted());
}
public void testUpperFistCharacter() {
assertEquals("Martin", StringHelper.upperFirstCharacter("martin"));
}
public void testIsNumberOk() {
assertTrue(StringHelper.isDigitsOnly("1234455622233"));
}
public void testIsNumberFalse() {
assertFalse(StringHelper.isDigitsOnly("1234455A622233"));
}
public void testEscapeMapSimple() {
EscapeMap map = new EscapeMap(new String[] { "\b", "\\b", "\n", "\\n", "\r", "\\r", "\t", "\\t", });
assertEquals("12\\t3\\n\\xx\\bx\\r", StringHelper.escape("12\t3\n\\xx\bx\r", map));
assertEquals("12\t3\n\\xx\bx\r", StringHelper.unescape("12\\t3\\n\\xx\\bx\\r", map));
}
public void testEscapeMapBackslash() {
EscapeMap map = new EscapeMap(new String[] { "\b", "\\b", "\n", "\\n", "\r", "\\r", "\t", "\\t", "\\", "\\\\" });
assertEquals("\\\\t", StringHelper.escape("\\t", map));
assertEquals("\\t", StringHelper.unescape("\\\\t", map));
}
public void testUnescapeLf() {
assertEquals("\n", StringHelper.unescape("\\n"));
}
public void testUnescapeEscLf() {
assertEquals("\\n", StringHelper.unescape("\\\\n"));
}
}