From 78b30f509834d81b8814d46471b75e3167a6460f Mon Sep 17 00:00:00 2001 From: Loic Guibert Date: Thu, 23 Apr 2015 15:41:51 +0400 Subject: [PATCH 1/2] LANG-1118 Fix StringUtils.repeat(char, int) dealing with negative repeat value --- src/main/java/org/apache/commons/lang3/StringUtils.java | 3 +++ .../java/org/apache/commons/lang3/StringUtilsTest.java | 7 +++++++ 2 files changed, 10 insertions(+) diff --git a/src/main/java/org/apache/commons/lang3/StringUtils.java b/src/main/java/org/apache/commons/lang3/StringUtils.java index 360185c176b..26245726da4 100644 --- a/src/main/java/org/apache/commons/lang3/StringUtils.java +++ b/src/main/java/org/apache/commons/lang3/StringUtils.java @@ -5233,6 +5233,9 @@ public static String repeat(final String str, final String separator, final int * @see #repeat(String, int) */ public static String repeat(final char ch, final int repeat) { + if (repeat <= 0) { + return EMPTY; + } final char[] buf = new char[repeat]; for (int i = repeat - 1; i >= 0; i--) { buf[i] = ch; diff --git a/src/test/java/org/apache/commons/lang3/StringUtilsTest.java b/src/test/java/org/apache/commons/lang3/StringUtilsTest.java index 5721dbc70a0..8cac69696b8 100644 --- a/src/test/java/org/apache/commons/lang3/StringUtilsTest.java +++ b/src/test/java/org/apache/commons/lang3/StringUtilsTest.java @@ -1374,6 +1374,13 @@ public void testRepeat_StringStringInt() { assertEquals("?, ?, ?", StringUtils.repeat("?", ", ", 3)); } + @Test + public void testRepeat_CharInt() { + assertEquals("zzz", StringUtils.repeat('z', 3)); + assertEquals("", StringUtils.repeat('z', 0)); + assertEquals("", StringUtils.repeat('z', -2)); + } + @Test public void testChop() { From 9cc91332ff252f6e3f41719526f930dcb5908c31 Mon Sep 17 00:00:00 2001 From: Loic Guibert Date: Thu, 23 Apr 2015 15:43:21 +0400 Subject: [PATCH 2/2] LANG-1118 Adding a test case for StringUtils.repeat(String, int) checking dealing with negative repeat value --- src/test/java/org/apache/commons/lang3/StringUtilsTest.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/test/java/org/apache/commons/lang3/StringUtilsTest.java b/src/test/java/org/apache/commons/lang3/StringUtilsTest.java index 8cac69696b8..3addd78a25a 100644 --- a/src/test/java/org/apache/commons/lang3/StringUtilsTest.java +++ b/src/test/java/org/apache/commons/lang3/StringUtilsTest.java @@ -1353,6 +1353,7 @@ public void testRepeat_StringInt() { assertEquals("", StringUtils.repeat("ab", 0)); assertEquals("", StringUtils.repeat("", 3)); assertEquals("aaa", StringUtils.repeat("a", 3)); + assertEquals("", StringUtils.repeat("a", -2)); assertEquals("ababab", StringUtils.repeat("ab", 3)); assertEquals("abcabcabc", StringUtils.repeat("abc", 3)); final String str = StringUtils.repeat("a", 10000); // bigger than pad limit