1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 package org.apache.commons.resources;
25
26 import java.util.Locale;
27
28 import junit.framework.Test;
29 import junit.framework.TestCase;
30 import junit.framework.TestSuite;
31
32 import org.apache.commons.resources.impl.ResourceBundleResourcesFactory;
33
34 /***
35 * <p>Unit tests for
36 * <code>org.apache.commons.resources.Messages</code>.
37 * </p>
38 */
39 public class MessagesTestCase extends TestCase {
40
41
42 protected static final String CONFIG = "org.apache.commons.resources.impl.TestResources";
43
44
45 protected static final String NAME = "name";
46
47
48
49 protected ResourcesFactory factory = null;
50
51
52
53 protected Resources resources = null;
54
55
56 protected Messages messages = null;
57
58
59
60
61
62 public MessagesTestCase(String name) {
63 super(name);
64 }
65
66
67
68
69
70
71 public void setUp() throws Exception {
72 factory = new ResourceBundleResourcesFactory();
73 resources = factory.getResources(NAME, CONFIG);
74 resources.setReturnNull(false);
75 messages = new Messages(resources);
76 }
77
78
79 public static Test suite() {
80 return (new TestSuite(MessagesTestCase.class));
81 }
82
83
84 public void tearDown() {
85 messages = null;
86 resources = null;
87 factory = null;
88 }
89
90
91
92
93
94 /***
95 * Test the use of the shortcut getMessages() method.
96 */
97 public void testLocal() {
98 String message = null;
99
100 Messages local =
101 Messages.getMessages(
102 "org.apache.commons.resources.impl.LocalStrings");
103
104 assertNotNull("Local messages found", local);
105
106 message = local.getMessage("local.message");
107
108 assertEquals(
109 "Correct individual message",
110 "[Local] REPLACE {0} WITH {1}",
111 message);
112
113 message =
114 local.getMessage("local.message", new String[] { "abc", "def" });
115
116 assertEquals(
117 "Correct replaced message",
118 "[Local] REPLACE abc WITH def",
119 message);
120
121 local.getResources().setReturnNull(false);
122 message = local.getMessage("local.missing");
123 assertEquals("Correct missing message", "???local.missing???", message);
124
125
126 Messages messages2 = new MyMessages(null);
127 Messages messages3 = messages2.getMessages(null);
128 assertNull("Invalid Messages", messages3);
129
130 }
131
132
133
134 /***
135 * Test the ability to retrieve messages with replacements.
136 */
137 public void testMessage() {
138 String message = null;
139
140 message = messages.getMessage("test.missing");
141 assertEquals("Correct missing message", "???test.missing???", message);
142
143 message = messages.getMessage(Locale.ENGLISH, "test.message");
144 assertEquals(
145 "Correct individual message",
146 "[Base] REPLACE {0} WITH {1}",
147 message);
148
149 message =
150 messages.getMessage("test.message", new String[] { "abc", "def" });
151
152 assertEquals(
153 "Correct replaced message",
154 "[Base] REPLACE abc WITH def",
155 message);
156
157 message =
158 messages.getMessage(Locale.ENGLISH, "test.message", new String[] { "abc", "def" });
159
160 assertEquals(
161 "Correct replaced message",
162 "[Base] REPLACE abc WITH def",
163 message);
164
165 message =
166 messages.getMessage(Locale.ENGLISH, "test.message.single", "abc");
167
168 assertEquals(
169 "Correct replaced message",
170 "[Base] REPLACE abc",
171 message);
172
173 message =
174 messages.getMessage("test.message.single", "abc");
175
176 assertEquals(
177 "Correct replaced message",
178 "[Base] REPLACE abc",
179 message);
180
181 Resources resources2 =
182 factory.getResources(NAME + "-does-not-exist",
183 CONFIG + "-does-not-exist");
184 resources2.setReturnNull(false);
185 Messages messages2 = new Messages(resources2);
186 message = messages2.getMessage("test.message");
187
188 Exception exception = new Exception("Bad Implementation");
189 ResourcesException resourcesException = new ResourcesException(exception);
190 try{
191 if (true)
192 throw resourcesException;
193 }
194 catch(ResourcesException e){
195 assertEquals("Check exception", e, resourcesException);
196 assertEquals("Check exception cause", e.getRootCause(), exception);
197 assertEquals("Check exception message", e.getMessage(), exception.getMessage());
198 }
199
200 }
201
202
203 /***
204 * Test the ability to retrieve messages with replacements.
205 */
206 public void testMessages() {
207 String message = null;
208
209 message = messages.getMessage("test.message");
210 assertEquals(
211 "Correct individual message",
212 "[Base] REPLACE {0} WITH {1}",
213 message);
214
215 message =
216 messages.getMessage("test.message", new String[] { "abc", "def" });
217
218 assertEquals(
219 "Correct replaced message",
220 "[Base] REPLACE abc WITH def",
221 message);
222
223 message = messages.getMessage("test.missing");
224 assertEquals("Correct missing message", "???test.missing???", message);
225
226
227 }
228
229
230 /***
231 * Test the characteristics of a newly created instance.
232 */
233 public void testPristine() {
234 assertNotNull(messages);
235 assertTrue(
236 "Correct wrapped resources",
237 resources == messages.getResources());
238 }
239
240
241 class MyMessages extends Messages{
242
243 public MyMessages(Resources resources) {
244 super(resources);
245 ResourcesFactory factory = new ResourcesFactory() {
246 public Resources getResources(String name)
247 throws ResourcesException {
248 throw new ResourcesException("Bad Implementation");
249 }
250
251 public boolean isReturnNull() {
252 return false;
253 }
254
255 public void setReturnNull(boolean returnNull) {}
256
257 public Resources getResources(String name, String config) throws ResourcesException {
258 return null;
259 }
260
261 public void release() throws ResourcesException {
262 }
263 };
264 Messages.setFactory(factory);
265 }
266
267 }
268 }