stevencaswell    2004/07/11 09:49:07

  Modified:    lang/src/test/org/apache/commons/lang StringUtilsTest.java
  Log:
  added tests for new splitPreserveAllTokens methods 
(http://issues.apache.org/bugzilla/show_bug.cgi?id=22692)
  
  Revision  Changes    Path
  1.60      +314 -1    
jakarta-commons/lang/src/test/org/apache/commons/lang/StringUtilsTest.java
  
  Index: StringUtilsTest.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/lang/src/test/org/apache/commons/lang/StringUtilsTest.java,v
  retrieving revision 1.59
  retrieving revision 1.60
  diff -u -r1.59 -r1.60
  --- StringUtilsTest.java      10 Mar 2004 23:54:48 -0000      1.59
  +++ StringUtilsTest.java      11 Jul 2004 16:49:07 -0000      1.60
  @@ -360,6 +360,319 @@
           assertEquals(msg, str.substring(2), res[1]);
       }
   
  +    public void testSplitPreserveAllTokens_String() {
  +        assertEquals(null, StringUtils.splitPreserveAllTokens(null));
  +        assertEquals(0, StringUtils.splitPreserveAllTokens("").length);
  +        
  +        String str = "a b .c";
  +        String[] res = StringUtils.splitPreserveAllTokens(str);
  +        assertEquals(3, res.length);
  +        assertEquals("a", res[0]);
  +        assertEquals("b", res[1]);
  +        assertEquals(".c", res[2]);
  +        
  +        str = " a b .c";
  +        res = StringUtils.splitPreserveAllTokens(str);
  +        assertEquals(4, res.length);
  +        assertEquals("", res[0]);
  +        assertEquals("a", res[1]);
  +        assertEquals("b", res[2]);
  +        assertEquals(".c", res[3]);
  +        
  +        str = "a  b  .c";
  +        res = StringUtils.splitPreserveAllTokens(str);
  +        assertEquals(5, res.length);
  +        assertEquals("a", res[0]);
  +        assertEquals("", res[1]);
  +        assertEquals("b", res[2]);
  +        assertEquals("", res[3]);
  +        assertEquals(".c", res[4]);
  +        
  +        str = " a  ";
  +        res = StringUtils.splitPreserveAllTokens(str);
  +        assertEquals(4, res.length);
  +        assertEquals("", res[0]);
  +        assertEquals("a", res[1]);
  +        assertEquals("", res[2]);
  +        assertEquals("", res[3]);
  +
  +        str = " a  b";
  +        res = StringUtils.splitPreserveAllTokens(str);
  +        assertEquals(4, res.length);
  +        assertEquals("", res[0]);
  +        assertEquals("a", res[1]);
  +        assertEquals("", res[2]);
  +        assertEquals("b", res[3]);
  +
  +        str = "a" + WHITESPACE + "b" + NON_WHITESPACE + "c";
  +        res = StringUtils.splitPreserveAllTokens(str);
  +        assertEquals(WHITESPACE.length() + 1, res.length);
  +        assertEquals("a", res[0]);
  +        for(int i = 1; i < WHITESPACE.length()-1; i++)
  +        {
  +          assertEquals("", res[i]);
  +        }
  +        assertEquals("b" + NON_WHITESPACE + "c", res[WHITESPACE.length()]);         
              
  +    }
  +    
  +    public void testSplitPreserveAllTokens_StringChar() {
  +        assertEquals(null, StringUtils.splitPreserveAllTokens(null, '.'));
  +        assertEquals(0, StringUtils.splitPreserveAllTokens("", '.').length);
  +
  +        String str = "a.b. c";
  +        String[] res = StringUtils.splitPreserveAllTokens(str, '.');
  +        assertEquals(3, res.length);
  +        assertEquals("a", res[0]);
  +        assertEquals("b", res[1]);
  +        assertEquals(" c", res[2]);
  +            
  +        str = "a.b.. c";
  +        res = StringUtils.splitPreserveAllTokens(str, '.');
  +        assertEquals(4, res.length);
  +        assertEquals("a", res[0]);
  +        assertEquals("b", res[1]);
  +        assertEquals("", res[2]);
  +        assertEquals(" c", res[3]);
  +
  +        str = ".a.";
  +        res = StringUtils.splitPreserveAllTokens(str, '.');
  +        assertEquals(3, res.length);
  +        assertEquals("", res[0]);
  +        assertEquals("a", res[1]);
  +        assertEquals("", res[2]);
  +       
  +        str = ".a..";
  +        res = StringUtils.splitPreserveAllTokens(str, '.');
  +        assertEquals(4, res.length);
  +        assertEquals("", res[0]);
  +        assertEquals("a", res[1]);
  +        assertEquals("", res[2]);
  +        assertEquals("", res[3]);
  +        
  +        str = "..a.";
  +        res = StringUtils.splitPreserveAllTokens(str, '.');
  +        assertEquals(4, res.length);
  +        assertEquals("", res[0]);
  +        assertEquals("", res[1]);
  +        assertEquals("a", res[2]);
  +        assertEquals("", res[3]);
  +        
  +        str = "..a";
  +        res = StringUtils.splitPreserveAllTokens(str, '.');
  +        assertEquals(3, res.length);
  +        assertEquals("", res[0]);
  +        assertEquals("", res[1]);
  +        assertEquals("a", res[2]);
  +        
  +        str = "a b c";
  +        res = StringUtils.splitPreserveAllTokens(str,' ');
  +        assertEquals(3, res.length);
  +        assertEquals("a", res[0]);
  +        assertEquals("b", res[1]);
  +        assertEquals("c", res[2]);
  +
  +        str = "a  b  c";
  +        res = StringUtils.splitPreserveAllTokens(str,' ');
  +        assertEquals(5, res.length);
  +        assertEquals("a", res[0]);
  +        assertEquals("", res[1]);
  +        assertEquals("b", res[2]);
  +        assertEquals("", res[3]);
  +        assertEquals("c", res[4]);
  +        
  +        str = " a b c";
  +        res = StringUtils.splitPreserveAllTokens(str,' ');
  +        assertEquals(4, res.length);
  +        assertEquals("", res[0]);
  +        assertEquals("a", res[1]);
  +        assertEquals("b", res[2]);
  +        assertEquals("c", res[3]);
  +
  +        str = "  a b c";
  +        res = StringUtils.splitPreserveAllTokens(str,' ');
  +        assertEquals(5, res.length);
  +        assertEquals("", res[0]);
  +        assertEquals("", res[1]);
  +        assertEquals("a", res[2]);
  +        assertEquals("b", res[3]);
  +        assertEquals("c", res[4]);
  +
  +    }
  +    
  +    public void testSplitPreserveAllTokens_StringString_StringStringInt() {
  +        assertEquals(null, StringUtils.splitPreserveAllTokens(null, "."));
  +        assertEquals(null, StringUtils.splitPreserveAllTokens(null, ".", 3));
  +        
  +        assertEquals(0, StringUtils.splitPreserveAllTokens("", ".").length);
  +        assertEquals(0, StringUtils.splitPreserveAllTokens("", ".", 3).length);
  +        
  +        innerTestSplitPreserveAllTokens('.', ".", ' ');
  +        innerTestSplitPreserveAllTokens('.', ".", ',');
  +        innerTestSplitPreserveAllTokens('.', ".,", 'x');
  +        for (int i = 0; i < WHITESPACE.length(); i++) {
  +            for (int j = 0; j < NON_WHITESPACE.length(); j++) {
  +                innerTestSplitPreserveAllTokens(WHITESPACE.charAt(i), null, 
NON_WHITESPACE.charAt(j));
  +                innerTestSplitPreserveAllTokens(WHITESPACE.charAt(i), 
String.valueOf(WHITESPACE.charAt(i)), NON_WHITESPACE.charAt(j));
  +            }
  +        }
  +
  +        {
  +          String[] results = null;
  +          String[] expectedResults = {"ab", "de fg"};
  +          results = StringUtils.splitPreserveAllTokens("ab de fg", null, 2);
  +          assertEquals(expectedResults.length, results.length);
  +          for (int i = 0; i < expectedResults.length; i++) {
  +              assertEquals(expectedResults[i], results[i]);
  +          }
  +        }
  +
  +        {
  +          String[] results = null;
  +          String[] expectedResults = {"ab", "  de fg"};
  +          results = StringUtils.splitPreserveAllTokens("ab   de fg", null, 2);
  +          System.out.println("");
  +          assertEquals(expectedResults.length, results.length);
  +          for (int i = 0; i < expectedResults.length; i++) {
  +              assertEquals(expectedResults[i], results[i]);
  +          }
  +        }
  +        
  +        {
  +          String[] results = null;
  +          String[] expectedResults = {"ab", "::de:fg"};
  +          results = StringUtils.splitPreserveAllTokens("ab:::de:fg", ":", 2);
  +          assertEquals(expectedResults.length, results.length);
  +          for (int i = 0; i < expectedResults.length; i++) {
  +              assertEquals(expectedResults[i], results[i]);
  +          }
  +        }
  +        
  +        {
  +          String[] results = null;
  +          String[] expectedResults = {"ab", "", " de fg"};
  +          results = StringUtils.splitPreserveAllTokens("ab   de fg", null, 3);
  +          assertEquals(expectedResults.length, results.length);
  +          for (int i = 0; i < expectedResults.length; i++) {
  +              assertEquals(expectedResults[i], results[i]);
  +          }
  +        }
  +        
  +        {
  +          String[] results = null;
  +          String[] expectedResults = {"ab", "", "", "de fg"};
  +          results = StringUtils.splitPreserveAllTokens("ab   de fg", null, 4);
  +          assertEquals(expectedResults.length, results.length);
  +          for (int i = 0; i < expectedResults.length; i++) {
  +              assertEquals(expectedResults[i], results[i]);
  +          }
  +        }
  +
  +        {
  +          String[] expectedResults = {"ab", "cd:ef"};
  +          String[] results = null;
  +          results = StringUtils.splitPreserveAllTokens("ab:cd:ef",":", 2);
  +          assertEquals(expectedResults.length, results.length);
  +          for (int i = 0; i < expectedResults.length; i++) {
  +              assertEquals(expectedResults[i], results[i]);
  +          }
  +        }
  +
  +        {
  +          String[] results = null;
  +          String[] expectedResults = {"ab", ":cd:ef"};
  +          results = StringUtils.splitPreserveAllTokens("ab::cd:ef",":", 2);
  +          assertEquals(expectedResults.length, results.length);
  +          for (int i = 0; i < expectedResults.length; i++) {
  +              assertEquals(expectedResults[i], results[i]);
  +          }
  +        }
  +
  +        {
  +          String[] results = null;
  +          String[] expectedResults = {"ab", "", ":cd:ef"};
  +          results = StringUtils.splitPreserveAllTokens("ab:::cd:ef",":", 3);
  +          assertEquals(expectedResults.length, results.length);
  +          for (int i = 0; i < expectedResults.length; i++) {
  +              assertEquals(expectedResults[i], results[i]);
  +          }
  +        }
  +
  +        {
  +          String[] results = null;
  +          String[] expectedResults = {"ab", "", "", "cd:ef"};
  +          results = StringUtils.splitPreserveAllTokens("ab:::cd:ef",":", 4);
  +          assertEquals(expectedResults.length, results.length);
  +          for (int i = 0; i < expectedResults.length; i++) {
  +              assertEquals(expectedResults[i], results[i]);
  +          }
  +        }
  +
  +        {
  +          String[] results = null;
  +          String[] expectedResults = {"", "ab", "", "", "cd:ef"};
  +          results = StringUtils.splitPreserveAllTokens(":ab:::cd:ef",":", 5);
  +          assertEquals(expectedResults.length, results.length);
  +          for (int i = 0; i < expectedResults.length; i++) {
  +              assertEquals(expectedResults[i], results[i]);
  +          }
  +        }
  +        
  +        {
  +          String[] results = null;
  +          String[] expectedResults = {"", "", "ab", "", "", "cd:ef"};
  +          results = StringUtils.splitPreserveAllTokens("::ab:::cd:ef",":", 6);
  +          assertEquals(expectedResults.length, results.length);
  +          for (int i = 0; i < expectedResults.length; i++) {
  +              assertEquals(expectedResults[i], results[i]);
  +          }
  +        }
  +    }
  +    
  +    private void innerTestSplitPreserveAllTokens(char separator, String sepStr, 
char noMatch) {
  +        String msg = "Failed on separator hex(" + Integer.toHexString(separator) +
  +            "), noMatch hex(" + Integer.toHexString(noMatch) + "), sepStr(" + 
sepStr + ")";
  +        
  +        final String str = "a" + separator + "b" + separator + separator + noMatch 
+ "c";
  +        String[] res;
  +        // (str, sepStr)
  +        res = StringUtils.splitPreserveAllTokens(str, sepStr);
  +        assertEquals(msg, 4, res.length);
  +        assertEquals(msg, "a", res[0]);
  +        assertEquals(msg, "b", res[1]);
  +        assertEquals(msg, "", res[2]);
  +        assertEquals(msg, noMatch + "c", res[3]);
  +        
  +        final String str2 = separator + "a" + separator;
  +        res = StringUtils.splitPreserveAllTokens(str2, sepStr);
  +        assertEquals(msg, 3, res.length);
  +        assertEquals(msg, "", res[0]);
  +        assertEquals(msg, "a", res[1]);
  +        assertEquals(msg, "", res[2]);
  +
  +        res = StringUtils.splitPreserveAllTokens(str, sepStr, -1);
  +        assertEquals(msg, 4, res.length);
  +        assertEquals(msg, "a", res[0]);
  +        assertEquals(msg, "b", res[1]);
  +        assertEquals(msg, "", res[2]);
  +        assertEquals(msg, noMatch + "c", res[3]);
  +        
  +        res = StringUtils.splitPreserveAllTokens(str, sepStr, 0);
  +        assertEquals(msg, 4, res.length);
  +        assertEquals(msg, "a", res[0]);
  +        assertEquals(msg, "b", res[1]);
  +        assertEquals(msg, "", res[2]);
  +        assertEquals(msg, noMatch + "c", res[3]);
  +        
  +        res = StringUtils.splitPreserveAllTokens(str, sepStr, 1);
  +        assertEquals(msg, 1, res.length);
  +        assertEquals(msg, str, res[0]);
  +        
  +        res = StringUtils.splitPreserveAllTokens(str, sepStr, 2);
  +        assertEquals(msg, 2, res.length);
  +        assertEquals(msg, "a", res[0]);
  +        assertEquals(msg, str.substring(2), res[1]);
  +    }
  +    
       public void testDeleteSpace_String() {
           assertEquals(null, StringUtils.deleteSpaces(null));
           assertEquals("", StringUtils.deleteSpaces(""));
  
  
  

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

Reply via email to