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 FailableByteConsumerTest extends AbstractLangTest {
35
36 @Test
37 void testAccept_invokesConsumer() throws IOException {
38 final AtomicInteger ref = new AtomicInteger();
39 final FailableByteConsumer<IOException> consumer = v -> ref.set(v);
40 consumer.accept((byte) 42);
41 assertEquals(42, ref.get());
42 }
43
44 @Test
45 void testAccept_throwsException() {
46 final IOException expected = new IOException("fail");
47 final FailableByteConsumer<IOException> consumer = v -> {
48 throw expected;
49 };
50 final IOException thrown = assertThrows(IOException.class, () -> consumer.accept((byte) 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 FailableByteConsumer<IOException> first = v -> ref1.set(v);
59 final FailableByteConsumer<IOException> second = v -> ref2.set(v);
60 first.andThen(second).accept((byte) 7);
61 assertEquals(7, ref1.get());
62 assertEquals(7, ref2.get());
63 }
64
65 @Test
66 void testAndThen_firstThrows_secondNotInvoked() {
67 final IOException expected = new IOException("first");
68 final AtomicInteger ref = new AtomicInteger();
69 final FailableByteConsumer<IOException> throwing = v -> {
70 throw expected;
71 };
72 final FailableByteConsumer<IOException> second = v -> ref.set(v);
73 final IOException thrown = assertThrows(IOException.class, () -> throwing.andThen(second).accept((byte) 1));
74 assertEquals(expected, thrown);
75 assertEquals(0, ref.get());
76 }
77
78 @Test
79 void testAndThen_nullAfter_throwsNullPointerException() throws Throwable {
80 final FailableByteConsumer<IOException> consumer = v -> {
81 };
82 assertNullPointerException(() -> consumer.andThen(null));
83 }
84
85 @Test
86 void testNop_acceptDoesNothing() throws Throwable {
87 FailableByteConsumer.nop().accept((byte) 1);
88 }
89
90 @Test
91 void testNop_returnsNonNull() {
92 assertNotNull(FailableByteConsumer.nop());
93 }
94 }