From 3594042ab5e924febf469d4aeb3b6f1243ba92b2 Mon Sep 17 00:00:00 2001 From: Shekhar Gulati Date: Mon, 25 Jul 2016 15:29:24 +0530 Subject: [PATCH] Resolved #53 --- src/main/java/strman/Strman.java | 22 +++++++++++++++++++ src/test/java/strman/StrmanTest.java | 33 +++++++++++++++++++++++++--- 2 files changed, 52 insertions(+), 3 deletions(-) diff --git a/src/main/java/strman/Strman.java b/src/main/java/strman/Strman.java index 2327e5e..01a2395 100644 --- a/src/main/java/strman/Strman.java +++ b/src/main/java/strman/Strman.java @@ -1109,6 +1109,28 @@ public abstract class Strman { return value.chars().mapToObj(ch -> leftPad(Integer.toString(ch, radix), "0", digits)).collect(joining()); } + + /** + * Join concatenates all the elements of the strings array into a single String. The separator string is placed between elements in the resulting string. + * + * @param strings The input array to concatenate + * @param separator The separator to use + * @return Concatenated String + */ + public static String join(final String[] strings, final String separator) { + if (strings == null) { + throw new IllegalArgumentException("Input array 'strings' can't be null"); + } + if (separator == null) { + throw new IllegalArgumentException("separator can't be null"); + } + StringJoiner joiner = new StringJoiner(separator); + for (String el : strings) { + joiner.add(el); + } + return joiner.toString(); + } + private static void validate(String value, Predicate predicate, final Supplier supplier) { if (predicate.test(value)) { throw new IllegalArgumentException(supplier.get()); diff --git a/src/test/java/strman/StrmanTest.java b/src/test/java/strman/StrmanTest.java index 07ed4e0..b4d36f7 100644 --- a/src/test/java/strman/StrmanTest.java +++ b/src/test/java/strman/StrmanTest.java @@ -411,9 +411,9 @@ public class StrmanTest { @Test public void inequal_shouldTestInequalityOfStrings() throws Exception { - assertThat(inequal("a", "b"), equalTo(true)); - assertThat(inequal("a", "a"), equalTo(false)); - assertThat(inequal("0", "1"), equalTo(true)); + assertThat(unequal("a", "b"), equalTo(true)); + assertThat(unequal("a", "a"), equalTo(false)); + assertThat(unequal("0", "1"), equalTo(true)); } @Test @@ -885,4 +885,31 @@ public class StrmanTest { assertThat(String.format("%s should be foo_bar", el), toSnakeCase(el), is(equalTo("foo_bar")))); } + + @Test + public void join_shouldJoinArrayOfStringIntoASingleString() throws Exception { + String[] strings = { + "hello", + "world", + "123" + }; + assertThat(join(strings, ";"), is(equalTo("hello;world;123"))); + } + + @Test(expected = IllegalArgumentException.class) + public void join_shouldThrowIllegalArgumentExceptionWhenSeparatorIsNull() throws Exception { + String[] strings = { + "hello", + "world", + "123" + }; + + join(strings, null); + } + + @Test + public void join_shouldReturnEmptyStringWhenInputArrayIsEmpty() throws Exception { + String[] emptyArray = {}; + assertThat(join(emptyArray, ","), is(equalTo(""))); + } } \ No newline at end of file