From 18e4f8173eb6c1ea3cc11548b043e927544be084 Mon Sep 17 00:00:00 2001 From: Ashok Date: Thu, 31 Aug 2017 12:06:55 +0530 Subject: [PATCH 1/8] Added string methods --- .../org/apache/commons/lang3/StringUtils.java | 34 +++++++++++++++++++ .../apache/commons/lang3/StringUtilsTest.java | 17 ++++++++++ 2 files changed, 51 insertions(+) diff --git a/src/main/java/org/apache/commons/lang3/StringUtils.java b/src/main/java/org/apache/commons/lang3/StringUtils.java index 1a0325e4be3..4fcc8e06949 100644 --- a/src/main/java/org/apache/commons/lang3/StringUtils.java +++ b/src/main/java/org/apache/commons/lang3/StringUtils.java @@ -9139,4 +9139,38 @@ public static int[] toCodePoints(CharSequence str) { } return result; } + + /** + *

Finds index of all the occurences of given search key found in source string. + *

+ * @param source + * @param searchKey + * @return list of integer of indexes. + */ + public static List indexOfAll(final String source, final Character searchKey) { + if(source == null || source.length() == 0 || searchKey == null ) { + return null; + } + List indexList = new ArrayList<>(); + for(int i = 0 ; i < source.length() ; i++) { + if(searchKey.equals(source.charAt(i))) { + indexList.add(i); + } + } + return indexList; + } + + /** Check if two Strings are anagram or not + * @return true, if both Strings are anagram. + */ + public static boolean isAnagram(String word, String anagram){ + + if(word.length() != anagram.length()) return false; + + char[] charFromWord = word.toLowerCase().toCharArray(); + char[] charFromAnagram = anagram.toLowerCase().toCharArray(); + Arrays.sort(charFromWord); + Arrays.sort(charFromAnagram); + return Arrays.equals(charFromWord, charFromAnagram); + } } diff --git a/src/test/java/org/apache/commons/lang3/StringUtilsTest.java b/src/test/java/org/apache/commons/lang3/StringUtilsTest.java index 1da6b8deb46..ed73cd816e5 100644 --- a/src/test/java/org/apache/commons/lang3/StringUtilsTest.java +++ b/src/test/java/org/apache/commons/lang3/StringUtilsTest.java @@ -3188,4 +3188,21 @@ public void testToCodePoints() throws Exception { assertNull(StringUtils.toCodePoints(null)); assertArrayEquals(ArrayUtils.EMPTY_INT_ARRAY, StringUtils.toCodePoints("")); } + + @Test + public void testIsAnagram() throws Exception { + assertTrue(StringUtils.isAnagram("test", "etst")); + assertTrue(StringUtils.isAnagram("apache", "cehaap")); + assertFalse(StringUtils.isAnagram("buff", "buf")); + assertTrue(StringUtils.isAnagram("Java", "AAJV")); + assertFalse(StringUtils.isAnagram("time", "timm")); + } + + @Test + public void testIndexOfAll() throws Exception { + assertEquals(null, 3, StringUtils.indexOfAll("anagram", 'a').size()); + assertEquals(null, 2, StringUtils.indexOfAll("Reader", 'e').size()); + assertNull(StringUtils.indexOfAll("people", null)); + assertNotEquals(null, 2, StringUtils.indexOfAll("Automatic", 'o').size()); + } } From 0de6f4e89060b7f1722c56a4f6e6d076cfb71a25 Mon Sep 17 00:00:00 2001 From: Ashokkumar Date: Tue, 26 Sep 2017 15:49:50 +0530 Subject: [PATCH 2/8] Added missed line --- 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 49243d777bd..240002cdb7d 100644 --- a/src/test/java/org/apache/commons/lang3/StringUtilsTest.java +++ b/src/test/java/org/apache/commons/lang3/StringUtilsTest.java @@ -3245,6 +3245,7 @@ public void testIndexOfAll() throws Exception { assertEquals(null, 2, StringUtils.indexOfAll("Reader", 'e').size()); assertNull(StringUtils.indexOfAll("people", null)); assertNotEquals(null, 2, StringUtils.indexOfAll("Automatic", 'o').size()); + } @Test public void testGetDigits() { From c968df0af64838a4d9a48c4ae8d280ad299cbf81 Mon Sep 17 00:00:00 2001 From: Ashokkumar Date: Tue, 26 Sep 2017 16:02:25 +0530 Subject: [PATCH 3/8] Update StringUtilsTest.java --- src/test/java/org/apache/commons/lang3/StringUtilsTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/org/apache/commons/lang3/StringUtilsTest.java b/src/test/java/org/apache/commons/lang3/StringUtilsTest.java index 240002cdb7d..cf742b3d4c1 100644 --- a/src/test/java/org/apache/commons/lang3/StringUtilsTest.java +++ b/src/test/java/org/apache/commons/lang3/StringUtilsTest.java @@ -3244,7 +3244,7 @@ public void testIndexOfAll() throws Exception { assertEquals(null, 3, StringUtils.indexOfAll("anagram", 'a').size()); assertEquals(null, 2, StringUtils.indexOfAll("Reader", 'e').size()); assertNull(StringUtils.indexOfAll("people", null)); - assertNotEquals(null, 2, StringUtils.indexOfAll("Automatic", 'o').size()); + assertEquals(null, 1, StringUtils.indexOfAll("Automatic", 'o').size()); } @Test From 4d4a44697757e9e51ab751c98e1fff10e38d7cbe Mon Sep 17 00:00:00 2001 From: Ashokkumar Date: Tue, 26 Sep 2017 16:38:42 +0530 Subject: [PATCH 4/8] Changing input paramters mutable --- src/main/java/org/apache/commons/lang3/StringUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/apache/commons/lang3/StringUtils.java b/src/main/java/org/apache/commons/lang3/StringUtils.java index 8491f7e3ed1..84ea9e3db0a 100644 --- a/src/main/java/org/apache/commons/lang3/StringUtils.java +++ b/src/main/java/org/apache/commons/lang3/StringUtils.java @@ -9270,7 +9270,7 @@ public static List indexOfAll(final String source, final Character sear /** Check if two Strings are anagram or not * @return true, if both Strings are anagram. */ - public static boolean isAnagram(String word, String anagram){ + public static boolean isAnagram(final String word, final String anagram){ if(word.length() != anagram.length()) return false; From 0ba11482813d94175e68c7fa1a0c07001c480721 Mon Sep 17 00:00:00 2001 From: Ashok Date: Thu, 5 Oct 2017 11:44:27 +0530 Subject: [PATCH 5/8] Incorporating review comments --- .../org/apache/commons/lang3/StringUtils.java | 26 +++++-------------- .../apache/commons/lang3/StringUtilsTest.java | 17 +++--------- 2 files changed, 10 insertions(+), 33 deletions(-) diff --git a/src/main/java/org/apache/commons/lang3/StringUtils.java b/src/main/java/org/apache/commons/lang3/StringUtils.java index 4fcc8e06949..6baadc87bb1 100644 --- a/src/main/java/org/apache/commons/lang3/StringUtils.java +++ b/src/main/java/org/apache/commons/lang3/StringUtils.java @@ -9147,30 +9147,16 @@ public static int[] toCodePoints(CharSequence str) { * @param searchKey * @return list of integer of indexes. */ - public static List indexOfAll(final String source, final Character searchKey) { + public static List indexesOf(final String source, final Character searchKey) { if(source == null || source.length() == 0 || searchKey == null ) { return null; } List indexList = new ArrayList<>(); - for(int i = 0 ; i < source.length() ; i++) { - if(searchKey.equals(source.charAt(i))) { - indexList.add(i); - } - } + for(int i = 0 ; i < source.length() ; i++) { + if(searchKey.equals(source.charAt(i))) { + indexList.add(i); + } + } return indexList; } - - /** Check if two Strings are anagram or not - * @return true, if both Strings are anagram. - */ - public static boolean isAnagram(String word, String anagram){ - - if(word.length() != anagram.length()) return false; - - char[] charFromWord = word.toLowerCase().toCharArray(); - char[] charFromAnagram = anagram.toLowerCase().toCharArray(); - Arrays.sort(charFromWord); - Arrays.sort(charFromAnagram); - return Arrays.equals(charFromWord, charFromAnagram); - } } diff --git a/src/test/java/org/apache/commons/lang3/StringUtilsTest.java b/src/test/java/org/apache/commons/lang3/StringUtilsTest.java index ed73cd816e5..906b221f27a 100644 --- a/src/test/java/org/apache/commons/lang3/StringUtilsTest.java +++ b/src/test/java/org/apache/commons/lang3/StringUtilsTest.java @@ -3189,20 +3189,11 @@ public void testToCodePoints() throws Exception { assertArrayEquals(ArrayUtils.EMPTY_INT_ARRAY, StringUtils.toCodePoints("")); } - @Test - public void testIsAnagram() throws Exception { - assertTrue(StringUtils.isAnagram("test", "etst")); - assertTrue(StringUtils.isAnagram("apache", "cehaap")); - assertFalse(StringUtils.isAnagram("buff", "buf")); - assertTrue(StringUtils.isAnagram("Java", "AAJV")); - assertFalse(StringUtils.isAnagram("time", "timm")); - } - @Test public void testIndexOfAll() throws Exception { - assertEquals(null, 3, StringUtils.indexOfAll("anagram", 'a').size()); - assertEquals(null, 2, StringUtils.indexOfAll("Reader", 'e').size()); - assertNull(StringUtils.indexOfAll("people", null)); - assertNotEquals(null, 2, StringUtils.indexOfAll("Automatic", 'o').size()); + assertEquals(null, 3, StringUtils.indexesOf("anagram", 'a').size()); + assertEquals(null, 2, StringUtils.indexesOf("Reader", 'e').size()); + assertNull(StringUtils.indexesOf("people", null)); + assertNotEquals(null, 2, StringUtils.indexesOf("Automatic", 'o').size()); } } From c5f9d43f80321a4833328221816c08fd90a64c6d Mon Sep 17 00:00:00 2001 From: Ashok Date: Thu, 5 Oct 2017 12:03:32 +0530 Subject: [PATCH 6/8] Fixing UT error --- src/test/java/org/apache/commons/lang3/StringUtilsTest.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/test/java/org/apache/commons/lang3/StringUtilsTest.java b/src/test/java/org/apache/commons/lang3/StringUtilsTest.java index 17005f88ac7..d765ecb9e03 100644 --- a/src/test/java/org/apache/commons/lang3/StringUtilsTest.java +++ b/src/test/java/org/apache/commons/lang3/StringUtilsTest.java @@ -19,6 +19,7 @@ import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertSame; @@ -3231,7 +3232,7 @@ public void testToCodePoints() throws Exception { } @Test - public void testIndexOfAll() throws Exception { + public void testIndexesOf() throws Exception { assertEquals(null, 3, StringUtils.indexesOf("anagram", 'a').size()); assertEquals(null, 2, StringUtils.indexesOf("Reader", 'e').size()); assertNull(StringUtils.indexesOf("people", null)); From 347684d3655691a59bbbc1c8e9646eb5bd17c7f5 Mon Sep 17 00:00:00 2001 From: Ashok Date: Thu, 5 Oct 2017 12:17:45 +0530 Subject: [PATCH 7/8] Code refactor --- .../java/org/apache/commons/lang3/StringUtils.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/apache/commons/lang3/StringUtils.java b/src/main/java/org/apache/commons/lang3/StringUtils.java index 623c4966791..43ac23bf502 100644 --- a/src/main/java/org/apache/commons/lang3/StringUtils.java +++ b/src/main/java/org/apache/commons/lang3/StringUtils.java @@ -9254,14 +9254,14 @@ public static int[] toCodePoints(CharSequence str) { * @param searchKey * @return list of integer of indexes. */ - public static List indexesOf(final String source, final Character searchKey) { - if(source == null || source.length() == 0 || searchKey == null ) { - return null; + public static List indexesOf(final CharSequence source, final Character searchKey) { + if(isEmpty(source) || searchKey == CharUtils.NUL ) { + return null; } List indexList = new ArrayList<>(); for(int i = 0 ; i < source.length() ; i++) { - if(searchKey.equals(source.charAt(i))) { - indexList.add(i); + if(searchKey.equals(source.charAt(i))) { + indexList.add(i); } } return indexList; From 0dff06c3f50da7c604efee628b8b4bda4e404c1f Mon Sep 17 00:00:00 2001 From: Ashok Date: Thu, 5 Oct 2017 12:20:14 +0530 Subject: [PATCH 8/8] fix --- src/main/java/org/apache/commons/lang3/StringUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/apache/commons/lang3/StringUtils.java b/src/main/java/org/apache/commons/lang3/StringUtils.java index 43ac23bf502..cbadf145a95 100644 --- a/src/main/java/org/apache/commons/lang3/StringUtils.java +++ b/src/main/java/org/apache/commons/lang3/StringUtils.java @@ -9262,7 +9262,7 @@ public static List indexesOf(final CharSequence source, final Character for(int i = 0 ; i < source.length() ; i++) { if(searchKey.equals(source.charAt(i))) { indexList.add(i); - } + } } return indexList; }