New test.
[mono.git] / mcs / class / corlib / Test / System.Resources / ResourceManagerTest.cs
1 // 
2 // ResourceManager.cs:
3 //     NUnit Test Cases for System.Resources.ResourceManager
4 //
5 // Authors:
6 //     Robert Jordan (robertj@gmx.net)
7 //
8 // Copyright (C) 2005 Novell, Inc. (http://www.novell.com)
9 //
10
11 //
12 // Permission is hereby granted, free of charge, to any person obtaining
13 // a copy of this software and associated documentation files (the
14 // "Software"), to deal in the Software without restriction, including
15 // without limitation the rights to use, copy, modify, merge, publish,
16 // distribute, sublicense, and/or sell copies of the Software, and to
17 // permit persons to whom the Software is furnished to do so, subject to
18 // the following conditions:
19 // 
20 // The above copyright notice and this permission notice shall be
21 // included in all copies or substantial portions of the Software.
22 // 
23 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
24 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
26 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
27 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
28 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
29 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
30 //
31
32 using System;
33 using System.Collections;
34 using System.Globalization;
35 using System.Resources;
36 using System.Threading;
37 using System.IO;
38
39 using NUnit.Framework;
40
41 namespace MonoTests.System.Resources
42 {
43         class ResourceManagerPoker : ResourceManager
44         {
45                 public ResourceManagerPoker ()
46                 {
47                         BaseNameField = String.Format ("Test{0}resources{0}MyResources", Path.DirectorySeparatorChar);
48                 }
49
50                 public Hashtable GetResourceSets ()
51                 {
52                         return base.ResourceSets;
53                 }
54
55                 public void InitResourceSets ()
56                 {
57                         base.ResourceSets = new Hashtable ();
58                 }
59         }
60
61         [TestFixture]
62         public class ResourceManagerTest
63         {
64                 [Test]
65                 public void TestInvariantCulture ()
66                 {
67                         Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;
68                         ResourceManager rm = ResourceManager.
69                                 CreateFileBasedResourceManager ("MyResources", "Test/resources", null);
70                         Assert.AreEqual ("Hello World", rm.GetString ("HelloWorld"), "#01");
71                         Assert.AreEqual ("Hello World", rm.GetObject ("HelloWorld"), "#02");
72                 }
73
74                 [Test]
75                 public void TestGermanCulture ()
76                 {
77                         Thread.CurrentThread.CurrentUICulture = new CultureInfo ("de-DE");
78                         ResourceManager rm = ResourceManager.
79                                 CreateFileBasedResourceManager ("MyResources", "Test/resources", null);
80                         Assert.AreEqual ("Hello World", rm.GetString ("HelloWorld"), "#01");
81                         Assert.AreEqual ("Hello World", rm.GetObject ("HelloWorld"), "#02");
82                         Assert.AreEqual ("Hallo Welt", rm.GetString ("deHelloWorld"), "#03");
83                         Assert.AreEqual ("Hallo Welt", rm.GetObject ("deHelloWorld"), "#04");
84                 }
85
86                 [Test]
87                 [ExpectedException (typeof (NullReferenceException))]
88                 [Category("NotWorking")]
89                 public void TestResourceManagerGetResourceSetEmpty ()
90                 {
91                         Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;
92                         ResourceManagerPoker rm = new ResourceManagerPoker ();
93                         ResourceSet rs = rm.GetResourceSet (CultureInfo.InvariantCulture,
94                                                             true, true);
95                 }
96
97                 [Test]
98                 [ExpectedException (typeof (NullReferenceException))]
99                 [Category("NotWorking")]
100                 public void TestResourceManagerReleaseAllResourcesEmpty ()
101                 {
102                         Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;
103                         ResourceManagerPoker rm = new ResourceManagerPoker ();
104                         rm.ReleaseAllResources ();
105                 }
106
107                 [Test]
108                 public void TestResourceManagerReleaseAllResources ()
109                 {
110                         Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;
111                         ResourceManagerPoker rm = new ResourceManagerPoker ();
112                         rm.InitResourceSets ();
113                         rm.ReleaseAllResources ();
114                 }
115
116                 [Test]
117                 [Category("NotWorking")]
118                 public void TestResourceManagerResourceSets ()
119                 {
120                         Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;
121                         ResourceManagerPoker rm = new ResourceManagerPoker ();
122
123                         rm.InitResourceSets ();
124
125                         ResourceSet rs = rm.GetResourceSet (CultureInfo.InvariantCulture,
126                                                             true, true);
127
128                         Assert.AreEqual (1, rm.GetResourceSets().Keys.Count, "#01");
129
130                         rs.Close ();
131
132                         Assert.AreEqual (1, rm.GetResourceSets().Keys.Count, "#02");
133                 }
134         }
135 }