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
22 import org.junit.jupiter.api.Test;
23
24
25
26
27 class OctalUnescaperTest {
28
29 @Test
30 void testBetween() {
31 final OctalUnescaper oue = new OctalUnescaper();
32
33 String input = "\\45";
34 String result = oue.translate(input);
35 assertEquals("\45", result, "Failed to unescape octal characters via the between method");
36
37 input = "\\377";
38 result = oue.translate(input);
39 assertEquals("\377", result, "Failed to unescape octal characters via the between method");
40
41 input = "\\777";
42 result = oue.translate(input);
43 assertEquals("\777", result, "Failed to unescape octal characters via the between method");
44
45 input = "\\377 and";
46 result = oue.translate(input);
47 assertEquals("\377 and", result, "Failed to unescape octal characters via the between method");
48
49 input = "\\378 and";
50 result = oue.translate(input);
51 assertEquals("\37" + "8 and", result, "Failed to unescape octal characters via the between method");
52
53 input = "\\378";
54 result = oue.translate(input);
55 assertEquals("\37" + "8", result, "Failed to unescape octal characters via the between method");
56
57 input = "\\1";
58 result = oue.translate(input);
59 assertEquals("\1", result, "Failed to unescape octal characters via the between method");
60
61 input = "\\036";
62 result = oue.translate(input);
63 assertEquals("\036", result, "Failed to unescape octal characters via the between method");
64
65 input = "\\0365";
66 result = oue.translate(input);
67 assertEquals("\036" + "5", result, "Failed to unescape octal characters via the between method");
68
69 input = "\\003";
70 result = oue.translate(input);
71 assertEquals("\003", result, "Failed to unescape octal characters via the between method");
72
73 input = "\\0003";
74 result = oue.translate(input);
75 assertEquals("\000" + "3", result, "Failed to unescape octal characters via the between method");
76
77 input = "\\279";
78 result = oue.translate(input);
79 assertEquals("\279", result, "Failed to unescape octal characters via the between method");
80
81 input = "\\999";
82 result = oue.translate(input);
83 assertEquals("\\999", result, "Failed to ignore an out of range octal character via the between method");
84 }
85
86 @Test
87 void testHighLowSurrogate() {
88 final OctalUnescaper oue = new OctalUnescaper();
89 String input = "\\377\uD800and";
90 String result = oue.translate(input);
91 assertEquals("\377\uD800and", result, "Failed to unescape octal characters via the between method");
92
93 input = "\\377\uD83D\uDE80and";
94 result = oue.translate(input);
95 assertEquals("\377\uD83D\uDE80and", result, "Failed to unescape octal characters via the between method");
96
97 input = "\\377\uD83D\uDC00and";
98 result = oue.translate(input);
99 assertEquals("\377\uD83D\uDC00and", result, "Failed to unescape octal characters via the between method");
100
101 input = "\\377\uD83D";
102 result = oue.translate(input);
103 assertEquals("\377\uD83D", result, "Failed to unescape octal characters via the between method");
104 }
105
106 @Test
107 void testInvalid() {
108 final OctalUnescaper oue = new OctalUnescaper();
109 final String input = "\\4a";
110 final String result = oue.translate(input);
111 assertEquals("\4a", result, "Failed to unescape octal characters via the between method");
112 }
113 }