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.assertArrayEquals;
21
22 import java.io.IOException;
23 import java.util.Arrays;
24 import java.util.Collection;
25 import java.util.LinkedHashMap;
26 import java.util.Locale;
27 import java.util.Map;
28 import java.util.concurrent.atomic.AtomicInteger;
29 import java.util.stream.Collectors;
30
31 import org.apache.commons.lang3.stream.Streams.FailableStream;
32 import org.junit.jupiter.api.Test;
33
34
35
36
37 class FailableStreamTest {
38
39 private Integer failable(final Map.Entry<String, AtomicInteger> value) throws IOException {
40 if (value == new Object()) {
41 throw new IOException();
42 }
43 return Integer.valueOf(value.getValue().incrementAndGet());
44 }
45
46 private String failable(final String value) throws IOException {
47 if (value == new Object()) {
48 throw new IOException();
49 }
50 return value.toLowerCase(Locale.ROOT);
51 }
52
53 @Test
54 void testFailableStreamOfArray() {
55 assertArrayEquals(new String[] {}, toArray());
56 assertArrayEquals(new String[] { "a" }, toArray("A"));
57 assertArrayEquals(new String[] { "a", "b" }, toArray("A", "B"));
58 assertArrayEquals(new String[] { "a", "b", "c" }, toArray("A", "B", "C"));
59 }
60
61 @Test
62 void testFailableStreamOfCollection() {
63 assertArrayEquals(new String[] {}, toArray());
64 assertArrayEquals(new String[] { "a" }, toArray(Arrays.asList("A")));
65 assertArrayEquals(new String[] { "a", "b" }, toArray(Arrays.asList("A", "B")));
66 assertArrayEquals(new String[] { "a", "b", "c" }, toArray(Arrays.asList("A", "B", "C")));
67 }
68
69 @Test
70 void testFailableStreamOfMap() {
71 final Map<String, AtomicInteger> map = new LinkedHashMap<>();
72 assertArrayEquals(new Integer[] {}, toArrayMap(map));
73 map.put("a", new AtomicInteger(1));
74 assertArrayEquals(new Integer[] { 2 }, toArrayMap(map));
75 map.put("b", new AtomicInteger(2));
76 assertArrayEquals(new Integer[] { 3, 3 }, toArrayMap(map));
77 map.put("c", new AtomicInteger(3));
78 assertArrayEquals(new Integer[] { 4, 4, 4 }, toArrayMap(map));
79 }
80
81 private String[] toArray(final Collection<String> strings) {
82 return Streams.failableStream(strings).map(this::failable).collect(Collectors.toList()).toArray(new String[0]);
83 }
84
85 private String[] toArray(final String string) {
86 return Streams.failableStream(string).map(this::failable).collect(Collectors.toList()).toArray(new String[0]);
87 }
88
89 private String[] toArray(final String... strings) {
90 return Streams.failableStream(strings).map(this::failable).collect(Collectors.toList()).toArray(new String[0]);
91 }
92
93 private Integer[] toArrayMap(final Map<String, AtomicInteger> map) {
94 return Streams.failableStream(map.entrySet()).map(this::failable).collect(Collectors.toList()).toArray(new Integer[0]);
95 }
96 }