diff --git a/core-java-modules/core-java-string-algorithms-3/pom.xml b/core-java-modules/core-java-string-algorithms-3/pom.xml index ccb9457a11..4408ed5ee7 100644 --- a/core-java-modules/core-java-string-algorithms-3/pom.xml +++ b/core-java-modules/core-java-string-algorithms-3/pom.xml @@ -24,6 +24,11 @@ commons-validator ${validator.version} + + org.apache.commons + commons-lang3 + ${apache-commons-lang3.version} + @@ -51,6 +56,7 @@ 31.0.1-jre 1.7 + 3.12.0 diff --git a/core-java-modules/core-java-string-algorithms-3/src/test/java/com/baeldung/repeatedcharstring/RepeatedCharacterStringUnitTest.java b/core-java-modules/core-java-string-algorithms-3/src/test/java/com/baeldung/repeatedcharstring/RepeatedCharacterStringUnitTest.java new file mode 100644 index 0000000000..42697c781e --- /dev/null +++ b/core-java-modules/core-java-string-algorithms-3/src/test/java/com/baeldung/repeatedcharstring/RepeatedCharacterStringUnitTest.java @@ -0,0 +1,92 @@ +package com.baeldung.repeatedcharstring; + +import org.apache.commons.lang3.RandomStringUtils; +import org.apache.commons.lang3.StringUtils; +import org.junit.jupiter.api.Test; + +import java.util.Arrays; +import java.util.Collections; +import java.util.stream.Collectors; + +import com.google.common.base.Joiner; +import com.google.common.base.Strings; + +import static java.util.stream.Stream.generate; +import static org.junit.jupiter.api.Assertions.assertEquals; + +class RepeatedCharacterStringUnitTest { + + private static final String EXPECTED_STRING = "aaaaaaa"; + private static final int N = 7; + + @Test + void givenString_whenStringBuilderUsed_thenStringCreated() { + StringBuilder builder = new StringBuilder(N); + for (int i = 0; i < N; i++) { + builder.append("a"); + } + String newString = builder.toString(); + assertEquals(EXPECTED_STRING, newString); + } + + @Test + void givenString_whenCharArrayUsed_thenStringCreated() { + char[] charArray = new char[N]; + for (int i = 0; i < N; i++) { + charArray[i] = 'a'; + } + String newString = new String(charArray); + assertEquals(EXPECTED_STRING, newString); + } + + @Test + void givenString_whenApacheStringUtilsUsed_thenStringCreated() { + char charToAppend = 'a'; + String newString = StringUtils.repeat(charToAppend, N); + assertEquals(EXPECTED_STRING, newString); + } + + @Test + void givenString_whenGuavaRepeatUsed_thenStringCreated() { + String charToAppend = "a"; + String newString = Strings.repeat(charToAppend, N); + assertEquals(EXPECTED_STRING, newString); + } + + @Test + void givenString_whenArraysFillUsed_thenStringCreated() { + char charToAppend = 'a'; + char[] charArray = new char[N]; + Arrays.fill(charArray, charToAppend); + String newString = new String(charArray); + assertEquals(EXPECTED_STRING, newString); + } + + @Test + void givenString_whenGenerateAndJoiningUsed_thenStringCreated() { + String charToAppend = "a"; + String newString = generate(() -> charToAppend).limit(N).collect(Collectors.joining()); + assertEquals(EXPECTED_STRING, newString); + } + + @Test + void givenString_whenStringJoinUsed_thenStringCreated() { + String charToAppend = "a"; + String newString = String.join("", Collections.nCopies(N, charToAppend)); + assertEquals(EXPECTED_STRING, newString); + } + + @Test + void givenString_whenGuavaJoinerUsed_thenStringCreated() { + String charToAppend = "a"; + String newString = Joiner.on("").join(Collections.nCopies(N, charToAppend)); + assertEquals(EXPECTED_STRING, newString); + } + + @Test + void givenString_whenRandomStringUtilsUsed_thenStringCreated() { + String charToAppend = "a"; + String newString = RandomStringUtils.random(N, charToAppend); + assertEquals(EXPECTED_STRING, newString); + } +}