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 org.junit.Test;
21
22 import static org.junit.Assert.assertEquals;
23 import static org.junit.Assert.fail;
24
25
26
27
28 public class NumericEntityUnescaperTest {
29
30 @Test
31 public void testSupplementaryUnescaping() {
32 final org.apache.commons.text.translate.NumericEntityUnescaper neu = new org.apache.commons.text.translate.NumericEntityUnescaper();
33 final String input = "𐰢";
34 final String expected = "\uD803\uDC22";
35
36 final String result = neu.translate(input);
37 assertEquals("Failed to unescape numeric entities supplementary characters", expected, result);
38 }
39
40 @Test
41 public void testOutOfBounds() {
42 final org.apache.commons.text.translate.NumericEntityUnescaper neu = new org.apache.commons.text.translate.NumericEntityUnescaper();
43
44 assertEquals("Failed to ignore when last character is &", "Test &", neu.translate("Test &"));
45 assertEquals("Failed to ignore when last character is &", "Test &#", neu.translate("Test &#"));
46 assertEquals("Failed to ignore when last character is &", "Test &#x", neu.translate("Test &#x"));
47 assertEquals("Failed to ignore when last character is &", "Test &#X", neu.translate("Test &#X"));
48 }
49
50 @Test
51 public void testUnfinishedEntity() {
52
53 org.apache.commons.text.translate.NumericEntityUnescaper neu = new org.apache.commons.text.translate.NumericEntityUnescaper(org.apache.commons.text.translate.NumericEntityUnescaper.OPTION.semiColonOptional);
54 String input = "Test 0 not test";
55 String expected = "Test \u0030 not test";
56
57 String result = neu.translate(input);
58 assertEquals("Failed to support unfinished entities (i.e. missing semi-colon)", expected, result);
59
60
61 neu = new org.apache.commons.text.translate.NumericEntityUnescaper();
62 input = "Test 0 not test";
63 expected = input;
64
65 result = neu.translate(input);
66 assertEquals("Failed to ignore unfinished entities (i.e. missing semi-colon)", expected, result);
67
68
69 neu = new org.apache.commons.text.translate.NumericEntityUnescaper(NumericEntityUnescaper.OPTION.errorIfNoSemiColon);
70 input = "Test 0 not test";
71
72 try {
73 result = neu.translate(input);
74 fail("IllegalArgumentException expected");
75 } catch(final IllegalArgumentException iae) {
76
77 }
78 }
79
80 }