From feac7d3bc7a3246bfa110fba17d1bf8830a629e5 Mon Sep 17 00:00:00 2001 From: Henri Yandell Date: Sat, 21 Jun 2003 22:24:56 +0000 Subject: [PATCH] Bug #20652 fixed. Submitted by: Fredrik Westermarck git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/lang/trunk@137370 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/commons/lang/StringUtils.java | 5 +++- .../apache/commons/lang/StringUtilsTest.java | 23 ++++++++++++++++++- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/java/org/apache/commons/lang/StringUtils.java b/src/java/org/apache/commons/lang/StringUtils.java index 956e36475..1eaad2b4a 100644 --- a/src/java/org/apache/commons/lang/StringUtils.java +++ b/src/java/org/apache/commons/lang/StringUtils.java @@ -77,7 +77,7 @@ * @author Arun Mammen Thomas * @author Gary Gregory * @since 1.0 - * @version $Id: StringUtils.java,v 1.46 2003/06/08 14:10:54 scolebourne Exp $ + * @version $Id: StringUtils.java,v 1.47 2003/06/21 22:24:55 bayard Exp $ */ public class StringUtils { @@ -1048,6 +1048,9 @@ public static String chop(String str) { */ public static String chopNewline(String str) { int lastIdx = str.length() - 1; + if (lastIdx == 0) { + return ""; + } char last = str.charAt(lastIdx); if (last == '\n') { if (str.charAt(lastIdx - 1) == '\r') { diff --git a/src/test/org/apache/commons/lang/StringUtilsTest.java b/src/test/org/apache/commons/lang/StringUtilsTest.java index 955753b20..f41ccb4ef 100644 --- a/src/test/org/apache/commons/lang/StringUtilsTest.java +++ b/src/test/org/apache/commons/lang/StringUtilsTest.java @@ -69,7 +69,7 @@ * @author Henning P. Schmiedehausen - * @version $Id: StringUtilsTest.java,v 1.19 2003/04/16 04:37:33 bayard Exp $ + * @version $Id: StringUtilsTest.java,v 1.20 2003/06/21 22:24:56 bayard Exp $ */ public class StringUtilsTest extends TestCase { @@ -333,6 +333,27 @@ public void testChomp() { "foo", StringUtils.chomp("foo", "foooo")); } + public void testChopNewLine() { + + String[][] newLineCases = { + { FOO + "\r\n", FOO } , + { FOO + "\n" , FOO } , + { FOO + "\r", FOO + "\r" }, + { FOO, FOO }, + { FOO + "\n" + FOO , FOO + "\n" + FOO }, + { FOO + "\n\n", FOO + "\n"}, + { "\n", "" }, + { "\r\n", "" } + }; + + for (int i = 0; i < newLineCases.length; i++) { + String original = newLineCases[i][0]; + String expectedResult = newLineCases[i][1]; + assertEquals("chopNewline(String) failed", + expectedResult, StringUtils.chopNewline(original)); + } + } + public void testSliceFunctions() { String[][] sliceCases = {