1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.juneau.commons.utils;
18
19 import static org.junit.jupiter.api.Assertions.*;
20
21 import java.util.*;
22
23 import org.apache.juneau.*;
24 import org.junit.jupiter.api.*;
25
26
27
28
29 class ResourceBundleUtils_Test extends TestBase {
30
31
32
33
34 @Test
35 void a00_constructor() {
36
37
38 var instance = new ResourceBundleUtils();
39 assertNotNull(instance);
40 }
41
42
43
44
45
46 @Test
47 void a01_findBundle_existingBundle_defaultLocale() {
48 var loader = getClass().getClassLoader();
49 var bundle = ResourceBundleUtils.findBundle("org.apache.juneau.rest.NlsTest", Locale.getDefault(), loader);
50 assertNotNull(bundle);
51 assertEquals("value1", bundle.getString("key1"));
52 assertEquals("value2", bundle.getString("key2"));
53 }
54
55 @Test
56 void a02_findBundle_existingBundle_specificLocale() {
57 var loader = getClass().getClassLoader();
58 var bundle = ResourceBundleUtils.findBundle("org.apache.juneau.rest.NlsTest", Locale.ENGLISH, loader);
59 assertNotNull(bundle);
60 assertEquals("value1", bundle.getString("key1"));
61 }
62
63 @Test
64 void a03_findBundle_existingBundle_withLocaleVariant() {
65 var loader = getClass().getClassLoader();
66
67 var bundle = ResourceBundleUtils.findBundle("org.apache.juneau.cp.test3.MessageBundleTest1", Locale.JAPANESE, loader);
68 assertNotNull(bundle);
69
70 assertTrue(bundle.getString("file").contains("_ja"));
71 }
72
73 @Test
74 void a04_findBundle_existingBundle_withLocaleAndCountry() {
75 var loader = getClass().getClassLoader();
76
77 var bundle = ResourceBundleUtils.findBundle("org.apache.juneau.cp.test3.MessageBundleTest1", Locale.JAPAN, loader);
78 assertNotNull(bundle);
79
80 var file = bundle.getString("file");
81 assertTrue(file.contains("MessageBundleTest1"));
82 }
83
84 @Test
85 void a05_findBundle_existingBundle_fallbackToDefault() {
86 var loader = getClass().getClassLoader();
87
88 var bundle = ResourceBundleUtils.findBundle("org.apache.juneau.rest.NlsTest", Locale.FRENCH, loader);
89 assertNotNull(bundle);
90
91 assertEquals("value1", bundle.getString("key1"));
92 }
93
94 @Test
95 void a06_findBundle_nonexistentBundle() {
96 var loader = getClass().getClassLoader();
97 var bundle = ResourceBundleUtils.findBundle("nonexistent.Bundle", Locale.getDefault(), loader);
98 assertNull(bundle);
99 }
100
101 @Test
102 void a07_findBundle_nonexistentBundle_differentLocale() {
103 var loader = getClass().getClassLoader();
104 var bundle = ResourceBundleUtils.findBundle("nonexistent.Bundle", Locale.JAPANESE, loader);
105 assertNull(bundle);
106 }
107
108 @Test
109 void a08_findBundle_withFilesPath() {
110 var loader = getClass().getClassLoader();
111
112 var bundle = ResourceBundleUtils.findBundle("files.Test3", Locale.getDefault(), loader);
113 assertNotNull(bundle);
114 assertEquals("files/Test3.properties", bundle.getString("file"));
115 }
116
117 @Test
118 void a09_findBundle_withFilesPath_localeVariant() {
119 var loader = getClass().getClassLoader();
120 var bundle = ResourceBundleUtils.findBundle("files.Test3", Locale.JAPANESE, loader);
121 assertNotNull(bundle);
122
123 var file = bundle.getString("file");
124 assertTrue(file.contains("Test3"));
125 }
126
127 @Test
128 void a10_findBundle_differentClassLoaders() {
129 var loader1 = getClass().getClassLoader();
130 var loader2 = Thread.currentThread().getContextClassLoader();
131
132 var bundle1 = ResourceBundleUtils.findBundle("org.apache.juneau.rest.NlsTest", Locale.getDefault(), loader1);
133 var bundle2 = ResourceBundleUtils.findBundle("org.apache.juneau.rest.NlsTest", Locale.getDefault(), loader2);
134
135
136 assertNotNull(bundle1);
137 assertNotNull(bundle2);
138 assertEquals(bundle1.getString("key1"), bundle2.getString("key1"));
139 }
140
141 @Test
142 void a11_findBundle_nullClassLoader() {
143
144
145
146 var ex = assertThrows(Exception.class, () -> {
147 ResourceBundleUtils.findBundle("org.apache.juneau.rest.NlsTest", Locale.getDefault(), null);
148 });
149
150 assertTrue(ex instanceof IllegalArgumentException || ex instanceof NullPointerException,
151 "Expected IllegalArgumentException or NullPointerException, got: " + ex.getClass().getName());
152 }
153
154 @Test
155 void a12_findBundle_localeFallback() {
156 var loader = getClass().getClassLoader();
157
158 var bundle = ResourceBundleUtils.findBundle("org.apache.juneau.cp.test3.MessageBundleTest1", Locale.JAPAN, loader);
159 assertNotNull(bundle);
160
161 assertTrue(bundle.containsKey("file"));
162 }
163
164 @Test
165 void a13_findBundle_doesNotThrowException() {
166 var loader = getClass().getClassLoader();
167
168 var bundle = ResourceBundleUtils.findBundle("com.nonexistent.Class", Locale.getDefault(), loader);
169 assertNull(bundle);
170 }
171
172 @Test
173 void a14_findBundle_emptyBaseName() {
174 var loader = getClass().getClassLoader();
175 var bundle = ResourceBundleUtils.findBundle("", Locale.getDefault(), loader);
176 assertNull(bundle);
177 }
178
179 @Test
180 void a15_findBundle_nullBaseName() {
181 var loader = getClass().getClassLoader();
182
183
184 assertThrows(NullPointerException.class, () -> {
185 ResourceBundleUtils.findBundle(null, Locale.getDefault(), loader);
186 });
187 }
188
189 @Test
190 void a16_findBundle_nullLocale() {
191 var loader = getClass().getClassLoader();
192
193
194 assertThrows(NullPointerException.class, () -> {
195 ResourceBundleUtils.findBundle("org.apache.juneau.rest.NlsTest", null, loader);
196 });
197 }
198
199 @Test
200 void a17_findBundle_allNulls() {
201
202
203
204 var ex = assertThrows(Exception.class, () -> {
205 ResourceBundleUtils.findBundle(null, null, null);
206 });
207
208 assertTrue(ex instanceof IllegalArgumentException || ex instanceof NullPointerException,
209 "Expected IllegalArgumentException or NullPointerException, got: " + ex.getClass().getName());
210 }
211
212 @Test
213 void a18_findBundle_verifiesNoExceptionThrown() {
214 var loader = getClass().getClassLoader();
215
216
217 assertDoesNotThrow(() -> {
218 var bundle = ResourceBundleUtils.findBundle("definitely.does.not.exist.Bundle", Locale.getDefault(), loader);
219 assertNull(bundle);
220 });
221 }
222
223 @Test
224 void a19_findBundle_comparesWithDirectCall() {
225 var loader = getClass().getClassLoader();
226
227 try {
228 var direct = ResourceBundle.getBundle("org.apache.juneau.rest.NlsTest", Locale.getDefault(), loader);
229 var utils = ResourceBundleUtils.findBundle("org.apache.juneau.rest.NlsTest", Locale.getDefault(), loader);
230 assertNotNull(direct);
231 assertNotNull(utils);
232 assertEquals(direct.getString("key1"), utils.getString("key1"));
233 } catch (MissingResourceException e) {
234 fail("Direct call should not throw for existing bundle");
235 }
236 }
237
238 @Test
239 void a20_findBundle_directCallThrowsButUtilsDoesNot() {
240 var loader = getClass().getClassLoader();
241
242 assertThrows(MissingResourceException.class, () -> {
243 ResourceBundle.getBundle("definitely.does.not.exist.Bundle", Locale.getDefault(), loader);
244 });
245
246
247 var bundle = ResourceBundleUtils.findBundle("definitely.does.not.exist.Bundle", Locale.getDefault(), loader);
248 assertNull(bundle);
249 }
250 }
251