1 package org.codehaus.plexus.util;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 import java.io.BufferedReader;
20 import java.io.IOException;
21 import java.io.StringReader;
22 import java.io.StringWriter;
23 import java.util.Collections;
24 import java.util.HashMap;
25 import java.util.Map;
26
27 import org.junit.jupiter.api.Test;
28
29 import static org.junit.jupiter.api.Assertions.assertEquals;
30
31
32
33
34
35
36
37
38
39 public class LineOrientedInterpolatingReaderTest {
40
41
42
43
44
45
46
47
48 @org.junit.jupiter.api.Test
49 public void testShouldInterpolateExpressionAtEndOfDataWithInvalidEndToken() throws IOException {
50 String testStr = "This is a ${test";
51 LineOrientedInterpolatingReader iReader = new LineOrientedInterpolatingReader(
52 new StringReader(testStr), Collections.singletonMap("test", "TestValue"));
53 BufferedReader reader = new BufferedReader(iReader);
54
55 String result = reader.readLine();
56
57 assertEquals("This is a ${test", result);
58 }
59
60
61
62
63
64
65 @Test
66 public void testDefaultInterpolationWithNonInterpolatedValueAtEnd() throws Exception {
67 Map<String, String> m = getStandardMap();
68
69 String foo = "${name} is an ${noun}. ${not.interpolated}";
70
71 LineOrientedInterpolatingReader reader = new LineOrientedInterpolatingReader(new StringReader(foo), m);
72
73 StringWriter writer = new StringWriter();
74 IOUtil.copy(reader, writer);
75
76 String bar = writer.toString();
77 assertEquals("jason is an asshole. ${not.interpolated}", bar);
78 }
79
80 private Map<String, String> getStandardMap() {
81 Map<String, String> m = new HashMap<String, String>();
82 m.put("name", "jason");
83 m.put("noun", "asshole");
84 return m;
85 }
86
87
88
89
90
91
92 @org.junit.jupiter.api.Test
93 public void testDefaultInterpolationWithEscapedExpression() throws Exception {
94 Map<String, String> m = getStandardMap();
95
96 String foo = "${name} is an ${noun}. \\${noun} value";
97
98 LineOrientedInterpolatingReader reader = new LineOrientedInterpolatingReader(new StringReader(foo), m);
99
100 StringWriter writer = new StringWriter();
101 IOUtil.copy(reader, writer);
102
103 String bar = writer.toString();
104 assertEquals("jason is an asshole. ${noun} value", bar);
105 }
106
107
108
109
110
111
112 @org.junit.jupiter.api.Test
113 public void testDefaultInterpolationWithInterpolatedValueAtEnd() throws Exception {
114 Map<String, String> m = getStandardMap();
115
116 String foo = "${name} is an ${noun}";
117
118 LineOrientedInterpolatingReader reader = new LineOrientedInterpolatingReader(new StringReader(foo), m);
119
120 StringWriter writer = new StringWriter();
121 IOUtil.copy(reader, writer);
122
123 String bar = writer.toString();
124 assertEquals("jason is an asshole", bar);
125 }
126
127
128
129
130
131
132 @org.junit.jupiter.api.Test
133 public void testInterpolationWithSpecifiedBoundaryTokens() throws Exception {
134 Map<String, String> m = getStandardMap();
135
136 String foo = "@name@ is an @noun@. @not.interpolated@ baby @foo@. @bar@";
137
138 LineOrientedInterpolatingReader reader =
139 new LineOrientedInterpolatingReader(new StringReader(foo), m, "@", "@");
140
141 StringWriter writer = new StringWriter();
142 IOUtil.copy(reader, writer);
143
144 String bar = writer.toString();
145 assertEquals("jason is an asshole. @not.interpolated@ baby @foo@. @bar@", bar);
146 }
147
148
149
150
151
152
153 @org.junit.jupiter.api.Test
154 public void testInterpolationWithSpecifiedBoundaryTokensWithNonInterpolatedValueAtEnd() throws Exception {
155 Map<String, String> m = getStandardMap();
156
157 String foo = "@name@ is an @foobarred@";
158
159 LineOrientedInterpolatingReader reader =
160 new LineOrientedInterpolatingReader(new StringReader(foo), m, "@", "@");
161
162 StringWriter writer = new StringWriter();
163 IOUtil.copy(reader, writer);
164
165 String bar = writer.toString();
166 assertEquals("jason is an @foobarred@", bar);
167 }
168
169
170
171
172
173
174 @org.junit.jupiter.api.Test
175 public void testInterpolationWithSpecifiedBoundaryTokensWithInterpolatedValueAtEnd() throws Exception {
176 Map<String, String> m = getStandardMap();
177
178 String foo = "@name@ is an @noun@";
179
180 LineOrientedInterpolatingReader reader =
181 new LineOrientedInterpolatingReader(new StringReader(foo), m, "@", "@");
182
183 StringWriter writer = new StringWriter();
184 IOUtil.copy(reader, writer);
185
186 String bar = writer.toString();
187 assertEquals("jason is an asshole", bar);
188 }
189 }