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
46 class ResourceManagerPoker : ResourceManager
48 public ResourceManagerPoker ()
50 BaseNameField = String.Format ("Test{0}resources{0}MyResources", Path.DirectorySeparatorChar);
53 public Hashtable GetResourceSets ()
55 return base.ResourceSets;
58 public void InitResourceSets ()
60 base.ResourceSets = new Hashtable ();
65 public class ResourceManagerTest
67 private CultureInfo _orgUICulture;
72 _orgUICulture = Thread.CurrentThread.CurrentUICulture;
76 public void TearDown ()
78 Thread.CurrentThread.CurrentUICulture = _orgUICulture;
81 [Test] // ResourceManager ()
82 public void Constructor0 ()
84 MockResourceManager rm = new MockResourceManager ();
85 Assert.IsNull (rm.BaseName, "#1");
86 Assert.IsNull (rm.BaseNameField, "#2");
87 Assert.IsFalse (rm.IgnoreCase, "#3");
88 Assert.IsNull (rm.MainAssembly, "#4");
89 Assert.IsNull (rm.ResourceSets, "#5");
90 Assert.IsNotNull (rm.ResourceSetType, "#6");
91 Assert.IsTrue (typeof (ResourceSet).IsAssignableFrom (rm.ResourceSetType), "#7");
92 Assert.IsFalse (typeof (ResourceSet) == rm.ResourceSetType, "#8");
95 [Test] // ResourceManager (Type)
96 public void Constructor1 ()
98 MockResourceManager rm = new MockResourceManager (typeof (string));
99 Assert.IsNotNull (rm.BaseName, "#1");
100 Assert.AreEqual ("String", rm.BaseName, "#2");
101 Assert.IsNotNull (rm.BaseNameField, "#3");
102 Assert.AreEqual ("String", rm.BaseNameField, "#4");
103 Assert.IsFalse (rm.IgnoreCase, "#5");
104 Assert.IsNotNull (rm.MainAssembly, "#6");
105 Assert.AreEqual (typeof (String).Assembly, rm.MainAssembly, "#7");
106 Assert.IsNotNull (rm.ResourceSets, "#8");
107 Assert.AreEqual (0, rm.ResourceSets.Count, "#9");
108 Assert.IsNotNull (rm.ResourceSetType, "#10");
109 Assert.IsTrue (typeof (ResourceSet).IsAssignableFrom (rm.ResourceSetType), "#11");
110 Assert.IsFalse (typeof (ResourceSet) == rm.ResourceSetType, "#12");
111 Assert.AreEqual ("RuntimeResourceSet", rm.ResourceSetType.Name, "#13");
114 [Test] // ResourceManager (Type)
115 public void Constructor1_ResourceSource_Null ()
118 new ResourceManager ((Type) null);
120 } catch (ArgumentNullException ex) {
121 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
122 Assert.IsNull (ex.InnerException, "#3");
123 Assert.IsNotNull (ex.Message, "#4");
124 Assert.IsNotNull (ex.ParamName, "#5");
125 Assert.AreEqual ("resourceSource", ex.ParamName, "#6");
129 [Test] // ResourceManager (String, Assembly)
130 public void Constructor2 ()
132 MockResourceManager rm = null;
133 Assembly assembly = null;
135 assembly = Assembly.GetExecutingAssembly ();
136 rm = new MockResourceManager ("mono", assembly);
137 Assert.IsNotNull (rm.BaseName, "#A1");
138 Assert.AreEqual ("mono", rm.BaseName, "#A2");
139 Assert.IsNotNull (rm.BaseNameField, "#A3");
140 Assert.AreEqual ("mono", rm.BaseNameField, "#A4");
141 Assert.IsFalse (rm.IgnoreCase, "#A5");
142 Assert.IsNotNull (rm.MainAssembly, "#A6");
143 Assert.AreEqual (assembly, rm.MainAssembly, "#A7");
144 Assert.IsNotNull (rm.ResourceSets, "#A8");
145 Assert.AreEqual (0, rm.ResourceSets.Count, "#A9");
146 Assert.IsNotNull (rm.ResourceSetType, "#A10");
147 Assert.IsTrue (typeof (ResourceSet).IsAssignableFrom (rm.ResourceSetType), "#A11");
148 Assert.IsFalse (typeof (ResourceSet) == rm.ResourceSetType, "#A12");
149 Assert.AreEqual ("RuntimeResourceSet", rm.ResourceSetType.Name, "#A13");
151 assembly = typeof (int).Assembly;
152 rm = new MockResourceManager (string.Empty, assembly);
153 Assert.IsNotNull (rm.BaseName, "#B1");
154 Assert.AreEqual (string.Empty, rm.BaseName, "#B2");
155 Assert.IsNotNull (rm.BaseNameField, "#B3");
156 Assert.AreEqual (string.Empty, rm.BaseNameField, "#B4");
157 Assert.IsFalse (rm.IgnoreCase, "#B5");
158 Assert.IsNotNull (rm.MainAssembly, "#B6");
159 Assert.AreEqual (assembly, rm.MainAssembly, "#B7");
160 Assert.IsNotNull (rm.ResourceSets, "#B8");
161 Assert.AreEqual (0, rm.ResourceSets.Count, "#B9");
162 Assert.IsNotNull (rm.ResourceSetType, "#B10");
163 Assert.IsTrue (typeof (ResourceSet).IsAssignableFrom (rm.ResourceSetType), "#B11");
164 Assert.IsFalse (typeof (ResourceSet) == rm.ResourceSetType, "#B12");
165 Assert.AreEqual ("RuntimeResourceSet", rm.ResourceSetType.Name, "#B13");
168 [Test] // ResourceManager (String, Assembly)
169 public void Constructor2_BaseName_Null ()
172 new ResourceManager ((string) null, Assembly.
173 GetExecutingAssembly ());
175 } catch (ArgumentNullException ex) {
176 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
177 Assert.IsNull (ex.InnerException, "#3");
178 Assert.IsNotNull (ex.Message, "#4");
179 Assert.IsNotNull (ex.ParamName, "#5");
180 Assert.AreEqual ("baseName", ex.ParamName, "#6");
184 [Test] // ResourceManager (String, Assembly)
185 public void Constructor2_BaseName_Resources ()
187 MockResourceManager rm = new MockResourceManager (
189 Assembly.GetExecutingAssembly ());
190 Assert.IsNotNull (rm.BaseName, "#1");
191 Assert.AreEqual ("mono.resources", rm.BaseName, "#2");
192 Assert.IsNotNull (rm.BaseNameField, "#3");
193 Assert.AreEqual ("mono.resources", rm.BaseNameField, "#4");
194 Assert.IsFalse (rm.IgnoreCase, "#5");
195 Assert.IsNotNull (rm.MainAssembly, "#6");
196 Assert.AreEqual (Assembly.GetExecutingAssembly (), rm.MainAssembly, "#7");
197 Assert.IsNotNull (rm.ResourceSets, "#8");
198 Assert.AreEqual (0, rm.ResourceSets.Count, "#9");
199 Assert.IsNotNull (rm.ResourceSetType, "#10");
200 Assert.IsTrue (typeof (ResourceSet).IsAssignableFrom (rm.ResourceSetType), "#11");
201 Assert.IsFalse (typeof (ResourceSet) == rm.ResourceSetType, "#12");
202 Assert.AreEqual ("RuntimeResourceSet", rm.ResourceSetType.Name, "#13");
205 [Test] // ResourceManager (String, Assembly)
206 public void Constructor2_Assembly_Null ()
209 new ResourceManager (string.Empty, (Assembly) null);
211 } catch (ArgumentNullException ex) {
212 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
213 Assert.IsNull (ex.InnerException, "#3");
214 Assert.IsNotNull (ex.Message, "#4");
215 Assert.IsNotNull (ex.ParamName, "#5");
216 Assert.AreEqual ("assembly", ex.ParamName, "#6");
220 [Test] // ResourceManager (String, Assembly, Type)
221 public void Constructor3 ()
223 MockResourceManager rm = null;
224 Assembly assembly = null;
226 assembly = Assembly.GetExecutingAssembly ();
227 rm = new MockResourceManager ("mono", assembly,
228 typeof (ResourceSet));
229 Assert.IsNotNull (rm.BaseName, "#A1");
230 Assert.AreEqual ("mono", rm.BaseName, "#A2");
231 Assert.IsNotNull (rm.BaseNameField, "#A3");
232 Assert.AreEqual ("mono", rm.BaseNameField, "#A4");
233 Assert.IsFalse (rm.IgnoreCase, "#A5");
234 Assert.IsNotNull (rm.MainAssembly, "#A6");
235 Assert.AreEqual (assembly, rm.MainAssembly, "#A7");
236 Assert.IsNotNull (rm.ResourceSets, "#A8");
237 Assert.AreEqual (0, rm.ResourceSets.Count, "#A9");
238 Assert.IsNotNull (rm.ResourceSetType, "#A10");
239 Assert.AreEqual (typeof (ResourceSet), rm.ResourceSetType, "#A11");
241 assembly = typeof (int).Assembly;
242 rm = new MockResourceManager ("mono", assembly,
243 typeof (MockResourceSet));
244 Assert.IsNotNull (rm.BaseName, "#B1");
245 Assert.AreEqual ("mono", rm.BaseName, "#B2");
246 Assert.IsNotNull (rm.BaseNameField, "#B3");
247 Assert.AreEqual ("mono", rm.BaseNameField, "#B4");
248 Assert.IsFalse (rm.IgnoreCase, "#B5");
249 Assert.IsNotNull (rm.MainAssembly, "#B6");
250 Assert.AreEqual (assembly, rm.MainAssembly, "#B7");
251 Assert.IsNotNull (rm.ResourceSets, "#B8");
252 Assert.AreEqual (0, rm.ResourceSets.Count, "#B9");
253 Assert.IsNotNull (rm.ResourceSetType, "#B10");
254 Assert.AreEqual (typeof (MockResourceSet), rm.ResourceSetType, "#B11");
257 [Test] // ResourceManager (String, Assembly, Type)
258 public void Constructor3_BaseName_Null ()
261 new ResourceManager ((string) null, Assembly.
262 GetExecutingAssembly (),
263 typeof (ResourceSet));
265 } catch (ArgumentNullException ex) {
266 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
267 Assert.IsNull (ex.InnerException, "#3");
268 Assert.IsNotNull (ex.Message, "#4");
269 Assert.IsNotNull (ex.ParamName, "#5");
270 Assert.AreEqual ("baseName", ex.ParamName, "#6");
274 [Test] // ResourceManager (String, Assembly, Type)
275 public void Constructor3_BaseName_Resources ()
277 MockResourceManager rm = new MockResourceManager (
279 Assembly.GetExecutingAssembly (),
280 typeof (ResourceSet));
281 Assert.IsNotNull (rm.BaseName, "#1");
282 Assert.AreEqual ("mono.resources", rm.BaseName, "#2");
283 Assert.IsNotNull (rm.BaseNameField, "#3");
284 Assert.AreEqual ("mono.resources", rm.BaseNameField, "#4");
285 Assert.IsFalse (rm.IgnoreCase, "#5");
286 Assert.IsNotNull (rm.MainAssembly, "#6");
287 Assert.AreEqual (Assembly.GetExecutingAssembly (), rm.MainAssembly, "#7");
288 Assert.IsNotNull (rm.ResourceSets, "#8");
289 Assert.AreEqual (0, rm.ResourceSets.Count, "#9");
290 Assert.IsNotNull (rm.ResourceSetType, "#10");
291 Assert.AreEqual (typeof (ResourceSet), rm.ResourceSetType, "#11");
294 [Test] // ResourceManager (String, Assembly, Type)
295 public void Constructor3_Assembly_Null ()
298 new ResourceManager (string.Empty, (Assembly) null,
299 typeof (ResourceSet));
301 } catch (ArgumentNullException ex) {
302 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
303 Assert.IsNull (ex.InnerException, "#3");
304 Assert.IsNotNull (ex.Message, "#4");
305 Assert.IsNotNull (ex.ParamName, "#5");
306 Assert.AreEqual ("assembly", ex.ParamName, "#6");
310 [Test] // ResourceManager (String, Assembly, Type)
311 public void Constructor3_UsingResourceSet_Invalid ()
314 new ResourceManager ("mono", typeof (int).Assembly,
317 } catch (ArgumentException ex) {
318 // Type parameter must refer to a subclass of
320 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
321 Assert.IsNull (ex.InnerException, "#3");
322 Assert.IsNotNull (ex.Message, "#4");
323 Assert.IsTrue (ex.Message.IndexOf ("ResourceSet") != -1, "#5");
324 Assert.IsNotNull (ex.ParamName, "#6");
325 Assert.AreEqual ("usingResourceSet", ex.ParamName, "#7");
329 [Test] // ResourceManager (String, Assembly, Type)
330 public void Constructor3_UsingResourceSet_Null ()
332 MockResourceManager rm = new MockResourceManager (
333 string.Empty, Assembly.GetExecutingAssembly (),
335 Assert.IsNotNull (rm.BaseName, "#1");
336 Assert.AreEqual (string.Empty, rm.BaseName, "#2");
337 Assert.IsNotNull (rm.BaseNameField, "#3");
338 Assert.AreEqual (string.Empty, rm.BaseNameField, "#4");
339 Assert.IsFalse (rm.IgnoreCase, "#5");
340 Assert.IsNotNull (rm.MainAssembly, "#6");
341 Assert.AreEqual (Assembly.GetExecutingAssembly (), rm.MainAssembly, "#7");
342 Assert.IsNotNull (rm.ResourceSets, "#8");
343 Assert.AreEqual (0, rm.ResourceSets.Count, "#9");
344 Assert.IsNotNull (rm.ResourceSetType, "#10");
345 Assert.IsTrue (typeof (ResourceSet).IsAssignableFrom (rm.ResourceSetType), "#11");
346 Assert.IsFalse (typeof (ResourceSet) == rm.ResourceSetType, "#12");
347 Assert.AreEqual ("RuntimeResourceSet", rm.ResourceSetType.Name, "#13");
351 public void CreateFileBasedResourceManager_BaseName_Null ()
354 ResourceManager.CreateFileBasedResourceManager (
355 (string) null, AppDomain.CurrentDomain.BaseDirectory,
356 typeof (ResourceSet));
358 } catch (ArgumentNullException ex) {
359 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
360 Assert.IsNull (ex.InnerException, "#3");
361 Assert.IsNotNull (ex.Message, "#4");
362 Assert.IsNotNull (ex.ParamName, "#5");
363 Assert.AreEqual ("baseName", ex.ParamName, "#6");
368 [Category ("NotWorking")]
369 public void CreateFileBasedResourceManager_BaseName_Resources ()
371 ResourceManager rm = ResourceManager.CreateFileBasedResourceManager (
372 "MyResources.resources", "Test/resources", null);
374 rm.GetResourceSet (CultureInfo.InvariantCulture, true, true);
376 } catch (MissingManifestResourceException ex) {
377 // Could not find any resources appropriate for
378 // the specified culture (or the neutral culture)
380 Assert.AreEqual (typeof (MissingManifestResourceException), ex.GetType (), "#2");
381 Assert.IsNull (ex.InnerException, "#3");
382 Assert.IsNotNull (ex.Message, "#4");
387 public void CreateFileBasedResourceManager_ResourceDir_Null ()
390 ResourceManager.CreateFileBasedResourceManager (
391 "whatever", (string) null,
392 typeof (ResourceSet));
394 } catch (ArgumentNullException ex) {
395 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
396 Assert.IsNull (ex.InnerException, "#3");
397 Assert.IsNotNull (ex.Message, "#4");
398 Assert.IsNotNull (ex.ParamName, "#5");
399 Assert.AreEqual ("resourceDir", ex.ParamName, "#6");
404 public void CreateFileBasedResourceManager_UsingResourceSet_Invalid ()
406 ResourceManager rm = ResourceManager.CreateFileBasedResourceManager (
407 "MyResources", "Test/resources", typeof (string));
408 Assert.IsNotNull (rm.BaseName, "#1");
409 Assert.AreEqual ("MyResources", rm.BaseName, "#2");
410 Assert.IsFalse (rm.IgnoreCase, "#3");
411 Assert.IsNotNull (rm.ResourceSetType, "#4");
412 Assert.AreEqual (typeof (string), rm.ResourceSetType, "#5");
416 public void CreateFileBasedResourceManager_UsingResourceSet_Null ()
418 ResourceManager rm = ResourceManager.CreateFileBasedResourceManager (
419 "MyResources", "Test/resources", (Type) null);
420 Assert.IsNotNull (rm.BaseName, "#1");
421 Assert.AreEqual ("MyResources", rm.BaseName, "#2");
422 Assert.IsFalse (rm.IgnoreCase, "#3");
423 Assert.IsNotNull (rm.ResourceSetType, "#4");
424 Assert.IsTrue (typeof (ResourceSet).IsAssignableFrom (rm.ResourceSetType), "#5");
425 Assert.IsFalse (typeof (ResourceSet) == rm.ResourceSetType, "#6");
426 Assert.AreEqual ("RuntimeResourceSet", rm.ResourceSetType.Name, "#7");
430 [Category ("MobileNotWorking")]
431 public void GetObject ()
433 ResourceManager rm = ResourceManager.
434 CreateFileBasedResourceManager ("MyResources", "Test/resources", null);
436 Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;
437 Assert.AreEqual ("Hello World", rm.GetObject ("HelloWorld"), "#A1");
438 Assert.AreEqual ("Hello World", rm.GetObject ("HelloWorld", new CultureInfo ("de")), "#A2");
439 Assert.AreEqual ("Hello World", rm.GetObject ("HelloWorld", (CultureInfo) null), "#A3");
440 Assert.IsNull (rm.GetObject ("deHelloWorld"), "#A4");
441 Assert.AreEqual ("Hallo Welt", rm.GetObject ("deHelloWorld", new CultureInfo ("de")), "#A5");
442 Assert.IsNull (rm.GetObject ("deHelloWorld", (CultureInfo) null), "#A6");
444 Thread.CurrentThread.CurrentUICulture = new CultureInfo ("de");
445 Assert.AreEqual ("Hello World", rm.GetObject ("HelloWorld"), "#B1");
446 Assert.AreEqual ("Hello World", rm.GetObject ("HelloWorld", (CultureInfo) null), "#B2");
447 Assert.AreEqual ("Hallo Welt", rm.GetObject ("deHelloWorld"), "#B3");
448 Assert.IsNull (rm.GetObject ("deHelloWorld", new CultureInfo ("nl-BE")), "#B4");
449 Assert.AreEqual ("Hallo Welt", rm.GetObject ("deHelloWorld", (CultureInfo) null), "#B5");
451 Thread.CurrentThread.CurrentUICulture = new CultureInfo ("nl-BE");
452 Assert.AreEqual ("Hello World", rm.GetObject ("HelloWorld"), "#C1");
453 Assert.AreEqual ("Hello World", rm.GetObject ("HelloWorld", new CultureInfo ("de")), "#C2");
454 Assert.AreEqual ("Hello World", rm.GetObject ("HelloWorld", (CultureInfo) null), "#C3");
455 Assert.IsNull (rm.GetObject ("deHelloWorld"), "#C4");
456 Assert.AreEqual ("Hallo Welt", rm.GetObject ("deHelloWorld", new CultureInfo ("de")), "#C5");
457 Assert.IsNull (rm.GetObject ("deHelloWorld", (CultureInfo) null), "#C6");
459 rm.ReleaseAllResources ();
463 public void GetObject_Name_Null ()
465 ResourceManager rm = new ResourceManager (typeof (string));
467 rm.GetObject ((string) null);
469 } catch (ArgumentNullException ex) {
470 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#A2");
471 Assert.IsNull (ex.InnerException, "#A3");
472 Assert.IsNotNull (ex.Message, "#A4");
473 Assert.IsNotNull (ex.ParamName, "#A5");
474 Assert.AreEqual ("name", ex.ParamName, "#A6");
478 rm.GetObject ((string) null, CultureInfo.InvariantCulture);
480 } catch (ArgumentNullException ex) {
481 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#B2");
482 Assert.IsNull (ex.InnerException, "#B3");
483 Assert.IsNotNull (ex.Message, "#B4");
484 Assert.IsNotNull (ex.ParamName, "#B5");
485 Assert.AreEqual ("name", ex.ParamName, "#B6");
487 rm.ReleaseAllResources ();
491 [Category ("MobileNotWorking")]
492 public void GetObject_ResourceSet_Disposed ()
494 Thread.CurrentThread.CurrentUICulture = new CultureInfo ("de");
495 ResourceManager rm = ResourceManager.
496 CreateFileBasedResourceManager ("MyResources", "Test/resources", null);
497 ResourceSet rs = rm.GetResourceSet (new CultureInfo ("de"),
502 rm.GetObject ("deHelloWorld");
504 } catch (ObjectDisposedException ex) {
505 // Cannot access a closed resource set
506 Assert.AreEqual (typeof (ObjectDisposedException), ex.GetType (), "#2");
507 Assert.IsNull (ex.InnerException, "#3");
508 Assert.IsNotNull (ex.Message, "#4");
510 rm.ReleaseAllResources ();
515 public void GetResourceFileName ()
517 MockResourceManager rm = new MockResourceManager ();
518 Assert.AreEqual (".nl-BE.resources",
519 rm.GetResourceFileName (new CultureInfo ("nl-BE")), "#A1");
520 Assert.AreEqual (".fr.resources",
521 rm.GetResourceFileName (new CultureInfo ("fr")), "#A2");
522 Assert.AreEqual (".resources",
523 rm.GetResourceFileName (CultureInfo.InvariantCulture), "#A3");
525 rm = new MockResourceManager (typeof (string));
526 Assert.AreEqual ("String.nl-BE.resources",
527 rm.GetResourceFileName (new CultureInfo ("nl-BE")), "#B1");
528 Assert.AreEqual ("String.fr.resources",
529 rm.GetResourceFileName (new CultureInfo ("fr")), "#B2");
530 Assert.AreEqual ("String.resources",
531 rm.GetResourceFileName (CultureInfo.InvariantCulture), "#B3");
535 public void GetResourceFileName_Culture_Null ()
537 MockResourceManager rm = new MockResourceManager ();
539 rm.GetResourceFileName ((CultureInfo) null);
541 } catch (NullReferenceException) {
546 public void GetResourceSet_Culture_Null ()
548 ResourceManager rm = new ResourceManager (typeof (string));
550 rm.GetResourceSet ((CultureInfo) null, false, false);
552 } catch (ArgumentNullException ex) {
553 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
554 Assert.IsNull (ex.InnerException, "#3");
555 Assert.IsNotNull (ex.Message, "#4");
556 Assert.IsNotNull (ex.ParamName, "#5");
557 Assert.AreEqual ("culture", ex.ParamName, "#6");
559 rm.ReleaseAllResources ();
563 [Category ("MobileNotWorking")]
564 public void GetString ()
566 ResourceManager rm = ResourceManager.
567 CreateFileBasedResourceManager ("MyResources", "Test/resources", null);
569 Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;
570 Assert.AreEqual ("Hello World", rm.GetString ("HelloWorld"), "#A1");
571 Assert.AreEqual ("Hello World", rm.GetString ("HelloWorld", new CultureInfo ("de")), "#A2");
572 Assert.AreEqual ("Hello World", rm.GetString ("HelloWorld", (CultureInfo) null), "#A3");
573 Assert.IsNull (rm.GetString ("deHelloWorld"), "#A4");
574 Assert.AreEqual ("Hallo Welt", rm.GetString ("deHelloWorld", new CultureInfo ("de")), "#A5");
575 Assert.IsNull (rm.GetString ("deHelloWorld", (CultureInfo) null), "#A6");
577 Thread.CurrentThread.CurrentUICulture = new CultureInfo ("de");
578 Assert.AreEqual ("Hello World", rm.GetString ("HelloWorld"), "#B1");
579 Assert.AreEqual ("Hello World", rm.GetString ("HelloWorld", (CultureInfo) null), "#B2");
580 Assert.AreEqual ("Hallo Welt", rm.GetString ("deHelloWorld"), "#B3");
581 Assert.IsNull (rm.GetString ("deHelloWorld", new CultureInfo ("nl-BE")), "#B4");
582 Assert.AreEqual ("Hallo Welt", rm.GetString ("deHelloWorld", (CultureInfo) null), "#B5");
584 Thread.CurrentThread.CurrentUICulture = new CultureInfo ("nl-BE");
585 Assert.AreEqual ("Hello World", rm.GetString ("HelloWorld"), "#C1");
586 Assert.AreEqual ("Hello World", rm.GetString ("HelloWorld", new CultureInfo ("de")), "#C2");
587 Assert.AreEqual ("Hello World", rm.GetString ("HelloWorld", (CultureInfo) null), "#C3");
588 Assert.IsNull (rm.GetString ("deHelloWorld"), "#C4");
589 Assert.AreEqual ("Hallo Welt", rm.GetString ("deHelloWorld", new CultureInfo ("de")), "#C5");
590 Assert.IsNull (rm.GetString ("deHelloWorld", (CultureInfo) null), "#C6");
592 rm.ReleaseAllResources ();
596 public void GetString_Name_Null ()
598 ResourceManager rm = new ResourceManager (typeof (string));
600 rm.GetString ((string) null);
602 } catch (ArgumentNullException ex) {
603 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#A2");
604 Assert.IsNull (ex.InnerException, "#A3");
605 Assert.IsNotNull (ex.Message, "#A4");
606 Assert.IsNotNull (ex.ParamName, "#A5");
607 Assert.AreEqual ("name", ex.ParamName, "#A6");
611 rm.GetString ((string) null, CultureInfo.InvariantCulture);
613 } catch (ArgumentNullException ex) {
614 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#B2");
615 Assert.IsNull (ex.InnerException, "#B3");
616 Assert.IsNotNull (ex.Message, "#B4");
617 Assert.IsNotNull (ex.ParamName, "#B5");
618 Assert.AreEqual ("name", ex.ParamName, "#B6");
620 rm.ReleaseAllResources ();
624 [Category ("MobileNotWorking")]
625 public void GetString_ResourceSet_Disposed ()
627 Thread.CurrentThread.CurrentUICulture = new CultureInfo ("de");
628 ResourceManager rm = ResourceManager.
629 CreateFileBasedResourceManager ("MyResources", "Test/resources", null);
630 ResourceSet rs = rm.GetResourceSet (new CultureInfo ("de"),
635 rm.GetString ("deHelloWorld");
637 } catch (ObjectDisposedException ex) {
638 // Cannot access a closed resource set
639 Assert.AreEqual (typeof (ObjectDisposedException), ex.GetType (), "#2");
640 Assert.IsNull (ex.InnerException, "#3");
641 Assert.IsNotNull (ex.Message, "#4");
643 rm.ReleaseAllResources ();
648 [Category ("MobileNotWorking")]
649 public void GetStream ()
651 Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;
652 ResourceManager rm = ResourceManager.
653 CreateFileBasedResourceManager ("StreamTest", "Test/resources", null);
654 UnmanagedMemoryStream s = rm.GetStream ("test");
655 Assert.AreEqual (22, s.Length, "#A1");
656 Assert.AreEqual ("veritas vos liberabit\n", new StreamReader (s).ReadToEnd (), "#A2");
659 Thread.CurrentThread.CurrentUICulture = new CultureInfo ("ja-JP");
660 s = rm.GetStream ("test");
661 Assert.AreEqual (22, s.Length, "#B1");
662 Assert.AreEqual ("Veritas Vos Liberabit\n", new StreamReader (s).ReadToEnd (), "#B2");
665 Thread.CurrentThread.CurrentUICulture = new CultureInfo ("nl-BE");
666 s = rm.GetStream ("test");
667 Assert.AreEqual (22, s.Length, "#C1");
668 Assert.AreEqual ("veritas vos liberabit\n", new StreamReader (s).ReadToEnd (), "#C2");
669 rm.ReleaseAllResources ();
673 [Category ("MobileNotWorking")]
674 public void GetStream_Culture ()
676 Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;
677 ResourceManager rm = ResourceManager.
678 CreateFileBasedResourceManager ("StreamTest", "Test/resources", null);
679 UnmanagedMemoryStream s = rm.GetStream ("test", new CultureInfo ("ja-JP"));
680 Assert.AreEqual (22, s.Length, "#1");
681 Assert.AreEqual ("Veritas Vos Liberabit\n", new StreamReader (s).ReadToEnd (), "#2");
684 Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;
685 s = rm.GetStream ("test", null);
686 Assert.AreEqual (22, s.Length, "#1");
687 Assert.AreEqual ("veritas vos liberabit\n", new StreamReader (s).ReadToEnd (), "#2");
690 Thread.CurrentThread.CurrentUICulture = new CultureInfo ("ja-JP");
691 s = rm.GetStream ("test", null);
692 Assert.AreEqual (22, s.Length, "#1");
693 Assert.AreEqual ("Veritas Vos Liberabit\n", new StreamReader (s).ReadToEnd (), "#2");
695 rm.ReleaseAllResources ();
699 public void GetStream_Name_Null ()
701 ResourceManager rm = new ResourceManager (typeof (string));
703 rm.GetStream ((string) null);
705 } catch (ArgumentNullException ex) {
706 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#A2");
707 Assert.IsNull (ex.InnerException, "#A3");
708 Assert.IsNotNull (ex.Message, "#A4");
709 Assert.IsNotNull (ex.ParamName, "#A5");
710 Assert.AreEqual ("name", ex.ParamName, "#A6");
714 rm.GetStream ((string) null, CultureInfo.InvariantCulture);
716 } catch (ArgumentNullException ex) {
717 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#A2");
718 Assert.IsNull (ex.InnerException, "#A3");
719 Assert.IsNotNull (ex.Message, "#A4");
720 Assert.IsNotNull (ex.ParamName, "#A5");
721 Assert.AreEqual ("name", ex.ParamName, "#A6");
723 rm.ReleaseAllResources ();
727 [Category ("MobileNotWorking")]
728 public void GetStream_Resource_DoesNotExist ()
730 ResourceManager rm = ResourceManager.
731 CreateFileBasedResourceManager ("StreamTest", "Test/resources", null);
732 Assert.IsNull (rm.GetStream ("HelloWorld"));
733 rm.ReleaseAllResources ();
737 [Category ("MobileNotWorking")]
738 public void GetStream_Resource_NonStream ()
740 ResourceManager rm = ResourceManager.
741 CreateFileBasedResourceManager ("MyResources", "Test/resources", null);
744 rm.GetStream ("HelloWorld", CultureInfo.InvariantCulture);
746 } catch (InvalidOperationException ex) {
747 // Resource 'HelloWorld' was not a Stream - call
749 Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
750 Assert.IsNull (ex.InnerException, "#3");
751 Assert.IsNotNull (ex.Message, "#4");
753 rm.ReleaseAllResources ();
758 public void GetStream_ResourceFile_DoesNotExist ()
760 ResourceManager rm = ResourceManager.
761 CreateFileBasedResourceManager ("DoesNotExist", "Test/resources", null);
763 rm.GetStream ("HelloWorld");
765 } catch (MissingManifestResourceException ex) {
766 // Could not find any resources appropriate for
767 // the specified culture (or the neutral culture)
769 Assert.AreEqual (typeof (MissingManifestResourceException), ex.GetType (), "#2");
770 Assert.IsNull (ex.InnerException, "#3");
771 Assert.IsNotNull (ex.Message, "#4");
776 [Category ("MobileNotWorking")]
777 public void GetStream_ResourceSet_Disposed ()
779 Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;
780 ResourceManager rm = ResourceManager.
781 CreateFileBasedResourceManager ("StreamTest", "Test/resources", null);
782 ResourceSet rs = rm.GetResourceSet (new CultureInfo ("ja-JP"),
787 rm.GetStream ("test", new CultureInfo ("ja-JP"));
789 } catch (ObjectDisposedException ex) {
790 // Cannot access a closed resource set
791 Assert.AreEqual (typeof (ObjectDisposedException), ex.GetType (), "#2");
792 Assert.IsNull (ex.InnerException, "#3");
793 Assert.IsNotNull (ex.Message, "#4");
795 rm.ReleaseAllResources ();
800 [Category ("MobileNotWorking")]
801 public void IgnoreCase ()
803 ResourceManager rm = ResourceManager.
804 CreateFileBasedResourceManager ("MyResources", "Test/resources", null);
806 Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;
807 Assert.IsFalse (rm.IgnoreCase, "#A1");
808 Assert.IsNull (rm.GetString ("helloWORLD"), "#A2");
809 rm.IgnoreCase = true;
810 Assert.IsTrue (rm.IgnoreCase, "#B1");
811 Assert.AreEqual ("Hello World", rm.GetString ("HelloWorld"), "#B2");
812 rm.ReleaseAllResources ();
816 public void InternalGetResourceSet_Culture_Null ()
818 MockResourceManager rm = new MockResourceManager (typeof (string));
820 rm.InternalGetResourceSet ((CultureInfo) null, false, true);
822 } catch (ArgumentNullException ex) {
823 // Key cannot be null
824 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
825 Assert.IsNull (ex.InnerException, "#3");
826 Assert.IsNotNull (ex.Message, "#4");
827 Assert.IsNotNull (ex.ParamName, "#5");
828 Assert.AreEqual ("key", ex.ParamName, "#6");
833 public void TestResourceManagerGetResourceSetEmpty ()
835 Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;
836 ResourceManagerPoker rm = new ResourceManagerPoker ();
838 rm.GetResourceSet (CultureInfo.InvariantCulture,
841 } catch (NullReferenceException) {
846 public void TestResourceManagerReleaseAllResourcesEmpty ()
848 Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;
849 ResourceManagerPoker rm = new ResourceManagerPoker ();
851 rm.ReleaseAllResources ();
853 } catch (NullReferenceException) {
858 public void TestResourceManagerReleaseAllResources ()
860 Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;
861 ResourceManagerPoker rm = new ResourceManagerPoker ();
862 rm.InitResourceSets ();
863 rm.ReleaseAllResources ();
867 [Category ("MobileNotWorking")]
868 public void TestResourceManagerResourceSets ()
870 Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;
871 ResourceManagerPoker rm = new ResourceManagerPoker ();
873 rm.InitResourceSets ();
875 ResourceSet rs = rm.GetResourceSet (CultureInfo.InvariantCulture,
878 Assert.AreEqual (1, rm.GetResourceSets().Keys.Count, "#01");
882 Assert.AreEqual (1, rm.GetResourceSets().Keys.Count, "#02");
884 rs = rm.GetResourceSet (CultureInfo.InvariantCulture,
887 Assert.AreEqual (1, rm.GetResourceSets().Keys.Count, "#03");
889 rm.ReleaseAllResources ();
893 [Category ("MobileNotWorking")]
894 public void TestResourceManagerResourceSetClosedException ()
896 Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;
897 ResourceManagerPoker rm = new ResourceManagerPoker ();
899 rm.InitResourceSets ();
901 ResourceSet rs = rm.GetResourceSet (CultureInfo.InvariantCulture,
904 ResourceSet rs2 = rs;
905 rs = rm.GetResourceSet (CultureInfo.InvariantCulture, true, true);
906 Assert.IsTrue (Object.ReferenceEquals (rs2, rs), "#0");
909 rm.GetString ("HelloWorld");
911 } catch (ObjectDisposedException ex) {
912 // ResourceSet is closed
913 Assert.AreEqual (typeof (ObjectDisposedException), ex.GetType (), "#2");
914 Assert.IsNull (ex.InnerException, "#3");
915 Assert.IsNotNull (ex.Message, "#4");
917 rm.ReleaseAllResources ();
922 public void TestSatellites ()
924 ResourceManager manager = new ResourceManager("Resources", GetType ().Assembly);
926 Assert.AreEqual ("Hei", manager.GetString ("Hello", new CultureInfo ("nn-NO")), "nn-NO");
927 Assert.AreEqual ("Hola", manager.GetString ("Hello", new CultureInfo ("es-ES")), "es-ES");
928 Assert.AreEqual ("Hello", manager.GetString ("Hello", new CultureInfo ("en-US")), "en-US");
931 class MockResourceManager : ResourceManager
933 public MockResourceManager ()
937 public MockResourceManager (Type resourceSource) : base (resourceSource)
941 public MockResourceManager (string baseName, Assembly assembly)
942 : base (baseName, assembly)
946 public MockResourceManager (string baseName, Assembly assembly, Type usingResourceSet)
947 : base (baseName, assembly, usingResourceSet)
951 public new string BaseNameField {
952 get { return base.BaseNameField; }
955 public new Assembly MainAssembly {
956 get { return base.MainAssembly; }
959 public new Hashtable ResourceSets {
960 get { return base.ResourceSets; }
963 public new ResourceSet InternalGetResourceSet (CultureInfo culture, bool Createifnotexists, bool tryParents)
965 return base.InternalGetResourceSet (culture,
966 Createifnotexists, tryParents);
969 public new string GetResourceFileName (CultureInfo culture)
971 return base.GetResourceFileName (culture);
975 class MockResourceSet : ResourceSet