Skip to content

Commit a1de031

Browse files
FrancoCorleoneKevinGilmore
authored andcommitted
Add joining primitives tests (eugenp#5740)
* Add joining primitives tests * Small refactor * Fix naming for PMD * Add char examples to testing cases * Fix literal separator * CR changes
1 parent 29c9eb4 commit a1de031

1 file changed

Lines changed: 129 additions & 0 deletions

File tree

Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,129 @@
1+
package com.baeldung.string;
2+
3+
import com.google.common.base.Joiner;
4+
import com.google.common.primitives.Chars;
5+
import com.google.common.primitives.Ints;
6+
import org.apache.commons.lang3.ArrayUtils;
7+
import org.apache.commons.lang3.StringUtils;
8+
import org.junit.Test;
9+
10+
import java.nio.CharBuffer;
11+
import java.util.Arrays;
12+
import java.util.StringJoiner;
13+
import java.util.stream.Collectors;
14+
15+
import static org.assertj.core.api.Assertions.assertThat;
16+
17+
18+
public class StringFromPrimitiveArrayUnitTest {
19+
20+
private int[] intArray = {1, 2, 3, 4, 5, 6, 7, 8, 9};
21+
22+
private char[] charArray = {'a', 'b', 'c', 'd', 'e', 'f'};
23+
24+
private char separatorChar = '-';
25+
26+
private String separator = String.valueOf(separatorChar);
27+
28+
private String expectedIntString = "1-2-3-4-5-6-7-8-9";
29+
30+
private String expectedCharString = "a-b-c-d-e-f";
31+
32+
@Test
33+
public void givenIntArray_whenJoinBySeparator_thenReturnsString_through_Java8CollectorsJoining() {
34+
assertThat(Arrays.stream(intArray)
35+
.mapToObj(String::valueOf)
36+
.collect(Collectors.joining(separator)))
37+
.isEqualTo(expectedIntString);
38+
}
39+
40+
@Test
41+
public void givenCharArray_whenJoinBySeparator_thenReturnsString_through_Java8CollectorsJoining() {
42+
assertThat(CharBuffer.wrap(charArray).chars()
43+
.mapToObj(intChar -> String.valueOf((char) intChar))
44+
.collect(Collectors.joining(separator)))
45+
.isEqualTo(expectedCharString);
46+
}
47+
48+
49+
@Test
50+
public void giveIntArray_whenJoinBySeparator_thenReturnsString_through_Java8StringJoiner() {
51+
StringJoiner intStringJoiner = new StringJoiner(separator);
52+
53+
Arrays.stream(intArray)
54+
.mapToObj(String::valueOf)
55+
.forEach(intStringJoiner::add);
56+
57+
assertThat(intStringJoiner.toString()).isEqualTo(expectedIntString);
58+
}
59+
60+
@Test
61+
public void givenCharArray_whenJoinBySeparator_thenReturnsString_through_Java8StringJoiner() {
62+
StringJoiner charStringJoiner = new StringJoiner(separator);
63+
64+
CharBuffer.wrap(charArray).chars()
65+
.mapToObj(intChar -> String.valueOf((char) intChar))
66+
.forEach(charStringJoiner::add);
67+
68+
assertThat(charStringJoiner.toString()).isEqualTo(expectedCharString);
69+
}
70+
71+
@Test
72+
public void givenIntArray_whenJoinBySeparator_thenReturnsString_through_CommonsLang() {
73+
assertThat(StringUtils.join(intArray, separatorChar)).isEqualTo(expectedIntString);
74+
assertThat(StringUtils.join(ArrayUtils.toObject(intArray), separator)).isEqualTo(expectedIntString);
75+
}
76+
77+
@Test
78+
public void givenCharArray_whenJoinBySeparator_thenReturnsString_through_CommonsLang() {
79+
assertThat(StringUtils.join(charArray, separatorChar)).isEqualTo(expectedCharString);
80+
assertThat(StringUtils.join(ArrayUtils.toObject(charArray), separator)).isEqualTo(expectedCharString);
81+
}
82+
83+
@Test
84+
public void givenIntArray_whenJoinBySeparator_thenReturnsString_through_GuavaJoiner() {
85+
assertThat(Joiner.on(separator).join(Ints.asList(intArray))).isEqualTo(expectedIntString);
86+
}
87+
88+
@Test
89+
public void givenCharArray_whenJoinBySeparator_thenReturnsString_through_GuavaJoiner() {
90+
assertThat(Joiner.on(separator).join(Chars.asList(charArray))).isEqualTo(expectedCharString);
91+
}
92+
93+
@Test
94+
public void givenIntArray_whenJoinBySeparator_thenReturnsString_through_Java7StringBuilder() {
95+
assertThat(joinIntArrayWithStringBuilder(intArray, separator)).isEqualTo(expectedIntString);
96+
}
97+
98+
@Test
99+
public void givenCharArray_whenJoinBySeparator_thenReturnsString_through_Java7StringBuilder() {
100+
assertThat(joinCharArrayWithStringBuilder(charArray, separator)).isEqualTo(expectedCharString);
101+
}
102+
103+
private String joinIntArrayWithStringBuilder(int[] array, String separator) {
104+
if (array.length == 0) {
105+
return "";
106+
}
107+
StringBuilder stringBuilder = new StringBuilder();
108+
for (int i = 0; i < array.length - 1; i++) {
109+
stringBuilder.append(array[i]);
110+
stringBuilder.append(separator);
111+
}
112+
stringBuilder.append(array[array.length - 1]);
113+
return stringBuilder.toString();
114+
}
115+
116+
private String joinCharArrayWithStringBuilder(char[] array, String separator) {
117+
if (array.length == 0) {
118+
return "";
119+
}
120+
StringBuilder stringBuilder = new StringBuilder();
121+
for (int i = 0; i < array.length - 1; i++) {
122+
stringBuilder.append(array[i]);
123+
stringBuilder.append(separator);
124+
}
125+
stringBuilder.append(array[array.length - 1]);
126+
return stringBuilder.toString();
127+
}
128+
129+
}

0 commit comments

Comments
 (0)