From d381baaf330178e08595a7ac72e4c97729fef4c7 Mon Sep 17 00:00:00 2001 From: Stephen Colebourne Date: Sun, 20 Jul 2003 23:57:26 +0000 Subject: [PATCH] Update Javadoc and tests bug 21750, from Phil Steitz git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/lang/trunk@137479 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/commons/lang/StringUtils.java | 268 +++++++++++------- .../lang/StringUtilsEqualsIndexOfTest.java | 44 ++- .../lang/StringUtilsSubstringTest.java | 16 +- .../apache/commons/lang/StringUtilsTest.java | 10 +- 4 files changed, 225 insertions(+), 113 deletions(-) diff --git a/src/java/org/apache/commons/lang/StringUtils.java b/src/java/org/apache/commons/lang/StringUtils.java index d0de2a4b8..a5fc9982b 100644 --- a/src/java/org/apache/commons/lang/StringUtils.java +++ b/src/java/org/apache/commons/lang/StringUtils.java @@ -114,7 +114,7 @@ *
  • empty - a zero-length string ("") *
  • space - the space character (' ')(char 32) *
  • whitespace - the characters defined by {@link Character#isWhitespace(char)} - *
  • trim - the characters <= 32 as in {@link String#trim(String)} + *
  • trim - the characters <= 32 as in {@link String#trim()} * * *

    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() { //----------------------------------------------------------------------- /** - *

    Checks if a String is empty ("") or null. - * null returns false

    + *

    Checks if a String is empty ("") or null.

    * *
          * StringUtils.isEmpty(null)      = true
    @@ -260,7 +260,7 @@ public static boolean isBlank(String str) {
         }
     
         /**
    -     * 

    Checks if a String is not empty ("") and not null.

    + *

    Checks if a String is not empty (""), not null and not whitespace only.

    * *
          * 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] *
    * - * @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, null if null array input */ @@ -713,13 +713,13 @@ public static boolean equalsIgnoreCase(String str1, String str2) { /** *

    Finds the first index within a String, handling null. - * This method uses {@link String#indexOf(int)}

    + * 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)}

    + * 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 null. - * This method uses {@link String#indexOf(String)}

    + * 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 null. - * This method uses {@link String#indexOf(String, int)}

    + * 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 null. - * This method uses {@link String#indexOf(int)}

    + * This method uses {@link String#lastIndexOf(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 null. - * This method uses {@link String#indexOf(int, int)}

    + * This method uses {@link String#lastIndexOf(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 null. - * This method uses {@link String#indexOf(String)}

    + * This method uses {@link String#lastIndexOf(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 null. - * This method uses {@link String#indexOf(String, int)}

    + * This method uses {@link String#lastIndexOf(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 null. - * This method uses {@link String#indexOf(int)}

    + * This method uses {@link String#indexOf(int)}.

    * - *

    A null String will return -1.

    + *

    A null or empty ("") String will return false.

    * *
    -     * 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 null. - * This method uses {@link String#indexOf(String)}

    + * This method uses {@link String#indexOf(int)}.

    * - *

    A null String will return -1.

    + *

    A null String will return false.

    * *
    -     * 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 null String will return -1. - * A null search array will return -1. - * A null search array entry will be ignored.

    + * A null or zero length search array will return -1. + * A null search array entry will be ignored, but a search + * array containing "" will return 0 if str 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 null String will return -1. * A null search array will return -1. - * A null search array entry will be ignored.

    + * A null or zero length search array entry will be ignored, + * but a search array containing "" will return the length of str + * if str 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. + * A null 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. + * A null 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 return false. + * A null valid character array will return false. + * An empty String ("") always returns true.

    + * *
    -     * 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 return false. + * A null valid character String will return false. + * An empty String ("") always returns true.

    + * *
    -     * 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 return true. + * A null invalid character array will return true. + * 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 return true. + * A null invalid character array will return true. + * 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 return null. + * 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) {
          *
          * 

    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 the end 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 of end, "" + * 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"] *
    * * @param str the String to parse, may be null @@ -1521,15 +1571,17 @@ public static String[] split(String str) { *

    A null input String returns null.

    * *
    -     * 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 null input String returns null.

    * @@ -2895,7 +2947,7 @@ public static String capitalise(String str) { /** *

    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 null input String returns null.

    * 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() {