Author: niallp
Date: Fri Jun 29 20:25:53 2007
New Revision: 552088

URL: http://svn.apache.org/viewvc?view=rev&rev=552088
Log:
LANG-326 - StringUtils: startsWith / endsWith / startsWithIgnoreCase / 
endsWithIgnoreCase / removeStartIgnoreCase / removeEndIgnoreCase methods

Added:
    
jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/StringUtilsStartsEndsWithTest.java
   (with props)
Modified:
    
jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/StringUtils.java
    
jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/LangTestSuite.java
    
jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/StringUtilsTest.java

Modified: 
jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/StringUtils.java
URL: 
http://svn.apache.org/viewvc/jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/StringUtils.java?view=diff&rev=552088&r1=552087&r2=552088
==============================================================================
--- 
jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/StringUtils.java
 (original)
+++ 
jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/StringUtils.java
 Fri Jun 29 20:25:53 2007
@@ -32,6 +32,10 @@
  *      - removes leading and trailing whitespace</li>
  *  <li><b>Equals</b>
  *      - compares two strings null-safe</li>
+ *  <li><b>startsWith</b>
+ *      - check if a String starts with a prefix null-safe</li>
+ *  <li><b>endsWith</b>
+ *      - check if a String ends with a suffix null-safe</li>
  *  <li><b>IndexOf/LastIndexOf/Contains</b>
  *      - null-safe index-of checks
  *  <li><b>IndexOfAny/LastIndexOfAny/IndexOfAnyBut/LastIndexOfAnyBut</b>
@@ -2982,6 +2986,41 @@
     }
 
     /**
+     * <p>Case insensitive removal of a substring if it is at the begining of 
a source string,
+     * otherwise returns the source string.</p>
+     *
+     * <p>A <code>null</code> source string will return <code>null</code>.
+     * An empty ("") source string will return the empty string.
+     * A <code>null</code> search string will return the source string.</p>
+     *
+     * <pre>
+     * StringUtils.removeStartIgnoreCase(null, *)      = null
+     * StringUtils.removeStartIgnoreCase("", *)        = ""
+     * StringUtils.removeStartIgnoreCase(*, null)      = *
+     * StringUtils.removeStartIgnoreCase("www.domain.com", "www.")   = 
"domain.com"
+     * StringUtils.removeStartIgnoreCase("www.domain.com", "WWW.")   = 
"domain.com"
+     * StringUtils.removeStartIgnoreCase("domain.com", "www.")       = 
"domain.com"
+     * StringUtils.removeStartIgnoreCase("www.domain.com", "domain") = 
"www.domain.com"
+     * StringUtils.removeStartIgnoreCase("abc", "")    = "abc"
+     * </pre>
+     *
+     * @param str  the source String to search, may be null
+     * @param remove  the String to search for (case insensitive) and remove, 
may be null
+     * @return the substring with the string removed if found,
+     *  <code>null</code> if null String input
+     * @since 2.4
+     */
+    public static String removeStartIgnoreCase(String str, String remove) {
+        if (isEmpty(str) || isEmpty(remove)) {
+            return str;
+        }
+        if (startsWithIgnoreCase(str, remove)){
+            return str.substring(remove.length());
+        }
+        return str;
+    }
+
+    /**
      * <p>Removes a substring only if it is at the end of a source string,
      * otherwise returns the source string.</p>
      *
@@ -3016,6 +3055,40 @@
     }
 
     /**
+     * <p>Case insensitive removal of a substring if it is at the end of a 
source string,
+     * otherwise returns the source string.</p>
+     *
+     * <p>A <code>null</code> source string will return <code>null</code>.
+     * An empty ("") source string will return the empty string.
+     * A <code>null</code> search string will return the source string.</p>
+     *
+     * <pre>
+     * StringUtils.removeEnd(null, *)      = null
+     * StringUtils.removeEnd("", *)        = ""
+     * StringUtils.removeEnd(*, null)      = *
+     * StringUtils.removeEnd("www.domain.com", ".com.")  = "www.domain.com."
+     * StringUtils.removeEnd("www.domain.com", ".com")   = "www.domain"
+     * StringUtils.removeEnd("www.domain.com", "domain") = "www.domain.com"
+     * StringUtils.removeEnd("abc", "")    = "abc"
+     * </pre>
+     *
+     * @param str  the source String to search, may be null
+     * @param remove  the String to search for (case insensitive) and remove, 
may be null
+     * @return the substring with the string removed if found,
+     *  <code>null</code> if null String input
+     * @since 2.4
+     */
+    public static String removeEndIgnoreCase(String str, String remove) {
+        if (isEmpty(str) || isEmpty(remove)) {
+            return str;
+        }
+        if (endsWithIgnoreCase(str, remove)) {
+            return str.substring(0, str.length() - remove.length());
+        }
+        return str;
+    }
+
+    /**
      * <p>Removes all occurances of a substring from within the source 
string.</p>
      *
      * <p>A <code>null</code> source string will return <code>null</code>.
@@ -5058,5 +5131,154 @@
         return a;
     }
 */
+
+    // startsWith
+    //-----------------------------------------------------------------------
+
+    /**
+     * <p>Check if a String starts with a specified prefix.</p>
+     *
+     * <p><code>null</code>s are handled without exceptions. Two 
<code>null</code>
+     * references are considered to be equal. The comparison is case 
sensitive.</p>
+     *
+     * <pre>
+     * StringUtils.startsWith(null, null)      = true
+     * StringUtils.startsWith(null, "abcdef")  = false
+     * StringUtils.startsWith("abc", null)     = false
+     * StringUtils.startsWith("abc", "abcdef") = true
+     * StringUtils.startsWith("abc", "ABCDEF") = false
+     * </pre>
+     *
+     * @see java.lang.String#startsWith(String)
+     * @param str  the String to check, may be null
+     * @param prefix the prefix to find, may be null
+     * @return <code>true</code> if the String starts with the prefix, case 
sensitive, or
+     *  both <code>null</code>
+     * @since 2.4
+     */
+    public static boolean startsWith(String str, String prefix) {
+        return startsWith(str, prefix, false);
+    }
+
+    /**
+     * <p>Case insensitive check if a String starts with a specified 
prefix.</p>
+     *
+     * <p><code>null</code>s are handled without exceptions. Two 
<code>null</code>
+     * references are considered to be equal. The comparison is case 
insensitive.</p>
+     *
+     * <pre>
+     * StringUtils.startsWithIgnoreCase(null, null)      = true
+     * StringUtils.startsWithIgnoreCase(null, "abcdef")  = false
+     * StringUtils.startsWithIgnoreCase("abc", null)     = false
+     * StringUtils.startsWithIgnoreCase("abc", "abcdef") = true
+     * StringUtils.startsWithIgnoreCase("abc", "ABCDEF") = true
+     * </pre>
+     *
+     * @see java.lang.String#startsWith(String)
+     * @param str  the String to check, may be null
+     * @param prefix the prefix to find, may be null
+     * @return <code>true</code> if the String starts with the prefix, case 
insensitive, or
+     *  both <code>null</code>
+     * @since 2.4
+     */
+    public static boolean startsWithIgnoreCase(String str, String prefix) {
+        return startsWith(str, prefix, true);
+    }
+
+    /**
+     * <p>Check if a String starts with a specified prefix (optionally case 
insensitive).</p>
+     *
+     * @see java.lang.String#startsWith(String)
+     * @param str  the String to check, may be null
+     * @param prefix the prefix to find, may be null
+     * @param ignoreCase inidicates whether the compare should ignore case
+     *  (case insensitive) or not.
+     * @return <code>true</code> if the String starts with the prefix or
+     *  both <code>null</code>
+     */
+    private static boolean startsWith(String str, String prefix, boolean 
ignoreCase) {
+        if (str == null || prefix == null) {
+            return (str == null && prefix == null);
+        }
+        if (prefix.length() > str.length()) {
+            return false;
+        }
+        return str.regionMatches(ignoreCase, 0, prefix, 0, prefix.length());
+    }
+
+    // endsWith
+    //-----------------------------------------------------------------------
+
+    /**
+     * <p>Check if a String ends with a specified suffix.</p>
+     *
+     * <p><code>null</code>s are handled without exceptions. Two 
<code>null</code>
+     * references are considered to be equal. The comparison is case 
sensitive.</p>
+     *
+     * <pre>
+     * StringUtils.endsWith(null, null)      = true
+     * StringUtils.endsWith(null, "abcdef")  = false
+     * StringUtils.endsWith("def", null)     = false
+     * StringUtils.endsWith("def", "abcdef") = true
+     * StringUtils.endsWith("def", "ABCDEF") = false
+     * </pre>
+     *
+     * @see java.lang.String#endsWith(String)
+     * @param str  the String to check, may be null
+     * @param suffix the suffix to find, may be null
+     * @return <code>true</code> if the String ends with the suffix, case 
sensitive, or
+     *  both <code>null</code>
+     * @since 2.4
+     */
+    public static boolean endsWith(String str, String suffix) {
+        return endsWith(str, suffix, false);
+    }
+
+    /**
+     * <p>Case insensitive check if a String ends with a specified suffix.</p>
+     *
+     * <p><code>null</code>s are handled without exceptions. Two 
<code>null</code>
+     * references are considered to be equal. The comparison is case 
insensitive.</p>
+     *
+     * <pre>
+     * StringUtils.endsWithIgnoreCase(null, null)      = true
+     * StringUtils.endsWithIgnoreCase(null, "abcdef")  = false
+     * StringUtils.endsWithIgnoreCase("def", null)     = false
+     * StringUtils.endsWithIgnoreCase("def", "abcdef") = true
+     * StringUtils.endsWithIgnoreCase("def", "ABCDEF") = false
+     * </pre>
+     *
+     * @see java.lang.String#endsWith(String)
+     * @param str  the String to check, may be null
+     * @param suffix the suffix to find, may be null
+     * @return <code>true</code> if the String ends with the suffix, case 
insensitive, or
+     *  both <code>null</code>
+     * @since 2.4
+     */
+    public static boolean endsWithIgnoreCase(String str, String suffix) {
+        return endsWith(str, suffix, true);
+    }
+
+    /**
+     * <p>Check if a String ends with a specified suffix (optionally case 
insensitive).</p>
+     *
+     * @see java.lang.String#endsWith(String)
+     * @param str  the String to check, may be null
+     * @param suffix the suffix to find, may be null
+     * @param ignoreCase inidicates whether the compare should ignore case
+     *  (case insensitive) or not.
+     * @return <code>true</code> if the String starts with the prefix or
+     *  both <code>null</code>
+     */
+    private static boolean endsWith(String str, String suffix, boolean 
ignoreCase) {
+        if (str == null || suffix == null) {
+            return (str == null && suffix == null);
+        }
+        if (suffix.length() > str.length()) {
+            return false;
+        }
+        int strOffset = str.length() - suffix.length();
+        return str.regionMatches(ignoreCase, strOffset, suffix, 0, 
suffix.length());
+    }
 
 }

Modified: 
jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/LangTestSuite.java
URL: 
http://svn.apache.org/viewvc/jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/LangTestSuite.java?view=diff&rev=552088&r1=552087&r2=552088
==============================================================================
--- 
jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/LangTestSuite.java
 (original)
+++ 
jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/LangTestSuite.java
 Fri Jun 29 20:25:53 2007
@@ -79,6 +79,7 @@
         suite.addTest(StringUtilsSubstringTest.suite());
         suite.addTest(StringUtilsEqualsIndexOfTest.suite());
         suite.addTest(StringUtilsIsTest.suite());
+        suite.addTest(StringUtilsStartsEndsWithTest.suite());
         suite.addTest(StringEscapeUtilsTest.suite());
         suite.addTest(SystemUtilsTest.suite());
         suite.addTest(UnhandledExceptionTest.suite());

Added: 
jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/StringUtilsStartsEndsWithTest.java
URL: 
http://svn.apache.org/viewvc/jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/StringUtilsStartsEndsWithTest.java?view=auto&rev=552088
==============================================================================
--- 
jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/StringUtilsStartsEndsWithTest.java
 (added)
+++ 
jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/StringUtilsStartsEndsWithTest.java
 Fri Jun 29 20:25:53 2007
@@ -0,0 +1,154 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.lang;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+import junit.textui.TestRunner;
+
+/**
+ * Unit tests [EMAIL PROTECTED] org.apache.commons.lang.StringUtils} - 
StartsWith/EndsWith methods
+ *
+ * @version $Id$
+ */
+public class StringUtilsStartsEndsWithTest extends TestCase {
+    private static final String foo    = "foo";
+    private static final String bar    = "bar";
+    private static final String foobar = "foobar";
+    private static final String FOO    = "FOO";
+    private static final String BAR    = "BAR";
+    private static final String FOOBAR = "FOOBAR";
+
+    public StringUtilsStartsEndsWithTest(String name) {
+        super(name);
+    }
+
+    public static void main(String[] args) {
+        TestRunner.run(suite());
+    }
+
+    public static Test suite() {
+        TestSuite suite = new TestSuite(StringUtilsStartsEndsWithTest.class);
+        suite.setName("StringUtilsStartsEndsWith Tests");
+        return suite;
+    }
+
+    protected void setUp() throws Exception {
+        super.setUp();
+    }
+
+    protected void tearDown() throws Exception {
+        super.tearDown();
+    }
+
+    //-----------------------------------------------------------------------
+
+    /**
+     * Test StringUtils.startsWith()
+     */
+    public void testStartsWith() {
+        assertTrue("startsWith(null, null)", StringUtils.startsWith(null, 
(String)null));
+        assertFalse("startsWith(FOOBAR, null)", StringUtils.startsWith(FOOBAR, 
(String)null));
+        assertFalse("startsWith(null, FOO)",    StringUtils.startsWith(null, 
FOO));
+        assertTrue("startsWith(FOOBAR, \"\")",  StringUtils.startsWith(FOOBAR, 
""));
+
+        assertTrue("startsWith(foobar, foo)",  StringUtils.startsWith(foobar, 
foo));
+        assertTrue("startsWith(FOOBAR, FOO)",  StringUtils.startsWith(FOOBAR, 
FOO));
+        assertFalse("startsWith(foobar, FOO)", StringUtils.startsWith(foobar, 
FOO));
+        assertFalse("startsWith(FOOBAR, foo)", StringUtils.startsWith(FOOBAR, 
foo));
+
+        assertFalse("startsWith(foo, foobar)", StringUtils.startsWith(foo, 
foobar));
+        assertFalse("startsWith(foo, foobar)", StringUtils.startsWith(bar, 
foobar));
+
+        assertFalse("startsWith(foobar, bar)", StringUtils.startsWith(foobar, 
bar));
+        assertFalse("startsWith(FOOBAR, BAR)", StringUtils.startsWith(FOOBAR, 
BAR));
+        assertFalse("startsWith(foobar, BAR)", StringUtils.startsWith(foobar, 
BAR));
+        assertFalse("startsWith(FOOBAR, bar)", StringUtils.startsWith(FOOBAR, 
bar));
+    }
+
+    /**
+     * Test StringUtils.testStartsWithIgnoreCase()
+     */
+    public void testStartsWithIgnoreCase() {
+        assertTrue("startsWithIgnoreCase(null, null)",    
StringUtils.startsWithIgnoreCase(null, (String)null));
+        assertFalse("startsWithIgnoreCase(FOOBAR, null)", 
StringUtils.startsWithIgnoreCase(FOOBAR, (String)null));
+        assertFalse("startsWithIgnoreCase(null, FOO)",    
StringUtils.startsWithIgnoreCase(null, FOO));
+        assertTrue("startsWithIgnoreCase(FOOBAR, \"\")",  
StringUtils.startsWithIgnoreCase(FOOBAR, ""));
+
+        assertTrue("startsWithIgnoreCase(foobar, foo)", 
StringUtils.startsWithIgnoreCase(foobar, foo));
+        assertTrue("startsWithIgnoreCase(FOOBAR, FOO)", 
StringUtils.startsWithIgnoreCase(FOOBAR, FOO));
+        assertTrue("startsWithIgnoreCase(foobar, FOO)", 
StringUtils.startsWithIgnoreCase(foobar, FOO));
+        assertTrue("startsWithIgnoreCase(FOOBAR, foo)", 
StringUtils.startsWithIgnoreCase(FOOBAR, foo));
+
+        assertFalse("startsWithIgnoreCase(foo, foobar)", 
StringUtils.startsWithIgnoreCase(foo, foobar));
+        assertFalse("startsWithIgnoreCase(foo, foobar)", 
StringUtils.startsWithIgnoreCase(bar, foobar));
+
+        assertFalse("startsWithIgnoreCase(foobar, bar)", 
StringUtils.startsWithIgnoreCase(foobar, bar));
+        assertFalse("startsWithIgnoreCase(FOOBAR, BAR)", 
StringUtils.startsWithIgnoreCase(FOOBAR, BAR));
+        assertFalse("startsWithIgnoreCase(foobar, BAR)", 
StringUtils.startsWithIgnoreCase(foobar, BAR));
+        assertFalse("startsWithIgnoreCase(FOOBAR, bar)", 
StringUtils.startsWithIgnoreCase(FOOBAR, bar));
+    }
+
+
+    /**
+     * Test StringUtils.endsWith()
+     */
+    public void testEndsWith() {
+        assertTrue("endsWith(null, null)",    StringUtils.endsWith(null, 
(String)null));
+        assertFalse("endsWith(FOOBAR, null)", StringUtils.endsWith(FOOBAR, 
(String)null));
+        assertFalse("endsWith(null, FOO)",    StringUtils.endsWith(null, FOO));
+        assertTrue("endsWith(FOOBAR, \"\")",  StringUtils.endsWith(FOOBAR, 
""));
+
+        assertFalse("endsWith(foobar, foo)", StringUtils.endsWith(foobar, 
foo));
+        assertFalse("endsWith(FOOBAR, FOO)", StringUtils.endsWith(FOOBAR, 
FOO));
+        assertFalse("endsWith(foobar, FOO)", StringUtils.endsWith(foobar, 
FOO));
+        assertFalse("endsWith(FOOBAR, foo)", StringUtils.endsWith(FOOBAR, 
foo));
+
+        assertFalse("endsWith(foo, foobar)", StringUtils.endsWith(foo, 
foobar));
+        assertFalse("endsWith(foo, foobar)", StringUtils.endsWith(bar, 
foobar));
+
+        assertTrue("endsWith(foobar, bar)",  StringUtils.endsWith(foobar, 
bar));
+        assertTrue("endsWith(FOOBAR, BAR)",  StringUtils.endsWith(FOOBAR, 
BAR));
+        assertFalse("endsWith(foobar, BAR)", StringUtils.endsWith(foobar, 
BAR));
+        assertFalse("endsWith(FOOBAR, bar)", StringUtils.endsWith(FOOBAR, 
bar));
+    }
+
+    /**
+     * Test StringUtils.endsWithIgnoreCase()
+     */
+    public void testEndsWithIgnoreCase() {
+        assertTrue("endsWithIgnoreCase(null, null)",    
StringUtils.endsWithIgnoreCase(null, (String)null));
+        assertFalse("endsWithIgnoreCase(FOOBAR, null)", 
StringUtils.endsWithIgnoreCase(FOOBAR, (String)null));
+        assertFalse("endsWithIgnoreCase(null, FOO)",    
StringUtils.endsWithIgnoreCase(null, FOO));
+        assertTrue("endsWithIgnoreCase(FOOBAR, \"\")",  
StringUtils.endsWithIgnoreCase(FOOBAR, ""));
+
+        assertFalse("endsWithIgnoreCase(foobar, foo)", 
StringUtils.endsWithIgnoreCase(foobar, foo));
+        assertFalse("endsWithIgnoreCase(FOOBAR, FOO)", 
StringUtils.endsWithIgnoreCase(FOOBAR, FOO));
+        assertFalse("endsWithIgnoreCase(foobar, FOO)", 
StringUtils.endsWithIgnoreCase(foobar, FOO));
+        assertFalse("endsWithIgnoreCase(FOOBAR, foo)", 
StringUtils.endsWithIgnoreCase(FOOBAR, foo));
+
+        assertFalse("endsWithIgnoreCase(foo, foobar)", 
StringUtils.endsWithIgnoreCase(foo, foobar));
+        assertFalse("endsWithIgnoreCase(foo, foobar)", 
StringUtils.endsWithIgnoreCase(bar, foobar));
+
+        assertTrue("endsWithIgnoreCase(foobar, bar)", 
StringUtils.endsWithIgnoreCase(foobar, bar));
+        assertTrue("endsWithIgnoreCase(FOOBAR, BAR)", 
StringUtils.endsWithIgnoreCase(FOOBAR, BAR));
+        assertTrue("endsWithIgnoreCase(foobar, BAR)", 
StringUtils.endsWithIgnoreCase(foobar, BAR));
+        assertTrue("endsWithIgnoreCase(FOOBAR, bar)", 
StringUtils.endsWithIgnoreCase(FOOBAR, bar));
+    }
+
+}

Propchange: 
jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/StringUtilsStartsEndsWithTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/StringUtilsStartsEndsWithTest.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Modified: 
jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/StringUtilsTest.java
URL: 
http://svn.apache.org/viewvc/jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/StringUtilsTest.java?view=diff&rev=552088&r1=552087&r2=552088
==============================================================================
--- 
jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/StringUtilsTest.java
 (original)
+++ 
jakarta/commons/proper/lang/trunk/src/test/org/apache/commons/lang/StringUtilsTest.java
 Fri Jun 29 20:25:53 2007
@@ -1510,6 +1510,27 @@
         assertEquals(StringUtils.removeStart("domain.com", ""), "domain.com"); 
       
         assertEquals(StringUtils.removeStart("domain.com", null), 
"domain.com");        
     }
+    
+    public void testRemoveStartIgnoreCase() {
+        // StringUtils.removeStart("", *)        = ""
+        assertNull("removeStartIgnoreCase(null, null)", 
StringUtils.removeStartIgnoreCase(null, null));
+        assertNull("removeStartIgnoreCase(null, \"\")", 
StringUtils.removeStartIgnoreCase(null, ""));
+        assertNull("removeStartIgnoreCase(null, \"a\")", 
StringUtils.removeStartIgnoreCase(null, "a"));
+        
+        // StringUtils.removeStart(*, null)      = *
+        assertEquals("removeStartIgnoreCase(\"\", null)", 
StringUtils.removeStartIgnoreCase("", null), "");
+        assertEquals("removeStartIgnoreCase(\"\", \"\")", 
StringUtils.removeStartIgnoreCase("", ""), "");
+        assertEquals("removeStartIgnoreCase(\"\", \"a\")", 
StringUtils.removeStartIgnoreCase("", "a"), "");
+        
+        // All others:
+        assertEquals("removeStartIgnoreCase(\"www.domain.com\", \"www.\")", 
StringUtils.removeStartIgnoreCase("www.domain.com", "www."), "domain.com");
+        assertEquals("removeStartIgnoreCase(\"domain.com\", \"www.\")", 
StringUtils.removeStartIgnoreCase("domain.com", "www."), "domain.com");
+        assertEquals("removeStartIgnoreCase(\"domain.com\", \"\")", 
StringUtils.removeStartIgnoreCase("domain.com", ""), "domain.com");        
+        assertEquals("removeStartIgnoreCase(\"domain.com\", null)", 
StringUtils.removeStartIgnoreCase("domain.com", null), "domain.com");        
+        
+        // Case insensitive:
+        assertEquals("removeStartIgnoreCase(\"www.domain.com\", \"WWW.\")", 
StringUtils.removeStartIgnoreCase("www.domain.com", "WWW."), "domain.com");
+    }
 
     public void testRemoveEnd() {
         // StringUtils.removeEnd("", *)        = ""
@@ -1528,6 +1549,28 @@
         assertEquals(StringUtils.removeEnd("www.domain", ".com"), 
"www.domain");
         assertEquals(StringUtils.removeEnd("domain.com", ""), "domain.com");   
         assertEquals(StringUtils.removeEnd("domain.com", null), "domain.com"); 
  
+    }
+
+    public void testRemoveEndIgnoreCase() {
+        // StringUtils.removeEndIgnoreCase("", *)        = ""
+        assertNull("removeEndIgnoreCase(null, null)", 
StringUtils.removeEndIgnoreCase(null, null));
+        assertNull("removeEndIgnoreCase(null, \"\")", 
StringUtils.removeEndIgnoreCase(null, ""));
+        assertNull("removeEndIgnoreCase(null, \"a\")", 
StringUtils.removeEndIgnoreCase(null, "a"));
+        
+        // StringUtils.removeEnd(*, null)      = *
+        assertEquals("removeEndIgnoreCase(\"\", null)", 
StringUtils.removeEndIgnoreCase("", null), "");
+        assertEquals("removeEndIgnoreCase(\"\", \"\")", 
StringUtils.removeEndIgnoreCase("", ""), "");
+        assertEquals("removeEndIgnoreCase(\"\", \"a\")", 
StringUtils.removeEndIgnoreCase("", "a"), "");
+        
+        // All others:
+        assertEquals("removeEndIgnoreCase(\"www.domain.com.\", \".com\")", 
StringUtils.removeEndIgnoreCase("www.domain.com.", ".com"), "www.domain.com.");
+        assertEquals("removeEndIgnoreCase(\"www.domain.com\", \".com\")", 
StringUtils.removeEndIgnoreCase("www.domain.com", ".com"), "www.domain");
+        assertEquals("removeEndIgnoreCase(\"www.domain\", \".com\")", 
StringUtils.removeEndIgnoreCase("www.domain", ".com"), "www.domain");
+        assertEquals("removeEndIgnoreCase(\"domain.com\", \"\")", 
StringUtils.removeEndIgnoreCase("domain.com", ""), "domain.com");   
+        assertEquals("removeEndIgnoreCase(\"domain.com\", null)", 
StringUtils.removeEndIgnoreCase("domain.com", null), "domain.com");   
+
+        // Case insensitive:
+        assertEquals("removeEndIgnoreCase(\"www.domain.com\", \".com\")", 
StringUtils.removeEndIgnoreCase("www.domain.com", ".COM"), "www.domain");
     }
 
     public void testRemove_String() {



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to