2 // ResXDataNodeTypeConverterGetValueTypeNameTests.cs
5 // Gary Barnett (gary.barnett.mono@gmail.com)
7 // Copyright (C) Gary Barnett (2012)
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:
17 // The above copyright notice and this permission notice shall be
18 // included in all copies or substantial portions of the Software.
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.
31 using System.Resources;
32 using System.Collections;
33 using NUnit.Framework;
34 using System.ComponentModel.Design;
36 using System.Reflection;
38 namespace MonoTests.System.Resources
41 public class ResXDataNodeTypeConverterGetValueTypeNameTests : ResourcesTestHelper {
43 public void ITRSUsedWithNodeFromReader ()
45 ResXDataNode returnedNode, originalNode;
46 originalNode = new ResXDataNode ("aNumber", 23L);
47 returnedNode = GetNodeFromResXReader (originalNode);
49 Assert.IsNotNull (returnedNode, "#A1");
50 string returnedType = returnedNode.GetValueTypeName (new ReturnIntITRS ());
51 Assert.AreEqual ((typeof (Int32)).AssemblyQualifiedName, returnedType, "#A2");
55 public void ITRSUsedEachTimeWhenNodeFromReader ()
57 ResXDataNode returnedNode, originalNode;
58 originalNode = new ResXDataNode ("aNumber", 23L);
59 returnedNode = GetNodeFromResXReader (originalNode);
61 Assert.IsNotNull (returnedNode, "#A1");
62 string newType = returnedNode.GetValueTypeName (new ReturnIntITRS ());
63 Assert.AreEqual (typeof (int).AssemblyQualifiedName, newType, "#A2");
64 string origType = returnedNode.GetValueTypeName ((ITypeResolutionService) null);
65 Assert.AreEqual (typeof (long).AssemblyQualifiedName, origType, "#A3");
69 public void ITRSNotUsedWhenNodeCreatedNew ()
72 node = new ResXDataNode ("along", 34L);
74 string returnedType = node.GetValueTypeName (new ReturnIntITRS ());
75 Assert.AreEqual ((typeof (long)).AssemblyQualifiedName, returnedType, "#A1");
79 public void InvalidMimeTypeReturnedFromReader_ReturnsStringIfCantResolveType ()
81 ResXDataNode node = GetNodeFromResXReader (typeconResXInvalidMimeTypeAndType);
82 Assert.IsNotNull (node, "#A1");
83 string type = node.GetValueTypeName ((AssemblyName []) null);
84 Assert.AreEqual ("A.type", type, "#A2");
88 public void InvalidMimeTypeReturnedFromReader_TriesToResolve ()
90 ResXDataNode node = GetNodeFromResXReader (typeconResXInvalidMimeType);
91 Assert.IsNotNull (node, "#A1");
92 string type = node.GetValueTypeName ((AssemblyName []) null);
93 Assert.AreEqual (typeof (string).AssemblyQualifiedName, type, "#A2");
97 public void ReturnsFullNameWereOnlyFullNameInResX ()
99 ResXDataNode node = GetNodeFromResXReader (convertableResXWithoutAssemblyName);
101 Assert.IsNotNull (node, "#A1");
102 string returnedType = node.GetValueTypeName ((AssemblyName []) null);
103 Assert.AreEqual ("DummyAssembly.Convertable", returnedType, "#A2");
107 public void AssemblyNameUsedWhereOnlyFullNameInResX ()
109 // DummyAssembly must be in the same directory as current assembly to work correctly
110 string aName = "DummyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null";
111 AssemblyName [] assemblyNames = new AssemblyName [] { new AssemblyName (aName) };
113 ResXDataNode node = GetNodeFromResXReader (convertableResXWithoutAssemblyName);
115 Assert.IsNotNull (node, "#A1");
116 string returnedType = node.GetValueTypeName (assemblyNames);
117 Assert.AreEqual ("DummyAssembly.Convertable, " + aName, returnedType, "#A2");
121 public void AssemblyNameUsedEachTimeWhereOnlyFullNameInResX ()
123 // DummyAssembly must be in the same directory as current assembly to work correctly
124 string aName = "DummyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null";
125 AssemblyName [] assemblyNames = new AssemblyName [] { new AssemblyName (aName) };
127 ResXDataNode node = GetNodeFromResXReader (convertableResXWithoutAssemblyName);
129 Assert.IsNotNull (node, "#A1");
130 string returnedName = node.GetValueTypeName (assemblyNames);
131 Assert.AreEqual ("DummyAssembly.Convertable, " + aName, returnedName, "#A2");
132 string nameWithNullParam = node.GetValueTypeName ((AssemblyName []) null);
133 Assert.AreEqual ("DummyAssembly.Convertable", nameWithNullParam, "#A3");
139 public void NullITRSServiceOK ()
141 ResXDataNode node = GetNodeEmdeddedIcon ();
143 string name = node.GetValueTypeName ((ITypeResolutionService) null);
144 Assert.AreEqual (typeof (Icon).AssemblyQualifiedName, name);
148 public void WrongITRSOK ()
150 ResXDataNode node = GetNodeEmdeddedIcon ();
152 string name = node.GetValueTypeName (new DummyITRS ());
153 Assert.AreEqual (typeof (Icon).AssemblyQualifiedName, name);
157 public void WrongAssemblyNamesOK ()
159 ResXDataNode node = GetNodeEmdeddedIcon ();
160 AssemblyName [] ass = new AssemblyName [1];
162 ass [0] = new AssemblyName ("System.Design");
164 string name = node.GetValueTypeName (ass);
165 Assert.AreEqual (typeof (Icon).AssemblyQualifiedName, name);
169 public void NullAssemblyNamesOK ()
171 ResXDataNode node = GetNodeEmdeddedIcon ();
173 string name = node.GetValueTypeName ((AssemblyName []) null);
174 Assert.AreEqual (typeof (Icon).AssemblyQualifiedName, name);
179 static string typeconResXInvalidMimeTypeAndType =
180 @"<?xml version=""1.0"" encoding=""utf-8""?>
183 <resheader name=""resmimetype"">
184 <value>text/microsoft-resx</value>
186 <resheader name=""version"">
189 <resheader name=""reader"">
190 <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
192 <resheader name=""writer"">
193 <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
195 <data name=""test"" type=""A.type"" mimetype=""application/xxxx"">
200 static string typeconResXInvalidMimeType =
201 @"<?xml version=""1.0"" encoding=""utf-8""?>
204 <resheader name=""resmimetype"">
205 <value>text/microsoft-resx</value>
207 <resheader name=""version"">
210 <resheader name=""reader"">
211 <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
213 <resheader name=""writer"">
214 <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
216 <data name=""test"" type=""System.String"" mimetype=""application/xxxx"">
222 static string missingSerializableFromMissingAssembly =
223 @"<?xml version=""1.0"" encoding=""utf-8""?>
225 <resheader name=""resmimetype"">
226 <value>text/microsoft-resx</value>
228 <resheader name=""version"">
231 <resheader name=""reader"">
232 <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
234 <resheader name=""writer"">
235 <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
237 <data name=""aname"" mimetype=""application/x-microsoft.net.object.binary.base64"">
239 AAEAAAD/////AQAAAAAAAAAMAgAAAEZNaXNzaW5nQXNzZW1ibHksIFZlcnNpb249MS4wLjAuMCwgQ3Vs
240 dHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsBQEAAAAhRHVtbXlBc3NlbWJseS5NaXNzaW5n
241 U2VyaWFsaXphYmxlAgAAAAdzZXJuYW1lCHNlcnZhbHVlAQECAAAABgMAAAAFYW5hbWUGBAAAAAZhdmFs
247 static string anotherSerializableFromDummyAssembly =
248 @"<?xml version=""1.0"" encoding=""utf-8""?>
251 <resheader name=""resmimetype"">
252 <value>text/microsoft-resx</value>
254 <resheader name=""version"">
257 <resheader name=""reader"">
258 <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
260 <resheader name=""writer"">
261 <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
263 <data name=""aname"" mimetype=""application/x-microsoft.net.object.binary.base64"">
265 AAEAAAD/////AQAAAAAAAAAMAgAAAEREdW1teUFzc2VtYmx5LCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1
266 cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAIUR1bW15QXNzZW1ibHkuQW5vdGhlclNl
267 cmlhbGl6YWJsZQIAAAAHc2VybmFtZQhzZXJ2YWx1ZQEBAgAAAAYDAAAABWFuYW1lBgQAAAAGYXZhbHVl
273 static string convertableResXWithoutAssemblyName =
274 @"<?xml version=""1.0"" encoding=""utf-8""?>
277 <resheader name=""resmimetype"">
278 <value>text/microsoft-resx</value>
280 <resheader name=""version"">
283 <resheader name=""reader"">
284 <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
286 <resheader name=""writer"">
287 <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
290 <data name=""test"" type=""DummyAssembly.Convertable"">
291 <value>im a name im a value</value>
295 static string thisAssemblyConvertableResXWithoutAssemblyName =
296 @"<?xml version=""1.0"" encoding=""utf-8""?>
299 <resheader name=""resmimetype"">
300 <value>text/microsoft-resx</value>
302 <resheader name=""version"">
305 <resheader name=""reader"">
306 <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
308 <resheader name=""writer"">
309 <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
312 <data name=""test"" type=""MonoTests.System.Resources.ThisAssemblyConvertable"">
313 <value>im a name im a value</value>