1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.io;
18
19 import java.io.ByteArrayInputStream;
20 import java.io.ByteArrayOutputStream;
21 import java.io.File;
22 import java.io.IOException;
23 import java.io.ObjectInputStream;
24 import java.io.ObjectOutputStream;
25
26 import junit.framework.Test;
27 import junit.framework.TestSuite;
28 import junit.textui.TestRunner;
29
30 import org.apache.commons.io.testtools.FileBasedTestCase;
31
32
33
34
35
36
37
38 public class IOCaseTestCase extends FileBasedTestCase {
39
40 private static final boolean WINDOWS = (File.separatorChar == '\\');
41
42 public static void main(String[] args) {
43 TestRunner.run(suite());
44 }
45
46 public static Test suite() {
47 return new TestSuite(IOCaseTestCase.class);
48 }
49
50 public IOCaseTestCase(String name) throws IOException {
51 super(name);
52 }
53
54 protected void setUp() throws Exception {
55
56 }
57
58 protected void tearDown() throws Exception {
59 }
60
61
62 public void test_forName() throws Exception {
63 assertEquals(IOCase.SENSITIVE, IOCase.forName("Sensitive"));
64 assertEquals(IOCase.INSENSITIVE, IOCase.forName("Insensitive"));
65 assertEquals(IOCase.SYSTEM, IOCase.forName("System"));
66 try {
67 IOCase.forName("Blah");
68 fail();
69 } catch (IllegalArgumentException ex) {}
70 try {
71 IOCase.forName(null);
72 fail();
73 } catch (IllegalArgumentException ex) {}
74 }
75
76 public void test_serialization() throws Exception {
77 assertSame(IOCase.SENSITIVE, serialize(IOCase.SENSITIVE));
78 assertSame(IOCase.INSENSITIVE, serialize(IOCase.INSENSITIVE));
79 assertSame(IOCase.SYSTEM, serialize(IOCase.SYSTEM));
80 }
81
82 public void test_getName() throws Exception {
83 assertEquals("Sensitive", IOCase.SENSITIVE.getName());
84 assertEquals("Insensitive", IOCase.INSENSITIVE.getName());
85 assertEquals("System", IOCase.SYSTEM.getName());
86 }
87
88 public void test_toString() throws Exception {
89 assertEquals("Sensitive", IOCase.SENSITIVE.toString());
90 assertEquals("Insensitive", IOCase.INSENSITIVE.toString());
91 assertEquals("System", IOCase.SYSTEM.toString());
92 }
93
94 public void test_isCaseSensitive() throws Exception {
95 assertEquals(true, IOCase.SENSITIVE.isCaseSensitive());
96 assertEquals(false, IOCase.INSENSITIVE.isCaseSensitive());
97 assertEquals(!WINDOWS, IOCase.SYSTEM.isCaseSensitive());
98 }
99
100
101 public void test_checkEquals_functionality() throws Exception {
102 assertEquals(false, IOCase.SENSITIVE.checkEquals("ABC", ""));
103 assertEquals(false, IOCase.SENSITIVE.checkEquals("ABC", "A"));
104 assertEquals(false, IOCase.SENSITIVE.checkEquals("ABC", "AB"));
105 assertEquals(true, IOCase.SENSITIVE.checkEquals("ABC", "ABC"));
106 assertEquals(false, IOCase.SENSITIVE.checkEquals("ABC", "BC"));
107 assertEquals(false, IOCase.SENSITIVE.checkEquals("ABC", "C"));
108 assertEquals(false, IOCase.SENSITIVE.checkEquals("ABC", "ABCD"));
109 assertEquals(false, IOCase.SENSITIVE.checkEquals("", "ABC"));
110 assertEquals(true, IOCase.SENSITIVE.checkEquals("", ""));
111
112 try {
113 IOCase.SENSITIVE.checkEquals("ABC", null);
114 fail();
115 } catch (NullPointerException ex) {}
116 try {
117 IOCase.SENSITIVE.checkEquals(null, "ABC");
118 fail();
119 } catch (NullPointerException ex) {}
120 try {
121 IOCase.SENSITIVE.checkEquals(null, null);
122 fail();
123 } catch (NullPointerException ex) {}
124 }
125
126 public void test_checkEquals_case() throws Exception {
127 assertEquals(true, IOCase.SENSITIVE.checkEquals("ABC", "ABC"));
128 assertEquals(false, IOCase.SENSITIVE.checkEquals("ABC", "Abc"));
129
130 assertEquals(true, IOCase.INSENSITIVE.checkEquals("ABC", "ABC"));
131 assertEquals(true, IOCase.INSENSITIVE.checkEquals("ABC", "Abc"));
132
133 assertEquals(true, IOCase.SYSTEM.checkEquals("ABC", "ABC"));
134 assertEquals(WINDOWS, IOCase.SYSTEM.checkEquals("ABC", "Abc"));
135 }
136
137
138 public void test_checkStartsWith_functionality() throws Exception {
139 assertEquals(true, IOCase.SENSITIVE.checkStartsWith("ABC", ""));
140 assertEquals(true, IOCase.SENSITIVE.checkStartsWith("ABC", "A"));
141 assertEquals(true, IOCase.SENSITIVE.checkStartsWith("ABC", "AB"));
142 assertEquals(true, IOCase.SENSITIVE.checkStartsWith("ABC", "ABC"));
143 assertEquals(false, IOCase.SENSITIVE.checkStartsWith("ABC", "BC"));
144 assertEquals(false, IOCase.SENSITIVE.checkStartsWith("ABC", "C"));
145 assertEquals(false, IOCase.SENSITIVE.checkStartsWith("ABC", "ABCD"));
146 assertEquals(false, IOCase.SENSITIVE.checkStartsWith("", "ABC"));
147 assertEquals(true, IOCase.SENSITIVE.checkStartsWith("", ""));
148
149 try {
150 IOCase.SENSITIVE.checkStartsWith("ABC", null);
151 fail();
152 } catch (NullPointerException ex) {}
153 try {
154 IOCase.SENSITIVE.checkStartsWith(null, "ABC");
155 fail();
156 } catch (NullPointerException ex) {}
157 try {
158 IOCase.SENSITIVE.checkStartsWith(null, null);
159 fail();
160 } catch (NullPointerException ex) {}
161 }
162
163 public void test_checkStartsWith_case() throws Exception {
164 assertEquals(true, IOCase.SENSITIVE.checkStartsWith("ABC", "AB"));
165 assertEquals(false, IOCase.SENSITIVE.checkStartsWith("ABC", "Ab"));
166
167 assertEquals(true, IOCase.INSENSITIVE.checkStartsWith("ABC", "AB"));
168 assertEquals(true, IOCase.INSENSITIVE.checkStartsWith("ABC", "Ab"));
169
170 assertEquals(true, IOCase.SYSTEM.checkStartsWith("ABC", "AB"));
171 assertEquals(WINDOWS, IOCase.SYSTEM.checkStartsWith("ABC", "Ab"));
172 }
173
174
175 public void test_checkEndsWith_functionality() throws Exception {
176 assertEquals(true, IOCase.SENSITIVE.checkEndsWith("ABC", ""));
177 assertEquals(false, IOCase.SENSITIVE.checkEndsWith("ABC", "A"));
178 assertEquals(false, IOCase.SENSITIVE.checkEndsWith("ABC", "AB"));
179 assertEquals(true, IOCase.SENSITIVE.checkEndsWith("ABC", "ABC"));
180 assertEquals(true, IOCase.SENSITIVE.checkEndsWith("ABC", "BC"));
181 assertEquals(true, IOCase.SENSITIVE.checkEndsWith("ABC", "C"));
182 assertEquals(false, IOCase.SENSITIVE.checkEndsWith("ABC", "ABCD"));
183 assertEquals(false, IOCase.SENSITIVE.checkEndsWith("", "ABC"));
184 assertEquals(true, IOCase.SENSITIVE.checkEndsWith("", ""));
185
186 try {
187 IOCase.SENSITIVE.checkEndsWith("ABC", null);
188 fail();
189 } catch (NullPointerException ex) {}
190 try {
191 IOCase.SENSITIVE.checkEndsWith(null, "ABC");
192 fail();
193 } catch (NullPointerException ex) {}
194 try {
195 IOCase.SENSITIVE.checkEndsWith(null, null);
196 fail();
197 } catch (NullPointerException ex) {}
198 }
199
200 public void test_checkEndsWith_case() throws Exception {
201 assertEquals(true, IOCase.SENSITIVE.checkEndsWith("ABC", "BC"));
202 assertEquals(false, IOCase.SENSITIVE.checkEndsWith("ABC", "Bc"));
203
204 assertEquals(true, IOCase.INSENSITIVE.checkEndsWith("ABC", "BC"));
205 assertEquals(true, IOCase.INSENSITIVE.checkEndsWith("ABC", "Bc"));
206
207 assertEquals(true, IOCase.SYSTEM.checkEndsWith("ABC", "BC"));
208 assertEquals(WINDOWS, IOCase.SYSTEM.checkEndsWith("ABC", "Bc"));
209 }
210
211
212 public void test_checkRegionMatches_functionality() throws Exception {
213 assertEquals(true, IOCase.SENSITIVE.checkRegionMatches("ABC", 0, ""));
214 assertEquals(true, IOCase.SENSITIVE.checkRegionMatches("ABC", 0, "A"));
215 assertEquals(true, IOCase.SENSITIVE.checkRegionMatches("ABC", 0, "AB"));
216 assertEquals(true, IOCase.SENSITIVE.checkRegionMatches("ABC", 0, "ABC"));
217 assertEquals(false, IOCase.SENSITIVE.checkRegionMatches("ABC", 0, "BC"));
218 assertEquals(false, IOCase.SENSITIVE.checkRegionMatches("ABC", 0, "C"));
219 assertEquals(false, IOCase.SENSITIVE.checkRegionMatches("ABC", 0, "ABCD"));
220 assertEquals(false, IOCase.SENSITIVE.checkRegionMatches("", 0, "ABC"));
221 assertEquals(true, IOCase.SENSITIVE.checkRegionMatches("", 0, ""));
222
223 assertEquals(true, IOCase.SENSITIVE.checkRegionMatches("ABC", 1, ""));
224 assertEquals(false, IOCase.SENSITIVE.checkRegionMatches("ABC", 1, "A"));
225 assertEquals(false, IOCase.SENSITIVE.checkRegionMatches("ABC", 1, "AB"));
226 assertEquals(false, IOCase.SENSITIVE.checkRegionMatches("ABC", 1, "ABC"));
227 assertEquals(true, IOCase.SENSITIVE.checkRegionMatches("ABC", 1, "BC"));
228 assertEquals(false, IOCase.SENSITIVE.checkRegionMatches("ABC", 1, "C"));
229 assertEquals(false, IOCase.SENSITIVE.checkRegionMatches("ABC", 1, "ABCD"));
230 assertEquals(false, IOCase.SENSITIVE.checkRegionMatches("", 1, "ABC"));
231 assertEquals(false, IOCase.SENSITIVE.checkRegionMatches("", 1, ""));
232
233 try {
234 IOCase.SENSITIVE.checkRegionMatches("ABC", 0, null);
235 fail();
236 } catch (NullPointerException ex) {}
237 try {
238 IOCase.SENSITIVE.checkRegionMatches(null, 0, "ABC");
239 fail();
240 } catch (NullPointerException ex) {}
241 try {
242 IOCase.SENSITIVE.checkRegionMatches(null, 0, null);
243 fail();
244 } catch (NullPointerException ex) {}
245 try {
246 IOCase.SENSITIVE.checkRegionMatches("ABC", 1, null);
247 fail();
248 } catch (NullPointerException ex) {}
249 try {
250 IOCase.SENSITIVE.checkRegionMatches(null, 1, "ABC");
251 fail();
252 } catch (NullPointerException ex) {}
253 try {
254 IOCase.SENSITIVE.checkRegionMatches(null, 1, null);
255 fail();
256 } catch (NullPointerException ex) {}
257 }
258
259 public void test_checkRegionMatches_case() throws Exception {
260 assertEquals(true, IOCase.SENSITIVE.checkRegionMatches("ABC", 0, "AB"));
261 assertEquals(false, IOCase.SENSITIVE.checkRegionMatches("ABC", 0, "Ab"));
262
263 assertEquals(true, IOCase.INSENSITIVE.checkRegionMatches("ABC", 0, "AB"));
264 assertEquals(true, IOCase.INSENSITIVE.checkRegionMatches("ABC", 0, "Ab"));
265
266 assertEquals(true, IOCase.SYSTEM.checkRegionMatches("ABC", 0, "AB"));
267 assertEquals(WINDOWS, IOCase.SYSTEM.checkRegionMatches("ABC", 0, "Ab"));
268 }
269
270
271 private IOCase serialize(IOCase value) throws Exception {
272 ByteArrayOutputStream buf = new ByteArrayOutputStream();
273 ObjectOutputStream out = new ObjectOutputStream(buf);
274 out.writeObject(value);
275 out.flush();
276 out.close();
277
278 ByteArrayInputStream bufin = new ByteArrayInputStream(buf.toByteArray());
279 ObjectInputStream in = new ObjectInputStream(bufin);
280 return (IOCase) in.readObject();
281 }
282
283 }