Rename Managed.Windows.Forms to System.Windows.Forms for consistency.
[mono.git] / mcs / class / System.Windows.Forms / Test / System.Resources / ResXDataNodeTypeConverterGetValueTypeNameTests.cs
1 //
2 // ResXDataNodeTypeConverterGetValueTypeNameTests.cs
3 // 
4 // Author:
5 //      Gary Barnett (gary.barnett.mono@gmail.com)
6 // 
7 // Copyright (C) Gary Barnett (2012)
8 //
9 // Permission is hereby granted, free of charge, to any person obtaining
10 // a copy of this software and associated documentation files (the
11 // "Software"), to deal in the Software without restriction, including
12 // without limitation the rights to use, copy, modify, merge, publish,
13 // distribute, sublicense, and/or sell copies of the Software, and to
14 // permit persons to whom the Software is furnished to do so, subject to
15 // the following conditions:
16 // 
17 // The above copyright notice and this permission notice shall be
18 // included in all copies or substantial portions of the Software.
19 // 
20 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
24 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
25 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
26 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
27
28 using System;
29 using System.IO;
30 using System.Resources;
31 using System.Collections;
32 using NUnit.Framework;
33 using System.ComponentModel.Design;
34 using System.Drawing;
35 using System.Reflection;
36
37 namespace MonoTests.System.Resources
38 {
39         [TestFixture]
40         public class ResXDataNodeTypeConverterGetValueTypeNameTests : ResourcesTestHelper {
41                 [Test]
42                 public void ITRSUsedWithNodeFromReader ()
43                 {
44                         ResXDataNode returnedNode, originalNode;
45                         originalNode = new ResXDataNode ("aNumber", 23L);
46                         returnedNode = GetNodeFromResXReader (originalNode);
47
48                         Assert.IsNotNull (returnedNode, "#A1");
49                         string returnedType = returnedNode.GetValueTypeName (new ReturnIntITRS ());
50                         Assert.AreEqual ((typeof (Int32)).AssemblyQualifiedName, returnedType, "#A2");
51                 }
52
53                 [Test]
54                 public void ITRSUsedEachTimeWhenNodeFromReader ()
55                 {
56                         ResXDataNode returnedNode, originalNode;
57                         originalNode = new ResXDataNode ("aNumber", 23L);
58                         returnedNode = GetNodeFromResXReader (originalNode);
59
60                         Assert.IsNotNull (returnedNode, "#A1");
61                         string newType = returnedNode.GetValueTypeName (new ReturnIntITRS ());
62                         Assert.AreEqual (typeof (int).AssemblyQualifiedName, newType, "#A2");
63                         string origType = returnedNode.GetValueTypeName ((ITypeResolutionService) null);
64                         Assert.AreEqual (typeof (long).AssemblyQualifiedName, origType, "#A3");                         
65                 }
66
67                 [Test]
68                 public void ITRSNotUsedWhenNodeCreatedNew ()
69                 {
70                         ResXDataNode node;
71                         node = new ResXDataNode ("along", 34L);
72
73                         string returnedType = node.GetValueTypeName (new ReturnIntITRS ());
74                         Assert.AreEqual ((typeof (long)).AssemblyQualifiedName, returnedType, "#A1");
75                 }
76
77                 [Test]
78                 public void InvalidMimeTypeReturnedFromReader_ReturnsStringIfCantResolveType ()
79                 {
80                         ResXDataNode node = GetNodeFromResXReader (typeconResXInvalidMimeTypeAndType);
81                         Assert.IsNotNull (node, "#A1");
82                         string type = node.GetValueTypeName ((AssemblyName []) null);
83                         Assert.AreEqual ("A.type", type, "#A2");
84                 }
85
86                 [Test]
87                 public void InvalidMimeTypeReturnedFromReader_TriesToResolve ()
88                 {
89                         ResXDataNode node = GetNodeFromResXReader (typeconResXInvalidMimeType);
90                         Assert.IsNotNull (node, "#A1");
91                         string type = node.GetValueTypeName ((AssemblyName []) null);
92                         Assert.AreEqual (typeof (string).AssemblyQualifiedName, type, "#A2");
93                 }
94
95                 [Test]
96                 public void ReturnsFullNameWereOnlyFullNameInResX ()
97                 {
98                         ResXDataNode node = GetNodeFromResXReader (convertableResXWithoutAssemblyName);
99
100                         Assert.IsNotNull (node, "#A1");
101                         string returnedType = node.GetValueTypeName ((AssemblyName []) null);
102                         Assert.AreEqual ("DummyAssembly.Convertable", returnedType, "#A2");
103                 }
104
105                 [Test]
106                 public void AssemblyNameUsedWhereOnlyFullNameInResX ()
107                 {
108                         // DummyAssembly must be in the same directory as current assembly to work correctly
109                         string aName = "DummyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null";
110                         AssemblyName [] assemblyNames = new AssemblyName [] { new AssemblyName (aName) };
111
112                         ResXDataNode node = GetNodeFromResXReader (convertableResXWithoutAssemblyName);
113
114                         Assert.IsNotNull (node, "#A1");
115                         string returnedType = node.GetValueTypeName (assemblyNames);
116                         Assert.AreEqual ("DummyAssembly.Convertable, " + aName, returnedType, "#A2");
117                 }
118
119                 [Test]
120                 public void AssemblyNameUsedEachTimeWhereOnlyFullNameInResX ()
121                 {
122                         // DummyAssembly must be in the same directory as current assembly to work correctly
123                         string aName = "DummyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null";
124                         AssemblyName [] assemblyNames = new AssemblyName [] { new AssemblyName (aName) };
125
126                         ResXDataNode node = GetNodeFromResXReader (convertableResXWithoutAssemblyName);
127
128                         Assert.IsNotNull (node, "#A1");
129                         string returnedName = node.GetValueTypeName (assemblyNames);
130                         Assert.AreEqual ("DummyAssembly.Convertable, " + aName, returnedName, "#A2");
131                         string nameWithNullParam = node.GetValueTypeName ((AssemblyName []) null);
132                         Assert.AreEqual ("DummyAssembly.Convertable", nameWithNullParam, "#A3");
133                 }
134
135                 #region initial
136                 
137                 [Test]
138                 public void NullITRSServiceOK ()
139                 {
140                         ResXDataNode node = GetNodeEmdeddedIcon ();
141                         
142                         string name = node.GetValueTypeName ((ITypeResolutionService) null);
143                         Assert.AreEqual (typeof (Icon).AssemblyQualifiedName, name);
144                 }
145                 
146                 [Test]
147                 public void WrongITRSOK ()
148                 {
149                         ResXDataNode node = GetNodeEmdeddedIcon ();
150                         
151                         string name = node.GetValueTypeName (new DummyITRS ());
152                         Assert.AreEqual (typeof (Icon).AssemblyQualifiedName, name);
153                 }
154                 
155                 [Test]
156                 public void WrongAssemblyNamesOK ()
157                 {
158                         ResXDataNode node = GetNodeEmdeddedIcon ();
159                         AssemblyName [] ass = new AssemblyName [1];
160                         
161                         ass [0] = new AssemblyName ("System.Design");
162                         
163                         string name = node.GetValueTypeName (ass);
164                         Assert.AreEqual (typeof (Icon).AssemblyQualifiedName, name);
165                 }
166                 
167                 [Test]
168                 public void NullAssemblyNamesOK ()
169                 {
170                         ResXDataNode node = GetNodeEmdeddedIcon ();
171                         
172                         string name = node.GetValueTypeName ((AssemblyName []) null);
173                         Assert.AreEqual (typeof (Icon).AssemblyQualifiedName, name);
174                 }
175                 
176 #endregion
177
178                 static string typeconResXInvalidMimeTypeAndType =
179 @"<?xml version=""1.0"" encoding=""utf-8""?>
180 <root>
181   
182   <resheader name=""resmimetype"">
183         <value>text/microsoft-resx</value>
184   </resheader>
185   <resheader name=""version"">
186         <value>2.0</value>
187   </resheader>
188   <resheader name=""reader"">
189         <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
190   </resheader>
191   <resheader name=""writer"">
192         <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
193   </resheader>
194   <data name=""test"" type=""A.type"" mimetype=""application/xxxx"">
195         <value>42</value>
196   </data>
197 </root>";
198
199                 static string typeconResXInvalidMimeType =
200 @"<?xml version=""1.0"" encoding=""utf-8""?>
201 <root>
202   
203   <resheader name=""resmimetype"">
204         <value>text/microsoft-resx</value>
205   </resheader>
206   <resheader name=""version"">
207         <value>2.0</value>
208   </resheader>
209   <resheader name=""reader"">
210         <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
211   </resheader>
212   <resheader name=""writer"">
213         <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
214   </resheader>
215   <data name=""test"" type=""System.String"" mimetype=""application/xxxx"">
216         <value>42</value>
217   </data>
218 </root>";
219
220                 
221                 static string missingSerializableFromMissingAssembly =
222 @"<?xml version=""1.0"" encoding=""utf-8""?>
223 <root>
224   <resheader name=""resmimetype"">
225     <value>text/microsoft-resx</value>
226   </resheader>
227   <resheader name=""version"">
228     <value>2.0</value>
229   </resheader>
230   <resheader name=""reader"">
231     <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
232   </resheader>
233   <resheader name=""writer"">
234     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
235   </resheader>
236   <data name=""aname"" mimetype=""application/x-microsoft.net.object.binary.base64"">
237     <value>
238         AAEAAAD/////AQAAAAAAAAAMAgAAAEZNaXNzaW5nQXNzZW1ibHksIFZlcnNpb249MS4wLjAuMCwgQ3Vs
239         dHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsBQEAAAAhRHVtbXlBc3NlbWJseS5NaXNzaW5n
240         U2VyaWFsaXphYmxlAgAAAAdzZXJuYW1lCHNlcnZhbHVlAQECAAAABgMAAAAFYW5hbWUGBAAAAAZhdmFs
241         dWUL
242 </value>
243   </data>
244 </root>";
245
246                 static string anotherSerializableFromDummyAssembly =
247 @"<?xml version=""1.0"" encoding=""utf-8""?>
248 <root>
249  
250   <resheader name=""resmimetype"">
251     <value>text/microsoft-resx</value>
252   </resheader>
253   <resheader name=""version"">
254     <value>2.0</value>
255   </resheader>
256   <resheader name=""reader"">
257     <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
258   </resheader>
259   <resheader name=""writer"">
260     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
261   </resheader>
262   <data name=""aname"" mimetype=""application/x-microsoft.net.object.binary.base64"">
263     <value>
264         AAEAAAD/////AQAAAAAAAAAMAgAAAEREdW1teUFzc2VtYmx5LCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1
265         cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAIUR1bW15QXNzZW1ibHkuQW5vdGhlclNl
266         cmlhbGl6YWJsZQIAAAAHc2VybmFtZQhzZXJ2YWx1ZQEBAgAAAAYDAAAABWFuYW1lBgQAAAAGYXZhbHVl
267         Cw==
268 </value>
269   </data>
270 </root>";
271
272                 static string convertableResXWithoutAssemblyName =
273 @"<?xml version=""1.0"" encoding=""utf-8""?>
274 <root>
275   
276   <resheader name=""resmimetype"">
277         <value>text/microsoft-resx</value>
278   </resheader>
279   <resheader name=""version"">
280         <value>2.0</value>
281   </resheader>
282   <resheader name=""reader"">
283         <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
284   </resheader>
285   <resheader name=""writer"">
286         <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
287   </resheader>
288   
289   <data name=""test"" type=""DummyAssembly.Convertable"">
290         <value>im a name        im a value</value>
291   </data>
292 </root>";
293
294                 static string thisAssemblyConvertableResXWithoutAssemblyName =
295         @"<?xml version=""1.0"" encoding=""utf-8""?>
296 <root>
297   
298   <resheader name=""resmimetype"">
299         <value>text/microsoft-resx</value>
300   </resheader>
301   <resheader name=""version"">
302         <value>2.0</value>
303   </resheader>
304   <resheader name=""reader"">
305         <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
306   </resheader>
307   <resheader name=""writer"">
308         <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
309   </resheader>
310   
311   <data name=""test"" type=""MonoTests.System.Resources.ThisAssemblyConvertable"">
312         <value>im a name        im a value</value>
313   </data>
314 </root>";
315
316         }
317
318
319 }
320