3 // NUnit Test Cases for System.Resources.ResourceManager
6 // Robert Jordan (robertj@gmx.net)
7 // Gert Driesen (drieseng@users.sourceforge.net)
8 // Sebastien Pouliot <sebastien@ximian.com>
10 // Copyright (C) 2005,2008 Novell, Inc. (http://www.novell.com)
14 // Permission is hereby granted, free of charge, to any person obtaining
15 // a copy of this software and associated documentation files (the
16 // "Software"), to deal in the Software without restriction, including
17 // without limitation the rights to use, copy, modify, merge, publish,
18 // distribute, sublicense, and/or sell copies of the Software, and to
19 // permit persons to whom the Software is furnished to do so, subject to
20 // the following conditions:
22 // The above copyright notice and this permission notice shall be
23 // included in all copies or substantial portions of the Software.
25 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
26 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
27 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
28 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
29 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
30 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
31 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
35 using System.Collections;
36 using System.Globalization;
37 using System.Reflection;
38 using System.Resources;
39 using System.Threading;
42 using NUnit.Framework;
44 namespace MonoTests.System.Resources
47 public class ResourceManagerTest
49 private CultureInfo _orgUICulture;
54 _orgUICulture = Thread.CurrentThread.CurrentUICulture;
58 public void TearDown ()
60 Thread.CurrentThread.CurrentUICulture = _orgUICulture;
63 [Test] // ResourceManager ()
64 public void Constructor0 ()
66 MockResourceManager rm = new MockResourceManager ();
67 Assert.IsNull (rm.BaseName, "#1");
68 Assert.IsNull (rm.BaseNameField, "#2");
69 Assert.IsFalse (rm.IgnoreCase, "#3");
70 Assert.IsNull (rm.MainAssembly, "#4");
71 Assert.IsNull (rm.ResourceSets, "#5");
72 Assert.IsNotNull (rm.ResourceSetType, "#6");
73 Assert.IsTrue (typeof (ResourceSet).IsAssignableFrom (rm.ResourceSetType), "#7");
74 Assert.IsFalse (typeof (ResourceSet) == rm.ResourceSetType, "#8");
77 [Test] // ResourceManager (Type)
78 public void Constructor1 ()
80 MockResourceManager rm = new MockResourceManager (typeof (string));
81 Assert.IsNotNull (rm.BaseName, "#1");
82 Assert.AreEqual ("String", rm.BaseName, "#2");
83 Assert.IsNotNull (rm.BaseNameField, "#3");
84 Assert.AreEqual ("String", rm.BaseNameField, "#4");
85 Assert.IsFalse (rm.IgnoreCase, "#5");
86 Assert.IsNotNull (rm.MainAssembly, "#6");
87 Assert.AreEqual (typeof (String).Assembly, rm.MainAssembly, "#7");
88 Assert.IsNotNull (rm.ResourceSets, "#8");
89 Assert.AreEqual (0, rm.ResourceSets.Count, "#9");
90 Assert.IsNotNull (rm.ResourceSetType, "#10");
91 Assert.IsTrue (typeof (ResourceSet).IsAssignableFrom (rm.ResourceSetType), "#11");
92 Assert.IsFalse (typeof (ResourceSet) == rm.ResourceSetType, "#12");
93 Assert.AreEqual ("RuntimeResourceSet", rm.ResourceSetType.Name, "#13");
96 [Test] // ResourceManager (Type)
97 public void Constructor1_ResourceSource_Null ()
100 new ResourceManager ((Type) null);
102 } catch (ArgumentNullException ex) {
103 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
104 Assert.IsNull (ex.InnerException, "#3");
105 Assert.IsNotNull (ex.Message, "#4");
106 Assert.IsNotNull (ex.ParamName, "#5");
107 Assert.AreEqual ("resourceSource", ex.ParamName, "#6");
111 [Test] // ResourceManager (String, Assembly)
112 public void Constructor2 ()
114 MockResourceManager rm = null;
115 Assembly assembly = null;
117 assembly = Assembly.GetExecutingAssembly ();
118 rm = new MockResourceManager ("mono", assembly);
119 Assert.IsNotNull (rm.BaseName, "#A1");
120 Assert.AreEqual ("mono", rm.BaseName, "#A2");
121 Assert.IsNotNull (rm.BaseNameField, "#A3");
122 Assert.AreEqual ("mono", rm.BaseNameField, "#A4");
123 Assert.IsFalse (rm.IgnoreCase, "#A5");
124 Assert.IsNotNull (rm.MainAssembly, "#A6");
125 Assert.AreEqual (assembly, rm.MainAssembly, "#A7");
126 Assert.IsNotNull (rm.ResourceSets, "#A8");
127 Assert.AreEqual (0, rm.ResourceSets.Count, "#A9");
128 Assert.IsNotNull (rm.ResourceSetType, "#A10");
129 Assert.IsTrue (typeof (ResourceSet).IsAssignableFrom (rm.ResourceSetType), "#A11");
130 Assert.IsFalse (typeof (ResourceSet) == rm.ResourceSetType, "#A12");
131 Assert.AreEqual ("RuntimeResourceSet", rm.ResourceSetType.Name, "#A13");
133 assembly = typeof (int).Assembly;
134 rm = new MockResourceManager (string.Empty, assembly);
135 Assert.IsNotNull (rm.BaseName, "#B1");
136 Assert.AreEqual (string.Empty, rm.BaseName, "#B2");
137 Assert.IsNotNull (rm.BaseNameField, "#B3");
138 Assert.AreEqual (string.Empty, rm.BaseNameField, "#B4");
139 Assert.IsFalse (rm.IgnoreCase, "#B5");
140 Assert.IsNotNull (rm.MainAssembly, "#B6");
141 Assert.AreEqual (assembly, rm.MainAssembly, "#B7");
142 Assert.IsNotNull (rm.ResourceSets, "#B8");
143 Assert.AreEqual (0, rm.ResourceSets.Count, "#B9");
144 Assert.IsNotNull (rm.ResourceSetType, "#B10");
145 Assert.IsTrue (typeof (ResourceSet).IsAssignableFrom (rm.ResourceSetType), "#B11");
146 Assert.IsFalse (typeof (ResourceSet) == rm.ResourceSetType, "#B12");
147 Assert.AreEqual ("RuntimeResourceSet", rm.ResourceSetType.Name, "#B13");
150 [Test] // ResourceManager (String, Assembly)
151 public void Constructor2_BaseName_Null ()
154 new ResourceManager ((string) null, Assembly.
155 GetExecutingAssembly ());
157 } catch (ArgumentNullException ex) {
158 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
159 Assert.IsNull (ex.InnerException, "#3");
160 Assert.IsNotNull (ex.Message, "#4");
161 Assert.IsNotNull (ex.ParamName, "#5");
162 Assert.AreEqual ("baseName", ex.ParamName, "#6");
166 [Test] // ResourceManager (String, Assembly)
167 public void Constructor2_BaseName_Resources ()
169 MockResourceManager rm = new MockResourceManager (
171 Assembly.GetExecutingAssembly ());
172 Assert.IsNotNull (rm.BaseName, "#1");
173 Assert.AreEqual ("mono.resources", rm.BaseName, "#2");
174 Assert.IsNotNull (rm.BaseNameField, "#3");
175 Assert.AreEqual ("mono.resources", rm.BaseNameField, "#4");
176 Assert.IsFalse (rm.IgnoreCase, "#5");
177 Assert.IsNotNull (rm.MainAssembly, "#6");
178 Assert.AreEqual (Assembly.GetExecutingAssembly (), rm.MainAssembly, "#7");
179 Assert.IsNotNull (rm.ResourceSets, "#8");
180 Assert.AreEqual (0, rm.ResourceSets.Count, "#9");
181 Assert.IsNotNull (rm.ResourceSetType, "#10");
182 Assert.IsTrue (typeof (ResourceSet).IsAssignableFrom (rm.ResourceSetType), "#11");
183 Assert.IsFalse (typeof (ResourceSet) == rm.ResourceSetType, "#12");
184 Assert.AreEqual ("RuntimeResourceSet", rm.ResourceSetType.Name, "#13");
187 [Test] // ResourceManager (String, Assembly)
188 public void Constructor2_Assembly_Null ()
191 new ResourceManager (string.Empty, (Assembly) null);
193 } catch (ArgumentNullException ex) {
194 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
195 Assert.IsNull (ex.InnerException, "#3");
196 Assert.IsNotNull (ex.Message, "#4");
197 Assert.IsNotNull (ex.ParamName, "#5");
198 Assert.AreEqual ("assembly", ex.ParamName, "#6");
202 [Test] // ResourceManager (String, Assembly, Type)
203 public void Constructor3 ()
205 MockResourceManager rm = null;
206 Assembly assembly = null;
208 assembly = Assembly.GetExecutingAssembly ();
209 rm = new MockResourceManager ("mono", assembly,
210 typeof (ResourceSet));
211 Assert.IsNotNull (rm.BaseName, "#A1");
212 Assert.AreEqual ("mono", rm.BaseName, "#A2");
213 Assert.IsNotNull (rm.BaseNameField, "#A3");
214 Assert.AreEqual ("mono", rm.BaseNameField, "#A4");
215 Assert.IsFalse (rm.IgnoreCase, "#A5");
216 Assert.IsNotNull (rm.MainAssembly, "#A6");
217 Assert.AreEqual (assembly, rm.MainAssembly, "#A7");
218 Assert.IsNotNull (rm.ResourceSets, "#A8");
219 Assert.AreEqual (0, rm.ResourceSets.Count, "#A9");
220 Assert.IsNotNull (rm.ResourceSetType, "#A10");
221 Assert.AreEqual (typeof (ResourceSet), rm.ResourceSetType, "#A11");
223 assembly = typeof (int).Assembly;
224 rm = new MockResourceManager ("mono", assembly,
225 typeof (MockResourceSet));
226 Assert.IsNotNull (rm.BaseName, "#B1");
227 Assert.AreEqual ("mono", rm.BaseName, "#B2");
228 Assert.IsNotNull (rm.BaseNameField, "#B3");
229 Assert.AreEqual ("mono", rm.BaseNameField, "#B4");
230 Assert.IsFalse (rm.IgnoreCase, "#B5");
231 Assert.IsNotNull (rm.MainAssembly, "#B6");
232 Assert.AreEqual (assembly, rm.MainAssembly, "#B7");
233 Assert.IsNotNull (rm.ResourceSets, "#B8");
234 Assert.AreEqual (0, rm.ResourceSets.Count, "#B9");
235 Assert.IsNotNull (rm.ResourceSetType, "#B10");
236 Assert.AreEqual (typeof (MockResourceSet), rm.ResourceSetType, "#B11");
239 [Test] // ResourceManager (String, Assembly, Type)
240 public void Constructor3_BaseName_Null ()
243 new ResourceManager ((string) null, Assembly.
244 GetExecutingAssembly (),
245 typeof (ResourceSet));
247 } catch (ArgumentNullException ex) {
248 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
249 Assert.IsNull (ex.InnerException, "#3");
250 Assert.IsNotNull (ex.Message, "#4");
251 Assert.IsNotNull (ex.ParamName, "#5");
252 Assert.AreEqual ("baseName", ex.ParamName, "#6");
256 [Test] // ResourceManager (String, Assembly, Type)
257 public void Constructor3_BaseName_Resources ()
259 MockResourceManager rm = new MockResourceManager (
261 Assembly.GetExecutingAssembly (),
262 typeof (ResourceSet));
263 Assert.IsNotNull (rm.BaseName, "#1");
264 Assert.AreEqual ("mono.resources", rm.BaseName, "#2");
265 Assert.IsNotNull (rm.BaseNameField, "#3");
266 Assert.AreEqual ("mono.resources", rm.BaseNameField, "#4");
267 Assert.IsFalse (rm.IgnoreCase, "#5");
268 Assert.IsNotNull (rm.MainAssembly, "#6");
269 Assert.AreEqual (Assembly.GetExecutingAssembly (), rm.MainAssembly, "#7");
270 Assert.IsNotNull (rm.ResourceSets, "#8");
271 Assert.AreEqual (0, rm.ResourceSets.Count, "#9");
272 Assert.IsNotNull (rm.ResourceSetType, "#10");
273 Assert.AreEqual (typeof (ResourceSet), rm.ResourceSetType, "#11");
276 [Test] // ResourceManager (String, Assembly, Type)
277 public void Constructor3_Assembly_Null ()
280 new ResourceManager (string.Empty, (Assembly) null,
281 typeof (ResourceSet));
283 } catch (ArgumentNullException ex) {
284 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
285 Assert.IsNull (ex.InnerException, "#3");
286 Assert.IsNotNull (ex.Message, "#4");
287 Assert.IsNotNull (ex.ParamName, "#5");
288 Assert.AreEqual ("assembly", ex.ParamName, "#6");
292 [Test] // ResourceManager (String, Assembly, Type)
293 public void Constructor3_UsingResourceSet_Invalid ()
296 new ResourceManager ("mono", typeof (int).Assembly,
299 } catch (ArgumentException ex) {
300 // Type parameter must refer to a subclass of
302 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
303 Assert.IsNull (ex.InnerException, "#3");
304 Assert.IsNotNull (ex.Message, "#4");
305 Assert.IsTrue (ex.Message.IndexOf ("ResourceSet") != -1, "#5");
306 Assert.IsNotNull (ex.ParamName, "#6");
307 Assert.AreEqual ("usingResourceSet", ex.ParamName, "#7");
311 [Test] // ResourceManager (String, Assembly, Type)
312 public void Constructor3_UsingResourceSet_Null ()
314 MockResourceManager rm = new MockResourceManager (
315 string.Empty, Assembly.GetExecutingAssembly (),
317 Assert.IsNotNull (rm.BaseName, "#1");
318 Assert.AreEqual (string.Empty, rm.BaseName, "#2");
319 Assert.IsNotNull (rm.BaseNameField, "#3");
320 Assert.AreEqual (string.Empty, rm.BaseNameField, "#4");
321 Assert.IsFalse (rm.IgnoreCase, "#5");
322 Assert.IsNotNull (rm.MainAssembly, "#6");
323 Assert.AreEqual (Assembly.GetExecutingAssembly (), rm.MainAssembly, "#7");
324 Assert.IsNotNull (rm.ResourceSets, "#8");
325 Assert.AreEqual (0, rm.ResourceSets.Count, "#9");
326 Assert.IsNotNull (rm.ResourceSetType, "#10");
327 Assert.IsTrue (typeof (ResourceSet).IsAssignableFrom (rm.ResourceSetType), "#11");
328 Assert.IsFalse (typeof (ResourceSet) == rm.ResourceSetType, "#12");
329 Assert.AreEqual ("RuntimeResourceSet", rm.ResourceSetType.Name, "#13");
333 public void CreateFileBasedResourceManager_BaseName_Null ()
336 ResourceManager.CreateFileBasedResourceManager (
337 (string) null, AppDomain.CurrentDomain.BaseDirectory,
338 typeof (ResourceSet));
340 } catch (ArgumentNullException ex) {
341 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
342 Assert.IsNull (ex.InnerException, "#3");
343 Assert.IsNotNull (ex.Message, "#4");
344 Assert.IsNotNull (ex.ParamName, "#5");
345 Assert.AreEqual ("baseName", ex.ParamName, "#6");
350 public void CreateFileBasedResourceManager_BaseName_Resources ()
352 ResourceManager rm = ResourceManager.CreateFileBasedResourceManager (
353 "MyResources.resources", "Test/resources", null);
355 rm.GetResourceSet (CultureInfo.InvariantCulture, true, true);
357 } catch (MissingManifestResourceException ex) {
358 // Could not find any resources appropriate for
359 // the specified culture (or the neutral culture)
361 Assert.AreEqual (typeof (MissingManifestResourceException), ex.GetType (), "#2");
362 Assert.IsNull (ex.InnerException, "#3");
363 Assert.IsNotNull (ex.Message, "#4");
368 public void CreateFileBasedResourceManager_ResourceDir_Null ()
371 ResourceManager.CreateFileBasedResourceManager (
372 "whatever", (string) null,
373 typeof (ResourceSet));
375 } catch (ArgumentNullException ex) {
376 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
377 Assert.IsNull (ex.InnerException, "#3");
378 Assert.IsNotNull (ex.Message, "#4");
379 Assert.IsNotNull (ex.ParamName, "#5");
380 Assert.AreEqual ("resourceDir", ex.ParamName, "#6");
385 public void CreateFileBasedResourceManager_UsingResourceSet_Invalid ()
387 ResourceManager rm = ResourceManager.CreateFileBasedResourceManager (
388 "MyResources", "Test/resources", typeof (string));
389 Assert.IsNotNull (rm.BaseName, "#1");
390 Assert.AreEqual ("MyResources", rm.BaseName, "#2");
391 Assert.IsFalse (rm.IgnoreCase, "#3");
392 Assert.IsNotNull (rm.ResourceSetType, "#4");
393 Assert.AreEqual (typeof (string), rm.ResourceSetType, "#5");
397 public void CreateFileBasedResourceManager_UsingResourceSet_Null ()
399 ResourceManager rm = ResourceManager.CreateFileBasedResourceManager (
400 "MyResources", "Test/resources", (Type) null);
401 Assert.IsNotNull (rm.BaseName, "#1");
402 Assert.AreEqual ("MyResources", rm.BaseName, "#2");
403 Assert.IsFalse (rm.IgnoreCase, "#3");
404 Assert.IsNotNull (rm.ResourceSetType, "#4");
405 Assert.IsTrue (typeof (ResourceSet).IsAssignableFrom (rm.ResourceSetType), "#5");
406 Assert.IsFalse (typeof (ResourceSet) == rm.ResourceSetType, "#6");
407 Assert.AreEqual ("RuntimeResourceSet", rm.ResourceSetType.Name, "#7");
411 [Category ("MobileNotWorking")]
412 public void GetObject ()
414 ResourceManager rm = ResourceManager.
415 CreateFileBasedResourceManager ("MyResources", "Test/resources", null);
417 Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;
418 Assert.AreEqual ("Hello World", rm.GetObject ("HelloWorld"), "#A1");
419 Assert.AreEqual ("Hello World", rm.GetObject ("HelloWorld", new CultureInfo ("de")), "#A2");
420 Assert.AreEqual ("Hello World", rm.GetObject ("HelloWorld", (CultureInfo) null), "#A3");
421 Assert.IsNull (rm.GetObject ("deHelloWorld"), "#A4");
422 Assert.AreEqual ("Hallo Welt", rm.GetObject ("deHelloWorld", new CultureInfo ("de")), "#A5");
423 Assert.IsNull (rm.GetObject ("deHelloWorld", (CultureInfo) null), "#A6");
425 Thread.CurrentThread.CurrentUICulture = new CultureInfo ("de");
426 Assert.AreEqual ("Hello World", rm.GetObject ("HelloWorld"), "#B1");
427 Assert.AreEqual ("Hello World", rm.GetObject ("HelloWorld", (CultureInfo) null), "#B2");
428 Assert.AreEqual ("Hallo Welt", rm.GetObject ("deHelloWorld"), "#B3");
429 Assert.IsNull (rm.GetObject ("deHelloWorld", new CultureInfo ("nl-BE")), "#B4");
430 Assert.AreEqual ("Hallo Welt", rm.GetObject ("deHelloWorld", (CultureInfo) null), "#B5");
432 Thread.CurrentThread.CurrentUICulture = new CultureInfo ("nl-BE");
433 Assert.AreEqual ("Hello World", rm.GetObject ("HelloWorld"), "#C1");
434 Assert.AreEqual ("Hello World", rm.GetObject ("HelloWorld", new CultureInfo ("de")), "#C2");
435 Assert.AreEqual ("Hello World", rm.GetObject ("HelloWorld", (CultureInfo) null), "#C3");
436 Assert.IsNull (rm.GetObject ("deHelloWorld"), "#C4");
437 Assert.AreEqual ("Hallo Welt", rm.GetObject ("deHelloWorld", new CultureInfo ("de")), "#C5");
438 Assert.IsNull (rm.GetObject ("deHelloWorld", (CultureInfo) null), "#C6");
440 rm.ReleaseAllResources ();
444 public void GetObject_Name_Null ()
446 ResourceManager rm = new ResourceManager (typeof (string));
448 rm.GetObject ((string) null);
450 } catch (ArgumentNullException ex) {
451 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#A2");
452 Assert.IsNull (ex.InnerException, "#A3");
453 Assert.IsNotNull (ex.Message, "#A4");
454 Assert.IsNotNull (ex.ParamName, "#A5");
455 Assert.AreEqual ("name", ex.ParamName, "#A6");
459 rm.GetObject ((string) null, CultureInfo.InvariantCulture);
461 } catch (ArgumentNullException ex) {
462 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#B2");
463 Assert.IsNull (ex.InnerException, "#B3");
464 Assert.IsNotNull (ex.Message, "#B4");
465 Assert.IsNotNull (ex.ParamName, "#B5");
466 Assert.AreEqual ("name", ex.ParamName, "#B6");
468 rm.ReleaseAllResources ();
472 [Category ("MobileNotWorking")]
473 public void GetObject_ResourceSet_Disposed ()
475 Thread.CurrentThread.CurrentUICulture = new CultureInfo ("de");
476 ResourceManager rm = ResourceManager.
477 CreateFileBasedResourceManager ("MyResources", "Test/resources", null);
478 ResourceSet rs = rm.GetResourceSet (new CultureInfo ("de"),
483 rm.GetObject ("deHelloWorld");
485 } catch (ObjectDisposedException ex) {
486 // Cannot access a closed resource set
487 Assert.AreEqual (typeof (ObjectDisposedException), ex.GetType (), "#2");
488 Assert.IsNull (ex.InnerException, "#3");
489 Assert.IsNotNull (ex.Message, "#4");
491 rm.ReleaseAllResources ();
496 public void GetResourceFileName ()
498 MockResourceManager rm = new MockResourceManager ();
499 Assert.AreEqual (".nl-BE.resources",
500 rm.GetResourceFileName (new CultureInfo ("nl-BE")), "#A1");
501 Assert.AreEqual (".fr.resources",
502 rm.GetResourceFileName (new CultureInfo ("fr")), "#A2");
503 Assert.AreEqual (".resources",
504 rm.GetResourceFileName (CultureInfo.InvariantCulture), "#A3");
506 rm = new MockResourceManager (typeof (string));
507 Assert.AreEqual ("String.nl-BE.resources",
508 rm.GetResourceFileName (new CultureInfo ("nl-BE")), "#B1");
509 Assert.AreEqual ("String.fr.resources",
510 rm.GetResourceFileName (new CultureInfo ("fr")), "#B2");
511 Assert.AreEqual ("String.resources",
512 rm.GetResourceFileName (CultureInfo.InvariantCulture), "#B3");
516 public void GetResourceFileName_Culture_Null ()
518 MockResourceManager rm = new MockResourceManager ();
520 rm.GetResourceFileName ((CultureInfo) null);
522 } catch (NullReferenceException) {
527 public void GetResourceSet_Culture_Null ()
529 ResourceManager rm = new ResourceManager (typeof (string));
531 rm.GetResourceSet ((CultureInfo) null, false, false);
533 } catch (ArgumentNullException ex) {
534 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
535 Assert.IsNull (ex.InnerException, "#3");
536 Assert.IsNotNull (ex.Message, "#4");
537 Assert.IsNotNull (ex.ParamName, "#5");
538 Assert.AreEqual ("culture", ex.ParamName, "#6");
540 rm.ReleaseAllResources ();
544 [Category ("MobileNotWorking")]
545 public void GetString ()
547 ResourceManager rm = ResourceManager.
548 CreateFileBasedResourceManager ("MyResources", "Test/resources", null);
550 Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;
551 Assert.AreEqual ("Hello World", rm.GetString ("HelloWorld"), "#A1");
552 Assert.AreEqual ("Hello World", rm.GetString ("HelloWorld", new CultureInfo ("de")), "#A2");
553 Assert.AreEqual ("Hello World", rm.GetString ("HelloWorld", (CultureInfo) null), "#A3");
554 Assert.IsNull (rm.GetString ("deHelloWorld"), "#A4");
555 Assert.AreEqual ("Hallo Welt", rm.GetString ("deHelloWorld", new CultureInfo ("de")), "#A5");
556 Assert.IsNull (rm.GetString ("deHelloWorld", (CultureInfo) null), "#A6");
558 Thread.CurrentThread.CurrentUICulture = new CultureInfo ("de");
559 Assert.AreEqual ("Hello World", rm.GetString ("HelloWorld"), "#B1");
560 Assert.AreEqual ("Hello World", rm.GetString ("HelloWorld", (CultureInfo) null), "#B2");
561 Assert.AreEqual ("Hallo Welt", rm.GetString ("deHelloWorld"), "#B3");
562 Assert.IsNull (rm.GetString ("deHelloWorld", new CultureInfo ("nl-BE")), "#B4");
563 Assert.AreEqual ("Hallo Welt", rm.GetString ("deHelloWorld", (CultureInfo) null), "#B5");
565 Thread.CurrentThread.CurrentUICulture = new CultureInfo ("nl-BE");
566 Assert.AreEqual ("Hello World", rm.GetString ("HelloWorld"), "#C1");
567 Assert.AreEqual ("Hello World", rm.GetString ("HelloWorld", new CultureInfo ("de")), "#C2");
568 Assert.AreEqual ("Hello World", rm.GetString ("HelloWorld", (CultureInfo) null), "#C3");
569 Assert.IsNull (rm.GetString ("deHelloWorld"), "#C4");
570 Assert.AreEqual ("Hallo Welt", rm.GetString ("deHelloWorld", new CultureInfo ("de")), "#C5");
571 Assert.IsNull (rm.GetString ("deHelloWorld", (CultureInfo) null), "#C6");
573 rm.ReleaseAllResources ();
577 public void GetString_Name_Null ()
579 ResourceManager rm = new ResourceManager (typeof (string));
581 rm.GetString ((string) null);
583 } catch (ArgumentNullException ex) {
584 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#A2");
585 Assert.IsNull (ex.InnerException, "#A3");
586 Assert.IsNotNull (ex.Message, "#A4");
587 Assert.IsNotNull (ex.ParamName, "#A5");
588 Assert.AreEqual ("name", ex.ParamName, "#A6");
592 rm.GetString ((string) null, CultureInfo.InvariantCulture);
594 } catch (ArgumentNullException ex) {
595 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#B2");
596 Assert.IsNull (ex.InnerException, "#B3");
597 Assert.IsNotNull (ex.Message, "#B4");
598 Assert.IsNotNull (ex.ParamName, "#B5");
599 Assert.AreEqual ("name", ex.ParamName, "#B6");
601 rm.ReleaseAllResources ();
605 [Category ("MobileNotWorking")]
607 public void GetString_ResourceSet_Disposed ()
609 ResourceManager rm = ResourceManager.
610 CreateFileBasedResourceManager ("MyResources", "Test/resources", null);
611 ResourceSet rs = rm.GetResourceSet (new CultureInfo ("de"),
615 Assert.IsNull (rm.GetString ("deHelloWorld"));
616 rm.ReleaseAllResources ();
620 [Category ("MobileNotWorking")]
621 public void GetStream ()
623 Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;
624 ResourceManager rm = ResourceManager.
625 CreateFileBasedResourceManager ("StreamTest", "Test/resources", null);
626 UnmanagedMemoryStream s = rm.GetStream ("test");
627 Assert.AreEqual (22, s.Length, "#A1");
628 Assert.AreEqual ("veritas vos liberabit\n", new StreamReader (s).ReadToEnd (), "#A2");
631 Thread.CurrentThread.CurrentUICulture = new CultureInfo ("ja-JP");
632 s = rm.GetStream ("test");
633 Assert.AreEqual (22, s.Length, "#B1");
634 Assert.AreEqual ("Veritas Vos Liberabit\n", new StreamReader (s).ReadToEnd (), "#B2");
637 Thread.CurrentThread.CurrentUICulture = new CultureInfo ("nl-BE");
638 s = rm.GetStream ("test");
639 Assert.AreEqual (22, s.Length, "#C1");
640 Assert.AreEqual ("veritas vos liberabit\n", new StreamReader (s).ReadToEnd (), "#C2");
641 rm.ReleaseAllResources ();
645 [Category ("MobileNotWorking")]
646 public void GetStream_Culture ()
648 Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;
649 ResourceManager rm = ResourceManager.
650 CreateFileBasedResourceManager ("StreamTest", "Test/resources", null);
651 UnmanagedMemoryStream s = rm.GetStream ("test", new CultureInfo ("ja-JP"));
652 Assert.AreEqual (22, s.Length, "#1");
653 Assert.AreEqual ("Veritas Vos Liberabit\n", new StreamReader (s).ReadToEnd (), "#2");
656 Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;
657 s = rm.GetStream ("test", null);
658 Assert.AreEqual (22, s.Length, "#1");
659 Assert.AreEqual ("veritas vos liberabit\n", new StreamReader (s).ReadToEnd (), "#2");
662 Thread.CurrentThread.CurrentUICulture = new CultureInfo ("ja-JP");
663 s = rm.GetStream ("test", null);
664 Assert.AreEqual (22, s.Length, "#1");
665 Assert.AreEqual ("Veritas Vos Liberabit\n", new StreamReader (s).ReadToEnd (), "#2");
667 rm.ReleaseAllResources ();
671 public void GetStream_Name_Null ()
673 ResourceManager rm = new ResourceManager (typeof (string));
675 rm.GetStream ((string) null);
677 } catch (ArgumentNullException ex) {
678 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#A2");
679 Assert.IsNull (ex.InnerException, "#A3");
680 Assert.IsNotNull (ex.Message, "#A4");
681 Assert.IsNotNull (ex.ParamName, "#A5");
682 Assert.AreEqual ("name", ex.ParamName, "#A6");
686 rm.GetStream ((string) null, CultureInfo.InvariantCulture);
688 } catch (ArgumentNullException ex) {
689 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#A2");
690 Assert.IsNull (ex.InnerException, "#A3");
691 Assert.IsNotNull (ex.Message, "#A4");
692 Assert.IsNotNull (ex.ParamName, "#A5");
693 Assert.AreEqual ("name", ex.ParamName, "#A6");
695 rm.ReleaseAllResources ();
699 [Category ("MobileNotWorking")]
700 public void GetStream_Resource_DoesNotExist ()
702 ResourceManager rm = ResourceManager.
703 CreateFileBasedResourceManager ("StreamTest", "Test/resources", null);
704 Assert.IsNull (rm.GetStream ("HelloWorld"));
705 rm.ReleaseAllResources ();
709 [Category ("MobileNotWorking")]
710 public void GetStream_Resource_NonStream ()
712 ResourceManager rm = ResourceManager.
713 CreateFileBasedResourceManager ("MyResources", "Test/resources", null);
716 rm.GetStream ("HelloWorld", CultureInfo.InvariantCulture);
718 } catch (InvalidOperationException ex) {
719 // Resource 'HelloWorld' was not a Stream - call
721 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
722 Assert.IsNull (ex.InnerException, "#3");
723 Assert.IsNotNull (ex.Message, "#4");
725 rm.ReleaseAllResources ();
730 public void GetStream_ResourceFile_DoesNotExist ()
732 ResourceManager rm = ResourceManager.
733 CreateFileBasedResourceManager ("DoesNotExist", "Test/resources", null);
735 rm.GetStream ("HelloWorld");
737 } catch (MissingManifestResourceException ex) {
738 // Could not find any resources appropriate for
739 // the specified culture (or the neutral culture)
741 Assert.AreEqual (typeof (MissingManifestResourceException), ex.GetType (), "#2");
742 Assert.IsNull (ex.InnerException, "#3");
743 Assert.IsNotNull (ex.Message, "#4");
748 [Category ("MobileNotWorking")]
749 public void GetStream_ResourceSet_Disposed ()
751 Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;
752 ResourceManager rm = ResourceManager.
753 CreateFileBasedResourceManager ("StreamTest", "Test/resources", null);
754 ResourceSet rs = rm.GetResourceSet (new CultureInfo ("ja-JP"),
759 rm.GetStream ("test", new CultureInfo ("ja-JP"));
761 } catch (ObjectDisposedException ex) {
762 // Cannot access a closed resource set
763 Assert.AreEqual (typeof (ObjectDisposedException), ex.GetType (), "#2");
764 Assert.IsNull (ex.InnerException, "#3");
765 Assert.IsNotNull (ex.Message, "#4");
767 rm.ReleaseAllResources ();
772 [Category ("MobileNotWorking")]
773 public void IgnoreCase ()
775 ResourceManager rm = ResourceManager.
776 CreateFileBasedResourceManager ("MyResources", "Test/resources", null);
778 Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;
779 Assert.IsFalse (rm.IgnoreCase, "#A1");
780 Assert.IsNull (rm.GetString ("helloWORLD"), "#A2");
781 rm.IgnoreCase = true;
782 Assert.IsTrue (rm.IgnoreCase, "#B1");
783 Assert.AreEqual ("Hello World", rm.GetString ("HelloWorld"), "#B2");
784 rm.ReleaseAllResources ();
788 [Category ("SatelliteAssembliesNotWorking")]
789 public void TestSatellites ()
791 ResourceManager manager = new ResourceManager("Resources", GetType ().Assembly);
793 Assert.AreEqual ("Hei", manager.GetString ("Hello", new CultureInfo ("nn-NO")), "nn-NO");
794 Assert.AreEqual ("Hola", manager.GetString ("Hello", new CultureInfo ("es-ES")), "es-ES");
795 Assert.AreEqual ("Hello", manager.GetString ("Hello", new CultureInfo ("en-US")), "en-US");
798 class MockResourceManager : ResourceManager
800 public MockResourceManager ()
804 public MockResourceManager (Type resourceSource) : base (resourceSource)
808 public MockResourceManager (string baseName, Assembly assembly)
809 : base (baseName, assembly)
813 public MockResourceManager (string baseName, Assembly assembly, Type usingResourceSet)
814 : base (baseName, assembly, usingResourceSet)
818 public new string BaseNameField {
819 get { return base.BaseNameField; }
822 public new Assembly MainAssembly {
823 get { return base.MainAssembly; }
826 public new Hashtable ResourceSets {
827 get { return base.ResourceSets; }
830 public new ResourceSet InternalGetResourceSet (CultureInfo culture, bool Createifnotexists, bool tryParents)
832 return base.InternalGetResourceSet (culture,
833 Createifnotexists, tryParents);
836 public new string GetResourceFileName (CultureInfo culture)
838 return base.GetResourceFileName (culture);
842 class MockResourceSet : ResourceSet