bayard 2002/11/22 17:06:56 Modified: lang/src/test/org/apache/commons/lang Tag: LANG_1_0_BRANCH StringUtilsTest.java lang/src/java/org/apache/commons/lang Tag: LANG_1_0_BRANCH StringUtils.java Log: Put in a Unit Test to check for bug #14062 and the fix. The fix is courtesy of Mark McDowell [[EMAIL PROTECTED]] Revision Changes Path No revision No revision 1.5.2.1 +7 -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.5 retrieving revision 1.5.2.1 diff -u -r1.5 -r1.5.2.1 --- StringUtilsTest.java 19 Sep 2002 07:02:30 -0000 1.5 +++ StringUtilsTest.java 23 Nov 2002 01:06:56 -0000 1.5.2.1 @@ -183,6 +183,12 @@ assertEquals("split(Object[], String, int) failed", expected[i], result[i]); } + + result = StringUtils.split("one two three four five six", null, 3); + assertEquals("split(Object[], null, int)[0] failed", "one", result[0]); + assertEquals("split(Object[], null, int)[1] failed", "two", result[1]); + assertEquals("split(Object[], null, int)[2] failed", "three four five six", result[2]); + } public void testReplaceFunctions() No revision No revision 1.18.2.1 +9 -10 jakarta-commons/lang/src/java/org/apache/commons/lang/StringUtils.java Index: StringUtils.java =================================================================== RCS file: /home/cvs/jakarta-commons/lang/src/java/org/apache/commons/lang/StringUtils.java,v retrieving revision 1.18 retrieving revision 1.18.2.1 diff -u -r1.18 -r1.18.2.1 --- StringUtils.java 30 Sep 2002 00:50:10 -0000 1.18 +++ StringUtils.java 23 Nov 2002 01:06:56 -0000 1.18.2.1 @@ -459,25 +459,24 @@ String[] list = new String[listSize]; int i = 0; + int lastTokenBegin = 0; + int lastTokenEnd = 0; while (tok.hasMoreTokens()) { if (max > 0 && i == listSize - 1) { // In the situation where we hit the max yet have // tokens left over in our input, the last list // element gets all remaining text. - StringBuffer buf = new StringBuffer((int) 1.2 * str.length() * (listSize - i) / listSize); - while (tok.hasMoreTokens()) { - buf.append(tok.nextToken()); - if (tok.hasMoreTokens()) { - buf.append(separator); - } - } - list[i] = buf.toString(); + String endToken = tok.nextToken(); + lastTokenBegin = str.indexOf(endToken, lastTokenEnd); + list[i] = str.substring(lastTokenBegin); break; } else { list[i] = tok.nextToken(); + lastTokenBegin = str.indexOf(list[i], lastTokenEnd); + lastTokenEnd = lastTokenBegin + list[i].length(); } i++; - } + } return list; }
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>