1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.commons.text.translate;
19
20 import static org.junit.jupiter.api.Assertions.assertEquals;
21 import static org.junit.jupiter.api.Assertions.assertThrowsExactly;
22
23 import java.io.IOException;
24 import java.io.StringWriter;
25 import java.util.HashMap;
26 import java.util.Map;
27
28 import org.junit.jupiter.api.Test;
29
30
31
32
33 class LookupTranslatorTest {
34
35 @Test
36 void testBasicLookup() throws IOException {
37 final Map<CharSequence, CharSequence> translatorMap = new HashMap<>();
38 translatorMap.put("one", "two");
39 final LookupTranslator lt = new LookupTranslator(translatorMap);
40 final StringWriter out = new StringWriter();
41 final int result = lt.translate("one", 0, out);
42 assertEquals(3, result, "Incorrect code point consumption");
43 assertEquals("two", out.toString(), "Incorrect value");
44 }
45
46 @Test
47 void testFailsToCreateLookupTranslatorThrowsInvalidParameterException() {
48 assertThrowsExactly(NullPointerException.class, () -> new LookupTranslator(null));
49 }
50
51
52 @Test
53 void testLang882() throws IOException {
54 final Map<CharSequence, CharSequence> translatorMap = new HashMap<>();
55 translatorMap.put(new StringBuffer("one"), new StringBuffer("two"));
56 final LookupTranslator lt = new LookupTranslator(translatorMap);
57 final StringWriter out = new StringWriter();
58 final int result = lt.translate(new StringBuffer("one"), 0, out);
59 assertEquals(3, result, "Incorrect code point consumption");
60 assertEquals("two", out.toString(), "Incorrect value");
61 }
62
63 @Test
64 void testTranslateSupplementaryCharacter() {
65
66 final String symbol = new StringBuilder().appendCodePoint(0x1D538).toString();
67
68 final Map<CharSequence, CharSequence> map = new HashMap<>();
69 map.put(symbol, "A");
70 final LookupTranslator translator = new LookupTranslator(map);
71 final String translated = translator.translate(symbol + "=A");
72
73 assertEquals("A=A", translated, "Incorrect value");
74 }
75
76 }