diff --git a/src/main/java/strman/Strman.java b/src/main/java/strman/Strman.java index ad95a97..0adffe3 100644 --- a/src/main/java/strman/Strman.java +++ b/src/main/java/strman/Strman.java @@ -1,9 +1,31 @@ package strman; +import java.util.StringJoiner; + /** * A String manipulation library without any dependencies */ public interface Strman { + /** + * Appends Strings to value + * + * @param value initial String + * @param appends -- an array of strings to append + * @return full string + */ + static String append(final String value, final String... appends) throws IllegalArgumentException { + if (value == null) { + throw new IllegalArgumentException("'value' should be not null."); + } + if (appends == null || appends.length == 0) { + return value; + } + StringJoiner joiner = new StringJoiner(""); + for (String append : appends) { + joiner.add(append); + } + return value + joiner.toString(); + } } diff --git a/src/test/java/strman/StrmanTest.java b/src/test/java/strman/StrmanTest.java index 2889ae9..8e01434 100644 --- a/src/test/java/strman/StrmanTest.java +++ b/src/test/java/strman/StrmanTest.java @@ -2,9 +2,21 @@ package strman; import org.junit.Test; -import static org.junit.Assert.*; +import static org.hamcrest.CoreMatchers.equalTo; +import static org.junit.Assert.assertThat; +import static strman.Strman.append; public class StrmanTest { + @Test + public void shouldAppendStringsToEndOfValue() throws Exception { + assertThat(append("f", "o", "o", "b", "a", "r"), equalTo("foobar")); + assertThat(append("foobar"), equalTo("foobar")); + assertThat(append("", "foobar"), equalTo("foobar")); + } + @Test(expected = IllegalArgumentException.class) + public void appendShouldThrowIllegalArgumentExceptionWhenValueIsNull() throws Exception { + append(null); + } } \ No newline at end of file