KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > jimm > datavision > test > StringUtilsTest


1 package jimm.datavision.test;
2 import jimm.util.StringUtils;
3 import jimm.util.Replacer;
4 import java.util.ArrayList JavaDoc;
5 import java.util.List JavaDoc;
6 import junit.framework.TestCase;
7 import junit.framework.TestSuite;
8 import junit.framework.Test;
9
10 public class StringUtilsTest extends TestCase {
11
12 public static Test suite() {
13     return new TestSuite(StringUtilsTest.class);
14 }
15
16 public StringUtilsTest(String JavaDoc name) {
17     super(name);
18 }
19
20 public void testEscapeXML() {
21     assertEquals("", StringUtils.escapeXML(null));
22     assertEquals("", StringUtils.escapeXML(""));
23     assertEquals("abc&def", StringUtils.escapeXML("abc&def"));
24     assertEquals("abc"def'", StringUtils.escapeXML("abc\"def'"));
25     assertEquals("&lt;&gt;", StringUtils.escapeXML("<>"));
26 }
27
28 public void testUnescapeXML() {
29     assertEquals("", StringUtils.unescapeXML(null));
30     assertEquals("", StringUtils.unescapeXML(""));
31     assertEquals("abc&def", StringUtils.unescapeXML("abc&amp;def"));
32     assertEquals("abc\"def'", StringUtils.unescapeXML("abc&quot;def&apos;"));
33     assertEquals("<>", StringUtils.unescapeXML("&lt;&gt;"));
34     assertEquals("abc def", StringUtils.unescapeXML("abc&#20;def"));
35 }
36
37 public void testNewlines() {
38     assertEquals("", StringUtils.newlinesToXHTMLBreaks(null));
39     assertEquals("", StringUtils.newlinesToXHTMLBreaks(""));
40     assertEquals("\n<br />", StringUtils.newlinesToXHTMLBreaks("\n"));
41     assertEquals("\n<br />", StringUtils.newlinesToXHTMLBreaks("\r"));
42     assertEquals("\n<br />", StringUtils.newlinesToXHTMLBreaks("\r\n"));
43     assertEquals("hello\n<br />world",
44          StringUtils.newlinesToXHTMLBreaks("hello\nworld"));
45     assertEquals("hello\n<br />world",
46          StringUtils.newlinesToXHTMLBreaks("hello\rworld"));
47     assertEquals("hello\n<br />world",
48          StringUtils.newlinesToXHTMLBreaks("hello\r\nworld"));
49 }
50
51 public void testSplit() {
52     ArrayList JavaDoc typicalAnswer = new ArrayList JavaDoc();
53     typicalAnswer.add("a");
54     typicalAnswer.add("b");
55     typicalAnswer.add("c");
56
57     ArrayList JavaDoc origStringAnswer = new ArrayList JavaDoc();
58     origStringAnswer.add("abc");
59
60     // Special cases
61
assertNull(StringUtils.split(null, null));
62     assertEquals(origStringAnswer, StringUtils.split("abc", null));
63     assertEquals(origStringAnswer, StringUtils.split("abc", "x"));
64
65     assertEquals(typicalAnswer, StringUtils.split("a.b.c", "."));
66     assertEquals(typicalAnswer, StringUtils.split("a**&*b**&*c", "**&*"));
67
68     ArrayList JavaDoc answer = new ArrayList JavaDoc(typicalAnswer);
69     answer.add(0, "");
70     assertEquals(answer, StringUtils.split(".a.b.c", "."));
71     assertEquals(answer, StringUtils.split("**&*a**&*b**&*c", "**&*"));
72
73     answer = new ArrayList JavaDoc(typicalAnswer);
74     answer.add(1, "");
75     assertEquals(answer, StringUtils.split("a..b.c", "."));
76     assertEquals(answer, StringUtils.split("a**&***&*b**&*c", "**&*"));
77
78     answer = new ArrayList JavaDoc(typicalAnswer);
79     answer.add("");
80     assertEquals(answer, StringUtils.split("a.b.c.", "."));
81     assertEquals(answer, StringUtils.split("a**&*b**&*c**&*", "**&*"));
82
83     answer = new ArrayList JavaDoc(typicalAnswer);
84     answer.add(1, "");
85     answer.add("");
86     assertEquals(answer, StringUtils.split("a..b.c.", "."));
87     assertEquals(answer, StringUtils.split("a**&***&*b**&*c**&*", "**&*"));
88 }
89
90 public void testJoin() {
91     assertEquals("", StringUtils.join(null, null));
92     assertEquals("", StringUtils.join(null, ","));
93
94     ArrayList JavaDoc list = new ArrayList JavaDoc();
95     assertEquals("", StringUtils.join(list, null));
96     assertEquals("", StringUtils.join(list, ","));
97
98     list.add("a");
99     assertEquals("a", StringUtils.join(list, null));
100     assertEquals("a", StringUtils.join(list, ","));
101
102     list.add("xyzzy");
103     assertEquals("axyzzy", StringUtils.join(list, null));
104     assertEquals("a,xyzzy", StringUtils.join(list, ","));
105     assertEquals("a-*-xyzzy", StringUtils.join(list, "-*-"));
106 }
107
108 public void testReplace() {
109     Replacer r = new Replacer() {
110     public Object JavaDoc replace(String JavaDoc s) { return "x"; }
111     };
112
113     assertNull(StringUtils.replaceDelimited("", "", null, null));
114     assertNull(StringUtils.replaceDelimited(null, null, null, null));
115     assertEquals("abcde", StringUtils.replaceDelimited(null, null, r, "abcde"));
116     assertEquals("abcde", StringUtils.replaceDelimited("", "", r, "abcde"));
117     assertEquals("", StringUtils.replaceDelimited("{%", "}", r, ""));
118
119     assertEquals("abxde", StringUtils.replaceDelimited("{%", "}", r, "ab{%c}de"));
120     assertEquals("xabxdex", StringUtils.replaceDelimited("{%", "}", r,
121                            "{%}ab{%c}de{% }"));
122     assertEquals("abcd{%e", StringUtils.replaceDelimited("{%", "}", r, "abcd{%e"));
123     assertEquals("x.nil? ? nil : x / 100.0",
124          StringUtils.replaceDelimited("{", "}", r,
125                     "{jobs.hourly rate}.nil? ? nil : {jobs.hourly rate} / 100.0"));
126 }
127
128 public void testReplaceNotAfter() {
129     Replacer r = new Replacer() {
130     public Object JavaDoc replace(String JavaDoc s) { return "x"; }
131     };
132
133     assertNull(StringUtils.replaceDelimited("#", "", "", null, null));
134     assertNull(StringUtils.replaceDelimited("#", "#", "#", null, null));
135     assertNull(StringUtils.replaceDelimited("#", null, null, null, null));
136     assertEquals("abcde", StringUtils.replaceDelimited("#", null, null, r, "abcde"));
137     assertEquals("abcde", StringUtils.replaceDelimited("#", "", "", r, "abcde"));
138     assertEquals("", StringUtils.replaceDelimited("#", "{%", "}", r, ""));
139
140     assertEquals("abxde",
141          StringUtils.replaceDelimited("#", "{%", "}", r, "ab{%c}de"));
142     assertEquals("xabxdex", StringUtils.replaceDelimited("#", "{%", "}", r,
143                            "{%}ab{%c}de{% }"));
144     assertEquals("abcd{%e",
145          StringUtils.replaceDelimited("#", "{%", "}", r, "abcd{%e"));
146
147     assertEquals("ab#{c}de",
148          StringUtils.replaceDelimited("#", "{", "}", r, "ab#{c}de"));
149     assertEquals("ab##{c}de",
150          StringUtils.replaceDelimited("#", "{", "}", r, "ab##{c}de"));
151     assertEquals("ab##{x}dex",
152          StringUtils.replaceDelimited("#", "{", "}", r, "ab##{{c}}de{z}"));
153     assertEquals("ab#{x}de",
154          StringUtils.replaceDelimited("#", "{", "}", r, "ab#{{c}}de"));
155     assertEquals("ab#{x}de",
156          StringUtils.replaceDelimited("#", "{%", "}", r, "ab#{{%c}}de"));
157 }
158
159 public void testAvoidInfiniteLoop() {
160     final int[] count = new int[1];
161     count[0] = 0;
162     Replacer r = new Replacer() {
163     public Object JavaDoc replace(String JavaDoc s) {
164         if (++count[0] == 2)
165         fail("caught in an infinite loop");
166         return "{" + s + "}";
167     }
168     };
169     assertEquals("a{}b",
170          StringUtils.replaceDelimited(null, "{", "}", r, "a{}b"));
171 }
172
173 public void testLineSplit() {
174     ArrayList JavaDoc answer = new ArrayList JavaDoc();
175     answer.add("");
176
177     List JavaDoc split = StringUtils.splitIntoLines("");
178     assertEquals(answer.size(), split.size());
179     assertEquals(answer, split);
180
181     // The three flavors of line endings
182
String JavaDoc[] endings = { "\n", "\r", "\r\n" };
183
184     // We want to see an array with one empty string (the text before the
185
// newline). There is no string after the newline.
186
for (int i = 0; i < endings.length; ++i) {
187     split = StringUtils.splitIntoLines(endings[i]);
188     assertEquals(answer.size(), split.size());
189     assertEquals(answer, split);
190     }
191
192     answer.add("x");
193     for (int i = 0; i < endings.length; ++i) {
194     split = StringUtils.splitIntoLines(endings[i] + "x");
195     assertEquals(answer.size(), split.size());
196     assertEquals(answer, split);
197     }
198
199     answer = new ArrayList JavaDoc();
200     answer.add("line one");
201     answer.add("part deux");
202     answer.add("three's a crowd, eh?");
203     answer.add("");
204
205     split = StringUtils.splitIntoLines("line one\npart deux\nthree's a crowd, eh?"
206                  + "\n\n");
207     assertEquals(answer.size(), split.size());
208     assertEquals(answer, split);
209
210     // Test two newlines in a row
211
answer = new ArrayList JavaDoc();
212     answer.add("two newlines after this line");
213     answer.add("");
214     answer.add("part deux");
215     answer.add("three's a crowd, eh?");
216     answer.add("");
217
218     split = StringUtils.splitIntoLines("two newlines after this line\n\npart deux\nthree's a crowd, eh?"
219                  + "\n\n");
220     assertEquals(answer.size(), split.size());
221     assertEquals(answer, split);
222
223     split = StringUtils.splitIntoLines("two newlines after this line\r\n\r\npart deux\r\nthree's a crowd, eh?"
224                  + "\n\n");
225     assertEquals(answer.size(), split.size());
226     assertEquals(answer, split);
227
228     split = StringUtils.splitIntoLines("two newlines after this line\r\rpart deux\rthree's a crowd, eh?"
229                  + "\r\r");
230     assertEquals(answer.size(), split.size());
231     assertEquals(answer, split);
232 }
233
234 public void testSplitUp() {
235     StringBuffer JavaDoc buf = new StringBuffer JavaDoc();
236     StringUtils.splitUp(buf, null);
237     assertEquals("", buf.toString());
238
239     buf = new StringBuffer JavaDoc();
240     StringUtils.splitUp(buf, "abcde abcde abcde abcde", 12);
241     assertEquals("abcde abcde\nabcde abcde", buf.toString());
242
243     buf = new StringBuffer JavaDoc();
244     StringUtils.splitUp(buf, "abcdeabcdeabcdeabcde", 12);
245     assertEquals("abcdeabcdeabcdeabcde", buf.toString());
246
247     buf = new StringBuffer JavaDoc();
248     StringUtils.splitUp(buf, " abcde", 12);
249     assertEquals("abcde", buf.toString());
250
251     buf = new StringBuffer JavaDoc();
252     StringUtils.splitUp(buf, " abcde abcde abcde abcde ", 12);
253     assertEquals("abcde\nabcde\nabcde\nabcde", buf.toString());
254 }
255
256 public static void main(String JavaDoc[] args) {
257     junit.textui.TestRunner.run(suite());
258     System.exit(0);
259 }
260
261 }
262
Popular Tags