1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.text.translate;
18
19 import static org.junit.jupiter.api.Assertions.assertEquals;
20 import static org.junit.jupiter.api.Assertions.assertInstanceOf;
21 import static org.junit.jupiter.api.Assertions.assertThrows;
22
23 import java.io.IOException;
24 import java.io.UncheckedIOException;
25 import java.io.Writer;
26
27 import org.junit.jupiter.api.Test;
28
29
30 class CharSequenceTranslatorTest {
31
32 private final class TestCharSequenceTranslator extends CharSequenceTranslator {
33 @Override
34 public int translate(final CharSequence input, final int index, final Writer writer) {
35 translateInvocationCounter++;
36 return 0;
37 }
38
39 }
40
41
42 private int translateInvocationCounter;
43
44 @Test
45 void testIOException() {
46 final CharSequenceTranslator translator = new CharSequenceTranslator() {
47 @Override
48 public int translate(final CharSequence input, final int index, final Writer writer) throws IOException {
49 throw new IOException("Test exception");
50 }
51 };
52
53 assertThrows(UncheckedIOException.class,
54 () -> translator.translate("."));
55 }
56
57 @Test
58 void testWith() throws IOException {
59 final CharSequenceTranslator charSequenceTranslatorOne = new TestCharSequenceTranslator();
60 final CharSequenceTranslator charSequenceTranslatorTwo = new TestCharSequenceTranslator();
61 final CharSequenceTranslator charSequenceTranslatorThree = new TestCharSequenceTranslator();
62 final CharSequenceTranslator aggregatedTranslator = charSequenceTranslatorOne.with(charSequenceTranslatorTwo, charSequenceTranslatorThree);
63 aggregatedTranslator.translate("", 0, null);
64 assertInstanceOf(AggregateTranslator.class, aggregatedTranslator);
65 assertEquals(3, translateInvocationCounter);
66 }
67 }