1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.commons.lang3.stream;
19
20 import static org.junit.jupiter.api.Assertions.assertEquals;
21
22 import java.util.Objects;
23 import java.util.concurrent.atomic.AtomicLong;
24 import java.util.function.Function;
25 import java.util.stream.Collector;
26 import java.util.stream.Stream;
27
28 import org.junit.jupiter.api.Test;
29
30
31
32
33 public class LangCollectorsTest {
34
35 private static final class Fixture {
36 int value;
37
38 private Fixture(final int value) {
39 this.value = value;
40 }
41
42 @Override
43 public String toString() {
44 return Integer.toString(value);
45 }
46 }
47
48 private static final Long _1L = Long.valueOf(1);
49 private static final Long _2L = Long.valueOf(2);
50 private static final Long _3L = Long.valueOf(3);
51
52 private static final Function<Object, String> TO_STRING = Objects::toString;
53
54 private static final Collector<Object, ?, String> JOINING_0 = LangCollectors.joining();
55 private static final Collector<Object, ?, String> JOINING_1 = LangCollectors.joining("-");
56 private static final Collector<Object, ?, String> JOINING_3 = LangCollectors.joining("-", "<", ">");
57 private static final Collector<Object, ?, String> JOINING_4 = LangCollectors.joining("-", "<", ">", TO_STRING);
58 private static final Collector<Object, ?, String> JOINING_4_NUL = LangCollectors.joining("-", "<", ">", o -> Objects.toString(o, "NUL"));
59
60 @Test
61 public void testJoiningNonStrings0Arg() {
62 assertEquals("", Stream.of().collect(JOINING_0));
63 assertEquals("1", Stream.of(_1L).collect(JOINING_0));
64 assertEquals("12", Stream.of(_1L, _2L).collect(JOINING_0));
65 assertEquals("123", Stream.of(_1L, _2L, _3L).collect(JOINING_0));
66 assertEquals("1null3", Stream.of(_1L, null, _3L).collect(JOINING_0));
67 assertEquals("12", Stream.of(new AtomicLong(1), new AtomicLong(2)).collect(JOINING_0));
68 assertEquals("12", Stream.of(new Fixture(1), new Fixture(2)).collect(JOINING_0));
69 }
70
71 @Test
72 public void testJoiningNonStrings1Arg() {
73 assertEquals("", Stream.of().collect(JOINING_1));
74 assertEquals("1", Stream.of(_1L).collect(JOINING_1));
75 assertEquals("1-2", Stream.of(_1L, _2L).collect(JOINING_1));
76 assertEquals("1-2-3", Stream.of(_1L, _2L, _3L).collect(JOINING_1));
77 assertEquals("1-null-3", Stream.of(_1L, null, _3L).collect(JOINING_1));
78 assertEquals("1-2", Stream.of(new AtomicLong(1), new AtomicLong(2)).collect(JOINING_1));
79 assertEquals("1-2", Stream.of(new Fixture(1), new Fixture(2)).collect(JOINING_1));
80 }
81
82 @Test
83 public void testJoiningNonStrings3Args() {
84 assertEquals("<>", Stream.of().collect(JOINING_3));
85 assertEquals("<1>", Stream.of(_1L).collect(JOINING_3));
86 assertEquals("<1-2>", Stream.of(_1L, _2L).collect(JOINING_3));
87 assertEquals("<1-2-3>", Stream.of(_1L, _2L, _3L).collect(JOINING_3));
88 assertEquals("<1-null-3>", Stream.of(_1L, null, _3L).collect(JOINING_3));
89 assertEquals("<1-2>", Stream.of(new AtomicLong(1), new AtomicLong(2)).collect(JOINING_3));
90 assertEquals("<1-2>", Stream.of(new Fixture(1), new Fixture(2)).collect(JOINING_3));
91 }
92
93 @Test
94 public void testJoiningNonStrings4Args() {
95 assertEquals("<>", Stream.of().collect(JOINING_4));
96 assertEquals("<1>", Stream.of(_1L).collect(JOINING_4));
97 assertEquals("<1-2>", Stream.of(_1L, _2L).collect(JOINING_4));
98 assertEquals("<1-2-3>", Stream.of(_1L, _2L, _3L).collect(JOINING_4));
99 assertEquals("<1-null-3>", Stream.of(_1L, null, _3L).collect(JOINING_4));
100 assertEquals("<1-NUL-3>", Stream.of(_1L, null, _3L).collect(JOINING_4_NUL));
101 assertEquals("<1-2>", Stream.of(new AtomicLong(1), new AtomicLong(2)).collect(JOINING_4));
102 assertEquals("<1-2>", Stream.of(new Fixture(1), new Fixture(2)).collect(JOINING_4));
103 }
104
105 @Test
106 public void testJoiningStrings0Arg() {
107 assertEquals("", Stream.of().collect(JOINING_0));
108 assertEquals("1", Stream.of("1").collect(JOINING_0));
109 assertEquals("12", Stream.of("1", "2").collect(JOINING_0));
110 assertEquals("123", Stream.of("1", "2", "3").collect(JOINING_0));
111 assertEquals("1null3", Stream.of("1", null, "3").collect(JOINING_0));
112 }
113
114 @Test
115 public void testJoiningStrings1Arg() {
116 assertEquals("", Stream.of().collect(JOINING_1));
117 assertEquals("1", Stream.of("1").collect(JOINING_1));
118 assertEquals("1-2", Stream.of("1", "2").collect(JOINING_1));
119 assertEquals("1-2-3", Stream.of("1", "2", "3").collect(JOINING_1));
120 assertEquals("1-null-3", Stream.of("1", null, "3").collect(JOINING_1));
121 }
122
123 @Test
124 public void testJoiningStrings3Args() {
125 assertEquals("<>", Stream.of().collect(JOINING_3));
126 assertEquals("<1>", Stream.of("1").collect(JOINING_3));
127 assertEquals("<1-2>", Stream.of("1", "2").collect(JOINING_3));
128 assertEquals("<1-2-3>", Stream.of("1", "2", "3").collect(JOINING_3));
129 assertEquals("<1-null-3>", Stream.of("1", null, "3").collect(JOINING_3));
130 }
131
132 @Test
133 public void testJoiningStrings4Args() {
134 assertEquals("<>", Stream.of().collect(JOINING_4));
135 assertEquals("<1>", Stream.of("1").collect(JOINING_4));
136 assertEquals("<1-2>", Stream.of("1", "2").collect(JOINING_4));
137 assertEquals("<1-2-3>", Stream.of("1", "2", "3").collect(JOINING_4));
138 assertEquals("<1-null-3>", Stream.of("1", null, "3").collect(JOINING_4));
139 assertEquals("<1-NUL-3>", Stream.of("1", null, "3").collect(JOINING_4_NUL));
140 }
141 }