1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.commons.lang3.function;
19
20 import static org.apache.commons.lang3.LangAssertions.assertNullPointerException;
21 import static org.junit.jupiter.api.Assertions.assertEquals;
22 import static org.junit.jupiter.api.Assertions.assertNotNull;
23 import static org.junit.jupiter.api.Assertions.assertThrows;
24
25 import java.io.IOException;
26 import java.util.concurrent.atomic.AtomicInteger;
27
28 import org.apache.commons.lang3.AbstractLangTest;
29 import org.junit.jupiter.api.Test;
30
31
32
33
34 class FailableIntConsumerTest extends AbstractLangTest {
35
36 @Test
37 void testAccept_invokesConsumer() throws IOException {
38 final AtomicInteger ref = new AtomicInteger();
39 final FailableIntConsumer<IOException> consumer = ref::set;
40 consumer.accept(42);
41 assertEquals(42, ref.get());
42 }
43
44 @Test
45 void testAccept_throwsException() {
46 final IOException expected = new IOException("fail");
47 final FailableIntConsumer<IOException> consumer = v -> {
48 throw expected;
49 };
50 final IOException thrown = assertThrows(IOException.class, () -> consumer.accept(1));
51 assertEquals(expected, thrown);
52 }
53
54 @Test
55 void testAndThen_bothInvoked() throws IOException {
56 final AtomicInteger ref1 = new AtomicInteger();
57 final AtomicInteger ref2 = new AtomicInteger();
58 final FailableIntConsumer<IOException> first = ref1::set;
59 final FailableIntConsumer<IOException> second = ref2::set;
60 first.andThen(second).accept(9);
61 assertEquals(9, ref1.get());
62 assertEquals(9, ref2.get());
63 }
64
65 @Test
66 void testAndThen_firstThrows_secondNotInvoked() {
67 final IOException expected = new IOException("first");
68 final AtomicInteger ref = new AtomicInteger(-1);
69 final FailableIntConsumer<IOException> throwing = v -> {
70 throw expected;
71 };
72 final FailableIntConsumer<IOException> second = ref::set;
73 final IOException thrown = assertThrows(IOException.class, () -> throwing.andThen(second).accept(1));
74 assertEquals(expected, thrown);
75 assertEquals(-1, ref.get());
76 }
77
78 @Test
79 void testAndThen_nullAfter_throwsNullPointerException() throws Throwable {
80 final FailableIntConsumer<IOException> consumer = v -> {
81 };
82 assertNullPointerException(() -> consumer.andThen(null));
83 }
84
85 @Test
86 void testNop_acceptDoesNothing() throws Throwable {
87 FailableIntConsumer.nop().accept(1);
88 }
89
90 @Test
91 void testNop_returnsNonNull() {
92 assertNotNull(FailableIntConsumer.nop());
93 }
94 }