From d381baaf330178e08595a7ac72e4c97729fef4c7 Mon Sep 17 00:00:00 2001
From: Stephen Colebourne Checks if a String is empty ("") or null.
- * Checks if a String is empty ("") or null. Checks if a String is not empty ("") and not null. Checks if a String is not empty (""), not null and not whitespace only. Finds the first index within a String, handling ""
)
* ' '
)(char 32)
* StringUtils
handles null
input Strings quietly.
@@ -141,8 +141,9 @@
* @author Henning P. Schmiedehausen
* @author Arun Mammen Thomas
* @author Gary Gregory
+ * @author Phil Steitz
* @since 1.0
- * @version $Id: StringUtils.java,v 1.74 2003/07/20 15:41:52 scolebourne Exp $
+ * @version $Id: StringUtils.java,v 1.75 2003/07/20 23:57:26 scolebourne Exp $
*/
public class StringUtils {
// Performance testing notes (JDK 1.4, Jul03, scolebourne)
@@ -192,8 +193,7 @@ public StringUtils() {
//-----------------------------------------------------------------------
/**
- * null
returns false
* StringUtils.isEmpty(null) = true
@@ -260,7 +260,7 @@ public static boolean isBlank(String str) {
}
/**
- *
*
- * @param str the array to remove characters from, may be null
+ * @param strs the array to remove characters from, may be null
* @param stripChars the characters to remove, null treated as whitespace
* @return the stripped Strings,
* StringUtils.isNotBlank(null) = false
@@ -612,7 +612,7 @@ public static String stripEnd(String str, String stripChars) {
* StringUtils.stripAll(["abc ", null]) = ["abc", null]
*
*
- * @param str the array to remove whitespace from, may be null
+ * @param strs the array to remove whitespace from, may be null
* @return the stripped Strings, null
if null array input
*/
public static String[] stripAll(String[] strs) {
@@ -640,7 +640,7 @@ public static String[] stripAll(String[] strs) {
* StringUtils.stripAll(["yabcz", null], "yz") = ["abc", null]
* null
if null array input
*/
@@ -713,13 +713,13 @@ public static boolean equalsIgnoreCase(String str1, String str2) {
/**
* null
.
- * This method uses {@link String#indexOf(int)}
A null
String will return -1
.
A null
or empty ("") String will return -1
.
- * StringUtils.indexOf(null, ' ') = -1 - * StringUtils.indexOf("", ' ') = -1 + * StringUtils.indexOf(null, *) = -1 + * StringUtils.indexOf("", *) = -1 * StringUtils.indexOf("aabaabaa", 'a') = 0 * StringUtils.indexOf("aabaabaa", 'b') = 2 *@@ -739,17 +739,15 @@ public static int indexOf(String str, char searchChar) { /** *
Finds the first index within a String from a start position,
* handling null
.
- * This method uses {@link String#indexOf(int, int)}
A null
String will return -1
.
+ *
A null
or empty ("") String will return -1
.
* A negative start position is treated as zero.
* A start position greater than the string length returns -1
.
- * StringUtils.indexOf(null, ' ', 0) = -1 - * StringUtils.indexOf(null, ' ', -1) = -1 - * StringUtils.indexOf("", ' ', 0) = -1 - * StringUtils.indexOf("", ' ', -1) = -1 + * StringUtils.indexOf(null, *, *) = -1 + * StringUtils.indexOf("", *, *) = -1 * StringUtils.indexOf("aabaabaa", 'b', 0) = 2 * StringUtils.indexOf("aabaabaa", 'b', 3) = 5 * StringUtils.indexOf("aabaabaa", 'b', 9) = -1 @@ -771,17 +769,18 @@ public static int indexOf(String str, char searchChar, int startPos) { /** *Finds the first index within a String, handling
+ * This method uses {@link String#indexOf(String)}. * *null
. - * This method uses {@link String#indexOf(String)}A
* *null
String will return-1
.- * StringUtils.indexOf(null, null) = -1 - * StringUtils.indexOf("", null) = -1 + * StringUtils.indexOf(null, *) = -1 + * StringUtils.indexOf(*, null) = -1 * StringUtils.indexOf("", "") = 0 * StringUtils.indexOf("aabaabaa", "a") = 0 * StringUtils.indexOf("aabaabaa", "b") = 2 * StringUtils.indexOf("aabaabaa", "ab") = 1 + * StringUtils.indexOf("aabaabaa", "") = 0 ** * @param str the String to check, may be null @@ -798,7 +797,7 @@ public static int indexOf(String str, String searchStr) { /** *Finds the first index within a String, handling
+ * This method uses {@link String#indexOf(String, int)}. * *null
. - * This method uses {@link String#indexOf(String, int)}A
* *null
String will return-1
. * A negative start position is treated as zero. @@ -807,10 +806,8 @@ public static int indexOf(String str, String searchStr) { * an empty search String.- * StringUtils.indexOf(null, null, 0) = -1 - * StringUtils.indexOf(null, null, -1) = -1 - * StringUtils.indexOf("", null, 0) = -1 - * StringUtils.indexOf("", null, -1) = -1 + * StringUtils.indexOf(null, *, *) = -1 + * StringUtils.indexOf(*, null, *) = -1 * StringUtils.indexOf("", "", 0) = 0 * StringUtils.indexOf("aabaabaa", "a", 0) = 0 * StringUtils.indexOf("aabaabaa", "b", 0) = 2 @@ -818,6 +815,7 @@ public static int indexOf(String str, String searchStr) { * StringUtils.indexOf("aabaabaa", "b", 3) = 5 * StringUtils.indexOf("aabaabaa", "b", 9) = -1 * StringUtils.indexOf("aabaabaa", "b", -1) = 2 + * StringUtils.indexOf("aabaabaa", "", 2) = 2 ** * @param str the String to check, may be null @@ -838,13 +836,13 @@ public static int indexOf(String str, String searchStr, int startPos) { /** *Finds the last index within a String, handling
+ * This method uses {@link String#lastIndexOf(int)}. * - *null
. - * This method uses {@link String#indexOf(int)}A
+ *null
String will return-1
.A
* *null
or empty ("") String will return-1
.- * StringUtils.lastIndexOf(null, ' ') = -1 - * StringUtils.lastIndexOf("", ' ') = -1 + * StringUtils.lastIndexOf(null, *) = -1 + * StringUtils.lastIndexOf("", *) = -1 * StringUtils.lastIndexOf("aabaabaa", 'a') = 7 * StringUtils.lastIndexOf("aabaabaa", 'b') = 5 *@@ -864,22 +862,21 @@ public static int lastIndexOf(String str, char searchChar) { /** *Finds the last index within a String from a start position, * handling
+ * This method uses {@link String#lastIndexOf(int, int)}. * - *null
. - * This method uses {@link String#indexOf(int, int)}A
null
String will return-1
. - * A negative or zero start position returns-1
. + *A
* *null
or empty ("") String will return-1
. + * A negative start position returns-1
. * A start position greater than the string length searches the whole string.- * StringUtils.lastIndexOf(null, ' ', 0) = -1 - * StringUtils.lastIndexOf(null, ' ', -1) = -1 - * StringUtils.lastIndexOf("", ' ', 0) = -1 - * StringUtils.lastIndexOf("", ' ', -1) = -1 + * StringUtils.lastIndexOf(null, *, *) = -1 + * StringUtils.lastIndexOf("", *, *) = -1 * StringUtils.lastIndexOf("aabaabaa", 'b', 8) = 5 * StringUtils.lastIndexOf("aabaabaa", 'b', 4) = 2 * StringUtils.lastIndexOf("aabaabaa", 'b', 0) = -1 * StringUtils.lastIndexOf("aabaabaa", 'b', 9) = 5 * StringUtils.lastIndexOf("aabaabaa", 'b', -1) = -1 + * StringUtils.lastIndexOf("aabaabaa", 'a', 0) = 0 ** * @param str the String to check, may be null @@ -897,17 +894,18 @@ public static int lastIndexOf(String str, char searchChar, int startPos) { /** *Finds the last index within a String, handling
+ * This method uses {@link String#lastIndexOf(String)}. * *null
. - * This method uses {@link String#indexOf(String)}A
* *null
String will return-1
.- * StringUtils.lastIndexOf(null, null) = -1 - * StringUtils.lastIndexOf("", null) = -1 + * StringUtils.lastIndexOf(null, *) = -1 + * StringUtils.lastIndexOf(*, null) = -1 * StringUtils.lastIndexOf("", "") = 0 * StringUtils.lastIndexOf("aabaabaa", "a") = 0 * StringUtils.lastIndexOf("aabaabaa", "b") = 2 * StringUtils.lastIndexOf("aabaabaa", "ab") = 1 + * StringUtils.lastIndexOf("aabaabaa", "") = 8 ** * @param str the String to check, may be null @@ -924,24 +922,23 @@ public static int lastIndexOf(String str, String searchStr) { /** *Finds the first index within a String, handling
+ * This method uses {@link String#lastIndexOf(String, int)}. * *null
. - * This method uses {@link String#indexOf(String, int)}A
* *null
String will return-1
. * A negative start position returns-1
. - * A zero start position only matches an empty String (""). - * An empty ("") search String always matches unless start position negative. + * An empty ("") search String always matches unless the start position is negative. * A start position greater than the string length searches the whole string.- * StringUtils.lastIndexOf(null, null, 0) = -1 - * StringUtils.lastIndexOf(null, null, -1) = -1 - * StringUtils.lastIndexOf("", null, 0) = -1 - * StringUtils.lastIndexOf("", null, -1) = -1 + * StringUtils.lastIndexOf(null, *, *) = -1 + * StringUtils.lastIndexOf(*, null, *) = -1 * StringUtils.lastIndexOf("aabaabaa", "a", 8) = 7 * StringUtils.lastIndexOf("aabaabaa", "b", 8) = 5 * StringUtils.lastIndexOf("aabaabaa", "ab", 8) = 4 * StringUtils.lastIndexOf("aabaabaa", "b", 9) = 5 * StringUtils.lastIndexOf("aabaabaa", "b", -1) = -1 + * StringUtils.lastIndexOf("aabaabaa", "a", 0) = 0 + * StringUtils.lastIndexOf("aabaabaa", "b", 0) = -1 ** * @param str the String to check, may be null @@ -962,13 +959,13 @@ public static int lastIndexOf(String str, String searchStr, int startPos) { /** *Checks if String contains a search character, handling
+ * This method uses {@link String#indexOf(int)}. * - *null
. - * This method uses {@link String#indexOf(int)}A
+ *null
String will return-1
.A
* *null
or empty ("") String will returnfalse
.- * StringUtils.contains(null, ' ') = false - * StringUtils.contains("", ' ') = false + * StringUtils.contains(null, *) = false + * StringUtils.contains("", *) = false * StringUtils.contains("abc", 'a') = true * StringUtils.contains("abc", 'z') = false *@@ -987,13 +984,13 @@ public static boolean contains(String str, char searchChar) { /** *Find the first index within a String, handling
+ * This method uses {@link String#indexOf(int)}. * - *null
. - * This method uses {@link String#indexOf(String)}A
+ *null
String will return-1
.A
* *null
String will returnfalse
.- * StringUtils.contains(null, null) = false - * StringUtils.contains("", null) = false + * StringUtils.contains(null, *) = false + * StringUtils.contains(*, null) = false * StringUtils.contains("", "") = true * StringUtils.contains("abc", "") = true * StringUtils.contains("abc", "a") = true @@ -1019,19 +1016,22 @@ public static boolean contains(String str, String searchStr) { *Find the first index of any of a set of potential substrings.
* *A
+ * Anull
String will return-1
. - * Anull
search array will return-1
. - * Anull
search array entry will be ignored.null
or zero length search array will return-1
. + * Anull
search array entry will be ignored, but a search + * array containing "" will return0
ifstr
is not + * null. This method uses {@link String#indexOf(String)}. * *- * StringUtils.indexOfAny(null, null) = -1 - * StringUtils.indexOfAny(null, ["ab","cd"]) = -1 - * StringUtils.indexOfAny("", null) = -1 - * StringUtils.indexOfAny("", ["ab","cd"]) = -1 - * StringUtils.indexOfAny("zzabyycdxx", null) = -1 - * StringUtils.indexOfAny("zzabyycdxx", []) = -1 - * StringUtils.indexOfAny("zzabyycdxx", ["ab","cd"]) = 2 - * StringUtils.indexOfAny("zzabyycdxx", ["cd","ab"]) = 2 - * StringUtils.indexOfAny("zzabyycdxx", ["mn","op"]) = -1 + * StringUtils.indexOfAny(null, *) = -1 + * StringUtils.indexOfAny(*, null) = -1 + * StringUtils.indexOfAny(*, []) = -1 + * StringUtils.indexOfAny("zzabyycdxx", ["ab","cd"]) = 2 + * StringUtils.indexOfAny("zzabyycdxx", ["cd","ab"]) = 2 + * StringUtils.indexOfAny("zzabyycdxx", ["mn","op"]) = -1 + * StringUtils.indexOfAny("zzabyycdxx", ["zab","aby"]) = 1 + * StringUtils.indexOfAny("zzabyycdxx", [""]) = 0 + * StringUtils.indexOfAny("", [""]) = 0 + * StringUtils.indexOfAny("", ["a"]) = -1 ** * @param str the String to check, may be null @@ -1071,18 +1071,20 @@ public static int indexOfAny(String str, String[] searchStrs) { * *A
+ * Anull
String will return-1
. * Anull
search array will return-1
. - * Anull
search array entry will be ignored.null
or zero length search array entry will be ignored, + * but a search array containing "" will return the length ofstr
+ * ifstr
is not null. This method uses {@link String#indexOf(String)} * *- * StringUtils.lastIndexOfAny(null, null) = -1 - * StringUtils.lastIndexOfAny(null, ["ab","cd"]) = -1 - * StringUtils.lastIndexOfAny("", null) = -1 - * StringUtils.lastIndexOfAny("", ["ab","cd"]) = -1 - * StringUtils.lastIndexOfAny("zzabyycdxx", null) = -1 - * StringUtils.lastIndexOfAny("zzabyycdxx", []) = -1 + * StringUtils.lastIndexOfAny(null, *) = -1 + * StringUtils.lastIndexOfAny(*, null) = -1 + * StringUtils.lastIndexOfAny(*, []) = -1 + * StringUtils.lastIndexOfAny(*, [null]) = -1 * StringUtils.lastIndexOfAny("zzabyycdxx", ["ab","cd"]) = 6 * StringUtils.lastIndexOfAny("zzabyycdxx", ["cd","ab"]) = 6 * StringUtils.lastIndexOfAny("zzabyycdxx", ["mn","op"]) = -1 + * StringUtils.lastIndexOfAny("zzabyycdxx", ["mn","op"]) = -1 + * StringUtils.lastIndexOfAny("zzabyycdxx", ["mn",""]) = 10 ** * @param str the String to check, may be null @@ -1115,6 +1117,17 @@ public static int lastIndexOfAny(String str, String[] searchStrs) { /** *Search a String to find the first index of any * character not in the given set of characters.
+ * + *A
+ * + *null
String will return-1
. + * Anull
or zero length search array will return-1
.+ * StringUtils.indexOfAnyBut(null, *) = -1 + * StringUtils.indexOfAnyBut(*, null) = -1 + * StringUtils.indexOfAnyBut("zzabyycdxx",'za') = 3 + * StringUtils.indexOfAnyBut("zzabyycdxx", '') = 0 + * StringUtils.indexOfAnyBut("aba", 'ab') = -1 + ** * @param str the String to check, may be null * @param searchChars the chars to search for, may be null @@ -1130,7 +1143,18 @@ public static int indexOfAnyBut(String str, char[] searchChars) { /** *Search a String to find the first index of any * character not in the given set of characters.
+ * + *A
* + *null
String will return-1
. + * Anull
search string will return-1
.+ * StringUtils.indexOfAnyBut(null, *) = -1 + * StringUtils.indexOfAnyBut(*, null) = -1 + * StringUtils.indexOfAnyBut("zzabyycdxx", "za") = 3 + * StringUtils.indexOfAnyBut("zzabyycdxx", "") = 0 + * StringUtils.indexOfAnyBut("aba","ab") = -1 + *+ * * @param str the String to check, may be null * @param searchChars the chars to search for, may be null * @return the index of any of the chars, -1 if no match or null input @@ -1155,11 +1179,14 @@ public static int indexOfAnyBut(String str, String searchChars) { /** *Checks if the String contains only certain characters.
* + *A
+ * *null
String will returnfalse
. + * Anull
valid character array will returnfalse
. + * An empty String ("") always returnstrue
.- * StringUtils.containsOnly(null, 'abc') = false - * StringUtils.containsOnly("", null) = false - * StringUtils.containsOnly("", 'abc') = true - * StringUtils.containsOnly("", '') = true + * StringUtils.containsOnly(null, *) = false + * StringUtils.containsOnly(*, null) = false + * StringUtils.containsOnly("", *) = true * StringUtils.containsOnly("ab", '') = false * StringUtils.containsOnly("abab", 'abc') = true * StringUtils.containsOnly("ab1", 'abc') = false @@ -1187,11 +1214,14 @@ public static boolean containsOnly(String str, char[] valid) { /** *Checks if the String contains only certain characters.
* + *A
+ * *null
String will returnfalse
. + * Anull
valid character String will returnfalse
. + * An empty String ("") always returnstrue
.- * StringUtils.containsOnly(null, "abc") = false - * StringUtils.containsOnly("", null) = false - * StringUtils.containsOnly("", "abc") = true - * StringUtils.containsOnly("", "") = true + * StringUtils.containsOnly(null, *) = false + * StringUtils.containsOnly(*, null) = false + * StringUtils.containsOnly("", *) = true * StringUtils.containsOnly("ab", "") = false * StringUtils.containsOnly("abab", "abc") = true * StringUtils.containsOnly("ab1", "abc") = false @@ -1215,15 +1245,18 @@ public static boolean containsOnly(String str, String validChars) { /** *Checks that the String does not contain certain characters.
* + *A
+ * *null
String will returntrue
. + * Anull
invalid character array will returntrue
. + * An empty String ("") always returns true.- * StringUtils.containsOnly(null, 'xyz') = true - * StringUtils.containsOnly("", null) = true - * StringUtils.containsOnly("", 'xyz') = true - * StringUtils.containsOnly("", '') = true - * StringUtils.containsOnly("ab", '') = true - * StringUtils.containsOnly("abab", 'xyz') = true - * StringUtils.containsOnly("ab1", 'xyz') = true - * StringUtils.containsOnly("abz", 'xyz') = false + * StringUtils.containsNone(null, *) = true + * StringUtils.containsNone(*, null) = true + * StringUtils.containsNone("", *) = true + * StringUtils.containsNone("ab", '') = true + * StringUtils.containsNone("abab", 'xyz') = true + * StringUtils.containsNone("ab1", 'xyz') = true + * StringUtils.containsNone("abz", 'xyz') = false ** * @param str the String to check, may be null @@ -1250,15 +1283,18 @@ public static boolean containsNone(String str, char[] invalidChars) { /** *Checks that the String does not contain certain characters.
* + *A
+ * *null
String will returntrue
. + * Anull
invalid character array will returntrue
. + * An empty String ("") always returns true.- * StringUtils.containsOnly(null, "xyz") = true - * StringUtils.containsOnly("", null) = true - * StringUtils.containsOnly("", "xyz") = true - * StringUtils.containsOnly("", "") = true - * StringUtils.containsOnly("ab", "") = true - * StringUtils.containsOnly("abab", "xyz") = true - * StringUtils.containsOnly("ab1", "xyz") = true - * StringUtils.containsOnly("abz", "xyz") = false + * StringUtils.containsNone(null, *) = true + * StringUtils.containsNone(*, null) = true + * StringUtils.containsNone("", *) = true + * StringUtils.containsNone("ab", "") = true + * StringUtils.containsNone("abab", "xyz") = true + * StringUtils.containsNone("ab1", "xyz") = true + * StringUtils.containsNone("abz", "xyz") = false ** * @param str the String to check, may be null @@ -1280,10 +1316,13 @@ public static boolean containsNone(String str, String invalidChars) { * *A negative start position can be used to start
+ * + *n
* characters from the end of the String.A
* *null
String will returnnull
. + * An empty ("") String will return "".- * StringUtils.substring(null, 0) = null - * StringUtils.substring("", 0) = "" + * StringUtils.substring(null, *) = null + * StringUtils.substring("", *) = "" * StringUtils.substring("abc", 0) = "abc" * StringUtils.substring("abc", 2) = "c" * StringUtils.substring("abc", 4) = "" @@ -1321,14 +1360,24 @@ public static String substring(String str, int start) { * ** * @param str the String to parse, may be null @@ -1521,15 +1571,17 @@ public static String[] split(String str) { *A negative start position can be used to start/end
+ * + *n
* characters from the end of the String.The returned substring starts with the character in the
+ * + *start
+ * position and ends before theend
position. All postion counting is + * zero-based -- i.e., to start at the beginning of the string use + *start = 0
. Negative start and end positions can be used to + * specify offsets relative to the end of the String.If
* *start
is not strictly to the left ofend
, "" + * is returned.- * StringUtils.substring(null, 0, 2) = null - * StringUtils.substring("", 0, 2) = "" + * StringUtils.substring(null, *, *) = null + * StringUtils.substring("", * , *) = ""; * StringUtils.substring("abc", 0, 2) = "ab" * StringUtils.substring("abc", 2, 0) = "" * StringUtils.substring("abc", 2, 4) = "c" * StringUtils.substring("abc", 4, 6) = "" + * StringUtils.substring("abc", 2, 2) = "" * StringUtils.substring("abc", -2, -1) = "b" * StringUtils.substring("abc", -4, 2) = "ab" *@@ -1502,6 +1551,7 @@ public static String mid(String str, int pos, int len) { * StringUtils.split("") = [] * StringUtils.split("abc def") = ["abc", "def"] * StringUtils.split("abc def") = ["abc", "def"] + * StringUtils.split(" abc ") = ["abc"] *A
* *null
input String returnsnull
.- * StringUtils.split(null, '.') = null - * StringUtils.split("", '.') = [] - * StringUtils.split("a.b.c", '.') = ["a", "b", "c"] - * StringUtils.split("a..b.c", '.') = ["a", "b", "c"] - * StringUtils.split("a:b:c", '.') = ["a:b:c"] + * StringUtils.split(null, '.') = null + * StringUtils.split("", '.') = [] + * StringUtils.split("a.b.c", '.') = ["a", "b", "c"] + * StringUtils.split("a..b.c", '.') = ["a", "b", "c"] + * StringUtils.split("a:b:c", '.') = ["a:b:c"] + * StringUtils.split("a\tb\nc", null) = ["a", "b", "c"] + * StringUtils.split("a b c", ' ') = ["a", "b", "c"] ** * @param str the String to parse, may be null - * @param separatorChars the characters used as the delimiters, + * @param separatorChar the character used as the delimiter, *null
splits on whitespace * @return an array of parsed Strings,null
if null String input */ @@ -2868,7 +2920,7 @@ public static String lowerCase(String str) { /** *Capitalises a String changing the first letter to title case as - * per {@link Character#toTitleCase()}. No other letters are changed.
+ * per {@link Character#toTitleCase(char)}. No other letters are changed. * *A
* @@ -2895,7 +2947,7 @@ public static String capitalise(String str) { /** *null
input String returnsnull
.Uncapitalises a String changing the first letter to title case as - * per {@link Character#toLowerCase()}. No other letters are changed.
+ * per {@link Character#toLowerCase(char)}. No other letters are changed. * *A
* diff --git a/src/test/org/apache/commons/lang/StringUtilsEqualsIndexOfTest.java b/src/test/org/apache/commons/lang/StringUtilsEqualsIndexOfTest.java index 42b1dda4d..f15a48d43 100644 --- a/src/test/org/apache/commons/lang/StringUtilsEqualsIndexOfTest.java +++ b/src/test/org/apache/commons/lang/StringUtilsEqualsIndexOfTest.java @@ -63,7 +63,8 @@ * * @author Stephen Colebourne * @author Ringo De Smet - * @version $Id: StringUtilsEqualsIndexOfTest.java,v 1.3 2003/07/19 23:29:06 scolebourne Exp $ + * @author Phil Steitz + * @version $Id: StringUtilsEqualsIndexOfTest.java,v 1.4 2003/07/20 23:57:26 scolebourne Exp $ */ public class StringUtilsEqualsIndexOfTest extends TestCase { private static final String FOO = "foo"; @@ -142,6 +143,7 @@ public void testIndexOf_String() { assertEquals(0, StringUtils.indexOf("aabaabaa", "a")); assertEquals(2, StringUtils.indexOf("aabaabaa", "b")); assertEquals(1, StringUtils.indexOf("aabaabaa", "ab")); + assertEquals(0, StringUtils.indexOf("aabaabaa", "")); } public void testIndexOf_StringInt() { @@ -163,6 +165,7 @@ public void testIndexOf_StringInt() { assertEquals(5, StringUtils.indexOf("aabaabaa", "b", 3)); assertEquals(-1, StringUtils.indexOf("aabaabaa", "b", 9)); assertEquals(2, StringUtils.indexOf("aabaabaa", "b", -1)); + assertEquals(2,StringUtils.indexOf("aabaabaa", "", 2)); } //----------------------------------------------------------------------- @@ -183,12 +186,15 @@ public void testLastIndexOf_charInt() { assertEquals(2, StringUtils.lastIndexOf("aabaabaa", 'b', 3)); assertEquals(5, StringUtils.lastIndexOf("aabaabaa", 'b', 9)); assertEquals(-1, StringUtils.lastIndexOf("aabaabaa", 'b', -1)); + assertEquals(0, StringUtils.lastIndexOf("aabaabaa", 'a', 0)); } public void testLastIndexOf_String() { assertEquals(-1, StringUtils.lastIndexOf(null, null)); assertEquals(-1, StringUtils.lastIndexOf("", null)); + assertEquals(-1, StringUtils.lastIndexOf("", "a")); assertEquals(0, StringUtils.lastIndexOf("", "")); + assertEquals(8, StringUtils.lastIndexOf("aabaabaa", "")); assertEquals(7, StringUtils.lastIndexOf("aabaabaa", "a")); assertEquals(5, StringUtils.lastIndexOf("aabaabaa", "b")); assertEquals(4, StringUtils.lastIndexOf("aabaabaa", "ab")); @@ -213,19 +219,23 @@ public void testLastIndexOf_StringInt() { assertEquals(2, StringUtils.lastIndexOf("aabaabaa", "b", 3)); assertEquals(5, StringUtils.lastIndexOf("aabaabaa", "b", 9)); assertEquals(-1, StringUtils.lastIndexOf("aabaabaa", "b", -1)); + assertEquals(-1, StringUtils.lastIndexOf("aabaabaa", "b", 0)); + assertEquals(0, StringUtils.lastIndexOf("aabaabaa", "a", 0)); } //----------------------------------------------------------------------- - public void contains_char() { + public void testContainsChar() { assertEquals(false, StringUtils.contains(null, ' ')); assertEquals(false, StringUtils.contains("", ' ')); + assertEquals(false, StringUtils.contains("",null)); + assertEquals(false, StringUtils.contains(null,null)); assertEquals(true, StringUtils.contains("abc", 'a')); assertEquals(true, StringUtils.contains("abc", 'b')); assertEquals(true, StringUtils.contains("abc", 'c')); assertEquals(false, StringUtils.contains("abc", 'z')); } - public void contains_String() { + public void testContainsString() { assertEquals(false, StringUtils.contains(null, null)); assertEquals(false, StringUtils.contains(null, "")); assertEquals(false, StringUtils.contains(null, "a")); @@ -246,7 +256,15 @@ public void testIndexOfAny() { assertEquals(-1, StringUtils.indexOfAny(FOOBAR, null)); assertEquals(2, StringUtils.indexOfAny(FOOBAR, FOOBAR_SUB_ARRAY)); assertEquals(-1, StringUtils.indexOfAny(FOOBAR, new String[0])); + assertEquals(-1, StringUtils.indexOfAny(null, new String[0])); + assertEquals(-1, StringUtils.indexOfAny("", new String[0])); assertEquals(-1, StringUtils.indexOfAny(FOOBAR, new String[] {"llll"})); + assertEquals(0, StringUtils.indexOfAny(FOOBAR, new String[] {""})); + assertEquals(0, StringUtils.indexOfAny("", new String[] {""})); + assertEquals(-1, StringUtils.indexOfAny("", new String[] {"a"})); + assertEquals(-1, StringUtils.indexOfAny("", new String[] {null})); + assertEquals(-1, StringUtils.indexOfAny(FOOBAR, new String[] {null})); + assertEquals(-1, StringUtils.indexOfAny(null, new String[] {null})); } public void testLastIndexOfAny() { @@ -255,7 +273,15 @@ public void testLastIndexOfAny() { assertEquals(-1, StringUtils.lastIndexOfAny(FOOBAR, null)); assertEquals(3, StringUtils.lastIndexOfAny(FOOBAR, FOOBAR_SUB_ARRAY)); assertEquals(-1, StringUtils.lastIndexOfAny(FOOBAR, new String[0])); + assertEquals(-1, StringUtils.lastIndexOfAny(null, new String[0])); + assertEquals(-1, StringUtils.lastIndexOfAny("", new String[0])); assertEquals(-1, StringUtils.lastIndexOfAny(FOOBAR, new String[] {"llll"})); + assertEquals(6, StringUtils.lastIndexOfAny(FOOBAR, new String[] {""})); + assertEquals(0, StringUtils.lastIndexOfAny("", new String[] {""})); + assertEquals(-1, StringUtils.lastIndexOfAny("", new String[] {"a"})); + assertEquals(-1, StringUtils.lastIndexOfAny("", new String[] {null})); + assertEquals(-1, StringUtils.lastIndexOfAny(FOOBAR, new String[] {null})); + assertEquals(-1, StringUtils.lastIndexOfAny(null, new String[] {null})); } //----------------------------------------------------------------------- @@ -281,6 +307,18 @@ public void testIndexOfAnyBut() { assertEquals(0, StringUtils.indexOfAnyBut(str3, chars1)); assertEquals(1, StringUtils.indexOfAnyBut(str3, chars2)); assertEquals(-1, StringUtils.indexOfAnyBut(str3, chars3)); + assertEquals(3, StringUtils.indexOfAnyBut("zzabyycdxx", "za")); + assertEquals(0, StringUtils.indexOfAnyBut("zzabyycdxx", "")); + assertEquals(-1, StringUtils.indexOfAnyBut("aba","ab")); + } + + //----------------------------------------------------------------------- + public void testIndexOfAnyButChar() { + assertEquals(-1, StringUtils.indexOfAnyBut(null, new char[0])); + assertEquals(-1, StringUtils.indexOfAnyBut("", new char[0])); + assertEquals(3, StringUtils.indexOfAnyBut("zzabyycdxx", new char[] {'z','a'})); + assertEquals(0, StringUtils.indexOfAnyBut("zzabyycdxx", new char[0])); + assertEquals(-1, StringUtils.indexOfAnyBut("ab", new char[] {'a','b'})); } //----------------------------------------------------------------------- diff --git a/src/test/org/apache/commons/lang/StringUtilsSubstringTest.java b/src/test/org/apache/commons/lang/StringUtilsSubstringTest.java index 95001d240..a850b0d12 100644 --- a/src/test/org/apache/commons/lang/StringUtilsSubstringTest.java +++ b/src/test/org/apache/commons/lang/StringUtilsSubstringTest.java @@ -63,7 +63,8 @@ * * @author Stephen Colebourne * @author Ringo De Smet - * @version $Id: StringUtilsSubstringTest.java,v 1.6 2003/07/20 15:29:44 scolebourne Exp $ + * @author Phil Steitz + * @version $Id: StringUtilsSubstringTest.java,v 1.7 2003/07/20 23:57:26 scolebourne Exp $ */ public class StringUtilsSubstringTest extends TestCase { private static final String FOO = "foo"; @@ -111,8 +112,21 @@ public void testSubstring3() { assertEquals(FOO, StringUtils.substring(SENTENCE, 0, -8)); assertEquals("o", StringUtils.substring(SENTENCE, -9, -8)); assertEquals(SENTENCE, StringUtils.substring(SENTENCE, 0, 80)); + assertEquals("", StringUtils.substring(SENTENCE, 2, 2)); + assertEquals("b",StringUtils.substring("abc", -2, -1)); } + public void testSubstring4() { + assertEquals("", StringUtils.substring("",0)); + assertEquals("", StringUtils.substring("",2)); + assertEquals("", StringUtils.substring("",0,0)); + assertEquals("", StringUtils.substring("",1,2)); + assertEquals("", StringUtils.substring("",-2,-1)); + assertEquals(null, StringUtils.substring(null,0)); + assertEquals(null, StringUtils.substring(null,0,0)); + assertEquals(null, StringUtils.substring(null,1,2)); + } + public void testLeft() { assertSame(null, StringUtils.left(null, 0)); assertSame(null, StringUtils.left(null, 2)); diff --git a/src/test/org/apache/commons/lang/StringUtilsTest.java b/src/test/org/apache/commons/lang/StringUtilsTest.java index 5a56628f2..1ab666a90 100644 --- a/src/test/org/apache/commons/lang/StringUtilsTest.java +++ b/src/test/org/apache/commons/lang/StringUtilsTest.java @@ -71,7 +71,8 @@ * @author Henning P. Schmiedehausen - * @version $Id: StringUtilsTest.java,v 1.35 2003/07/20 15:49:58 scolebourne Exp $ + * @author Phil Steitz + * @version $Id: StringUtilsTest.java,v 1.36 2003/07/20 23:57:26 scolebourne Exp $ */ public class StringUtilsTest extends TestCase { @@ -276,6 +277,13 @@ public void testSplit_StringChar() { res = StringUtils.split(str, '.'); assertEquals(1, res.length); assertEquals("a", res[0]); + + str = "a b c"; + res = StringUtils.split(str,' '); + assertEquals(3, res.length); + assertEquals("a", res[0]); + assertEquals("b", res[1]); + assertEquals("c", res[2]); } public void testSplit_StringString_StringStringInt() {null
input String returnsnull
.