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.
30 using System.Resources;
31 using System.Collections;
32 using NUnit.Framework;
33 using System.ComponentModel.Design;
35 using System.Reflection;
37 namespace MonoTests.System.Resources
40 public class ResXDataNodeTypeConverterGetValueTypeNameTests : ResourcesTestHelper {
42 public void ITRSUsedWithNodeFromReader ()
44 ResXDataNode returnedNode, originalNode;
45 originalNode = new ResXDataNode ("aNumber", 23L);
46 returnedNode = GetNodeFromResXReader (originalNode);
48 Assert.IsNotNull (returnedNode, "#A1");
49 string returnedType = returnedNode.GetValueTypeName (new ReturnIntITRS ());
50 Assert.AreEqual ((typeof (Int32)).AssemblyQualifiedName, returnedType, "#A2");
54 public void ITRSUsedEachTimeWhenNodeFromReader ()
56 ResXDataNode returnedNode, originalNode;
57 originalNode = new ResXDataNode ("aNumber", 23L);
58 returnedNode = GetNodeFromResXReader (originalNode);
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");
68 public void ITRSNotUsedWhenNodeCreatedNew ()
71 node = new ResXDataNode ("along", 34L);
73 string returnedType = node.GetValueTypeName (new ReturnIntITRS ());
74 Assert.AreEqual ((typeof (long)).AssemblyQualifiedName, returnedType, "#A1");
78 public void InvalidMimeTypeReturnedFromReader_ReturnsStringIfCantResolveType ()
80 ResXDataNode node = GetNodeFromResXReader (typeconResXInvalidMimeTypeAndType);
81 Assert.IsNotNull (node, "#A1");
82 string type = node.GetValueTypeName ((AssemblyName []) null);
83 Assert.AreEqual ("A.type", type, "#A2");
87 public void InvalidMimeTypeReturnedFromReader_TriesToResolve ()
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");
96 public void ReturnsFullNameWereOnlyFullNameInResX ()
98 ResXDataNode node = GetNodeFromResXReader (convertableResXWithoutAssemblyName);
100 Assert.IsNotNull (node, "#A1");
101 string returnedType = node.GetValueTypeName ((AssemblyName []) null);
102 Assert.AreEqual ("DummyAssembly.Convertable", returnedType, "#A2");
106 public void AssemblyNameUsedWhereOnlyFullNameInResX ()
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) };
112 ResXDataNode node = GetNodeFromResXReader (convertableResXWithoutAssemblyName);
114 Assert.IsNotNull (node, "#A1");
115 string returnedType = node.GetValueTypeName (assemblyNames);
116 Assert.AreEqual ("DummyAssembly.Convertable, " + aName, returnedType, "#A2");
120 public void AssemblyNameUsedEachTimeWhereOnlyFullNameInResX ()
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) };
126 ResXDataNode node = GetNodeFromResXReader (convertableResXWithoutAssemblyName);
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");
138 public void NullITRSServiceOK ()
140 ResXDataNode node = GetNodeEmdeddedIcon ();
142 string name = node.GetValueTypeName ((ITypeResolutionService) null);
143 Assert.AreEqual (typeof (Icon).AssemblyQualifiedName, name);
147 public void WrongITRSOK ()
149 ResXDataNode node = GetNodeEmdeddedIcon ();
151 string name = node.GetValueTypeName (new DummyITRS ());
152 Assert.AreEqual (typeof (Icon).AssemblyQualifiedName, name);
156 public void WrongAssemblyNamesOK ()
158 ResXDataNode node = GetNodeEmdeddedIcon ();
159 AssemblyName [] ass = new AssemblyName [1];
161 ass [0] = new AssemblyName ("System.Design");
163 string name = node.GetValueTypeName (ass);
164 Assert.AreEqual (typeof (Icon).AssemblyQualifiedName, name);
168 public void NullAssemblyNamesOK ()
170 ResXDataNode node = GetNodeEmdeddedIcon ();
172 string name = node.GetValueTypeName ((AssemblyName []) null);
173 Assert.AreEqual (typeof (Icon).AssemblyQualifiedName, name);
178 static string typeconResXInvalidMimeTypeAndType =
179 @"<?xml version=""1.0"" encoding=""utf-8""?>
182 <resheader name=""resmimetype"">
183 <value>text/microsoft-resx</value>
185 <resheader name=""version"">
188 <resheader name=""reader"">
189 <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
191 <resheader name=""writer"">
192 <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
194 <data name=""test"" type=""A.type"" mimetype=""application/xxxx"">
199 static string typeconResXInvalidMimeType =
200 @"<?xml version=""1.0"" encoding=""utf-8""?>
203 <resheader name=""resmimetype"">
204 <value>text/microsoft-resx</value>
206 <resheader name=""version"">
209 <resheader name=""reader"">
210 <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
212 <resheader name=""writer"">
213 <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
215 <data name=""test"" type=""System.String"" mimetype=""application/xxxx"">
221 static string missingSerializableFromMissingAssembly =
222 @"<?xml version=""1.0"" encoding=""utf-8""?>
224 <resheader name=""resmimetype"">
225 <value>text/microsoft-resx</value>
227 <resheader name=""version"">
230 <resheader name=""reader"">
231 <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
233 <resheader name=""writer"">
234 <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
236 <data name=""aname"" mimetype=""application/x-microsoft.net.object.binary.base64"">
238 AAEAAAD/////AQAAAAAAAAAMAgAAAEZNaXNzaW5nQXNzZW1ibHksIFZlcnNpb249MS4wLjAuMCwgQ3Vs
239 dHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsBQEAAAAhRHVtbXlBc3NlbWJseS5NaXNzaW5n
240 U2VyaWFsaXphYmxlAgAAAAdzZXJuYW1lCHNlcnZhbHVlAQECAAAABgMAAAAFYW5hbWUGBAAAAAZhdmFs
246 static string anotherSerializableFromDummyAssembly =
247 @"<?xml version=""1.0"" encoding=""utf-8""?>
250 <resheader name=""resmimetype"">
251 <value>text/microsoft-resx</value>
253 <resheader name=""version"">
256 <resheader name=""reader"">
257 <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
259 <resheader name=""writer"">
260 <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
262 <data name=""aname"" mimetype=""application/x-microsoft.net.object.binary.base64"">
264 AAEAAAD/////AQAAAAAAAAAMAgAAAEREdW1teUFzc2VtYmx5LCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1
265 cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAIUR1bW15QXNzZW1ibHkuQW5vdGhlclNl
266 cmlhbGl6YWJsZQIAAAAHc2VybmFtZQhzZXJ2YWx1ZQEBAgAAAAYDAAAABWFuYW1lBgQAAAAGYXZhbHVl
272 static string convertableResXWithoutAssemblyName =
273 @"<?xml version=""1.0"" encoding=""utf-8""?>
276 <resheader name=""resmimetype"">
277 <value>text/microsoft-resx</value>
279 <resheader name=""version"">
282 <resheader name=""reader"">
283 <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
285 <resheader name=""writer"">
286 <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
289 <data name=""test"" type=""DummyAssembly.Convertable"">
290 <value>im a name im a value</value>
294 static string thisAssemblyConvertableResXWithoutAssemblyName =
295 @"<?xml version=""1.0"" encoding=""utf-8""?>
298 <resheader name=""resmimetype"">
299 <value>text/microsoft-resx</value>
301 <resheader name=""version"">
304 <resheader name=""reader"">
305 <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
307 <resheader name=""writer"">
308 <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
311 <data name=""test"" type=""MonoTests.System.Resources.ThisAssemblyConvertable"">
312 <value>im a name im a value</value>