PageRenderTime 54ms CodeModel.GetById 25ms RepoModel.GetById 1ms app.codeStats 0ms

/mcs/class/Managed.Windows.Forms/Test/System.Resources/ResXDataNodeTypeConverterGetValueTypeNameTests.cs

http://github.com/mono/mono
C# | 322 lines | 255 code | 39 blank | 28 comment | 0 complexity | 2d7c7fb29eeadc37c5cc4de8afc79f29 MD5 | raw file
Possible License(s): GPL-2.0, CC-BY-SA-3.0, LGPL-2.0, MPL-2.0-no-copyleft-exception, LGPL-2.1, Unlicense, Apache-2.0
  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. #if NET_2_0
  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. namespace MonoTests.System.Resources
  37. {
  38. [TestFixture]
  39. public class ResXDataNodeTypeConverterGetValueTypeNameTests : ResourcesTestHelper {
  40. [Test]
  41. public void ITRSUsedWithNodeFromReader ()
  42. {
  43. ResXDataNode returnedNode, originalNode;
  44. originalNode = new ResXDataNode ("aNumber", 23L);
  45. returnedNode = GetNodeFromResXReader (originalNode);
  46. Assert.IsNotNull (returnedNode, "#A1");
  47. string returnedType = returnedNode.GetValueTypeName (new ReturnIntITRS ());
  48. Assert.AreEqual ((typeof (Int32)).AssemblyQualifiedName, returnedType, "#A2");
  49. }
  50. [Test]
  51. public void ITRSUsedEachTimeWhenNodeFromReader ()
  52. {
  53. ResXDataNode returnedNode, originalNode;
  54. originalNode = new ResXDataNode ("aNumber", 23L);
  55. returnedNode = GetNodeFromResXReader (originalNode);
  56. Assert.IsNotNull (returnedNode, "#A1");
  57. string newType = returnedNode.GetValueTypeName (new ReturnIntITRS ());
  58. Assert.AreEqual (typeof (int).AssemblyQualifiedName, newType, "#A2");
  59. string origType = returnedNode.GetValueTypeName ((ITypeResolutionService) null);
  60. Assert.AreEqual (typeof (long).AssemblyQualifiedName, origType, "#A3");
  61. }
  62. [Test]
  63. public void ITRSNotUsedWhenNodeCreatedNew ()
  64. {
  65. ResXDataNode node;
  66. node = new ResXDataNode ("along", 34L);
  67. string returnedType = node.GetValueTypeName (new ReturnIntITRS ());
  68. Assert.AreEqual ((typeof (long)).AssemblyQualifiedName, returnedType, "#A1");
  69. }
  70. [Test]
  71. public void InvalidMimeTypeReturnedFromReader_ReturnsStringIfCantResolveType ()
  72. {
  73. ResXDataNode node = GetNodeFromResXReader (typeconResXInvalidMimeTypeAndType);
  74. Assert.IsNotNull (node, "#A1");
  75. string type = node.GetValueTypeName ((AssemblyName []) null);
  76. Assert.AreEqual ("A.type", type, "#A2");
  77. }
  78. [Test]
  79. public void InvalidMimeTypeReturnedFromReader_TriesToResolve ()
  80. {
  81. ResXDataNode node = GetNodeFromResXReader (typeconResXInvalidMimeType);
  82. Assert.IsNotNull (node, "#A1");
  83. string type = node.GetValueTypeName ((AssemblyName []) null);
  84. Assert.AreEqual (typeof (string).AssemblyQualifiedName, type, "#A2");
  85. }
  86. [Test]
  87. public void ReturnsFullNameWereOnlyFullNameInResX ()
  88. {
  89. ResXDataNode node = GetNodeFromResXReader (convertableResXWithoutAssemblyName);
  90. Assert.IsNotNull (node, "#A1");
  91. string returnedType = node.GetValueTypeName ((AssemblyName []) null);
  92. Assert.AreEqual ("DummyAssembly.Convertable", returnedType, "#A2");
  93. }
  94. [Test]
  95. public void AssemblyNameUsedWhereOnlyFullNameInResX ()
  96. {
  97. // DummyAssembly must be in the same directory as current assembly to work correctly
  98. string aName = "DummyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null";
  99. AssemblyName [] assemblyNames = new AssemblyName [] { new AssemblyName (aName) };
  100. ResXDataNode node = GetNodeFromResXReader (convertableResXWithoutAssemblyName);
  101. Assert.IsNotNull (node, "#A1");
  102. string returnedType = node.GetValueTypeName (assemblyNames);
  103. Assert.AreEqual ("DummyAssembly.Convertable, " + aName, returnedType, "#A2");
  104. }
  105. [Test]
  106. public void AssemblyNameUsedEachTimeWhereOnlyFullNameInResX ()
  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. ResXDataNode node = GetNodeFromResXReader (convertableResXWithoutAssemblyName);
  112. Assert.IsNotNull (node, "#A1");
  113. string returnedName = node.GetValueTypeName (assemblyNames);
  114. Assert.AreEqual ("DummyAssembly.Convertable, " + aName, returnedName, "#A2");
  115. string nameWithNullParam = node.GetValueTypeName ((AssemblyName []) null);
  116. Assert.AreEqual ("DummyAssembly.Convertable", nameWithNullParam, "#A3");
  117. }
  118. #region initial
  119. [Test]
  120. public void NullITRSServiceOK ()
  121. {
  122. ResXDataNode node = GetNodeEmdeddedIcon ();
  123. string name = node.GetValueTypeName ((ITypeResolutionService) null);
  124. Assert.AreEqual (typeof (Icon).AssemblyQualifiedName, name);
  125. }
  126. [Test]
  127. public void WrongITRSOK ()
  128. {
  129. ResXDataNode node = GetNodeEmdeddedIcon ();
  130. string name = node.GetValueTypeName (new DummyITRS ());
  131. Assert.AreEqual (typeof (Icon).AssemblyQualifiedName, name);
  132. }
  133. [Test]
  134. public void WrongAssemblyNamesOK ()
  135. {
  136. ResXDataNode node = GetNodeEmdeddedIcon ();
  137. AssemblyName [] ass = new AssemblyName [1];
  138. ass [0] = new AssemblyName ("System.Design");
  139. string name = node.GetValueTypeName (ass);
  140. Assert.AreEqual (typeof (Icon).AssemblyQualifiedName, name);
  141. }
  142. [Test]
  143. public void NullAssemblyNamesOK ()
  144. {
  145. ResXDataNode node = GetNodeEmdeddedIcon ();
  146. string name = node.GetValueTypeName ((AssemblyName []) null);
  147. Assert.AreEqual (typeof (Icon).AssemblyQualifiedName, name);
  148. }
  149. #endregion
  150. static string typeconResXInvalidMimeTypeAndType =
  151. @"<?xml version=""1.0"" encoding=""utf-8""?>
  152. <root>
  153. <resheader name=""resmimetype"">
  154. <value>text/microsoft-resx</value>
  155. </resheader>
  156. <resheader name=""version"">
  157. <value>2.0</value>
  158. </resheader>
  159. <resheader name=""reader"">
  160. <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  161. </resheader>
  162. <resheader name=""writer"">
  163. <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  164. </resheader>
  165. <data name=""test"" type=""A.type"" mimetype=""application/xxxx"">
  166. <value>42</value>
  167. </data>
  168. </root>";
  169. static string typeconResXInvalidMimeType =
  170. @"<?xml version=""1.0"" encoding=""utf-8""?>
  171. <root>
  172. <resheader name=""resmimetype"">
  173. <value>text/microsoft-resx</value>
  174. </resheader>
  175. <resheader name=""version"">
  176. <value>2.0</value>
  177. </resheader>
  178. <resheader name=""reader"">
  179. <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  180. </resheader>
  181. <resheader name=""writer"">
  182. <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  183. </resheader>
  184. <data name=""test"" type=""System.String"" mimetype=""application/xxxx"">
  185. <value>42</value>
  186. </data>
  187. </root>";
  188. static string missingSerializableFromMissingAssembly =
  189. @"<?xml version=""1.0"" encoding=""utf-8""?>
  190. <root>
  191. <resheader name=""resmimetype"">
  192. <value>text/microsoft-resx</value>
  193. </resheader>
  194. <resheader name=""version"">
  195. <value>2.0</value>
  196. </resheader>
  197. <resheader name=""reader"">
  198. <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  199. </resheader>
  200. <resheader name=""writer"">
  201. <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  202. </resheader>
  203. <data name=""aname"" mimetype=""application/x-microsoft.net.object.binary.base64"">
  204. <value>
  205. AAEAAAD/////AQAAAAAAAAAMAgAAAEZNaXNzaW5nQXNzZW1ibHksIFZlcnNpb249MS4wLjAuMCwgQ3Vs
  206. dHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsBQEAAAAhRHVtbXlBc3NlbWJseS5NaXNzaW5n
  207. U2VyaWFsaXphYmxlAgAAAAdzZXJuYW1lCHNlcnZhbHVlAQECAAAABgMAAAAFYW5hbWUGBAAAAAZhdmFs
  208. dWUL
  209. </value>
  210. </data>
  211. </root>";
  212. static string anotherSerializableFromDummyAssembly =
  213. @"<?xml version=""1.0"" encoding=""utf-8""?>
  214. <root>
  215. <resheader name=""resmimetype"">
  216. <value>text/microsoft-resx</value>
  217. </resheader>
  218. <resheader name=""version"">
  219. <value>2.0</value>
  220. </resheader>
  221. <resheader name=""reader"">
  222. <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  223. </resheader>
  224. <resheader name=""writer"">
  225. <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  226. </resheader>
  227. <data name=""aname"" mimetype=""application/x-microsoft.net.object.binary.base64"">
  228. <value>
  229. AAEAAAD/////AQAAAAAAAAAMAgAAAEREdW1teUFzc2VtYmx5LCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1
  230. cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAIUR1bW15QXNzZW1ibHkuQW5vdGhlclNl
  231. cmlhbGl6YWJsZQIAAAAHc2VybmFtZQhzZXJ2YWx1ZQEBAgAAAAYDAAAABWFuYW1lBgQAAAAGYXZhbHVl
  232. Cw==
  233. </value>
  234. </data>
  235. </root>";
  236. static string convertableResXWithoutAssemblyName =
  237. @"<?xml version=""1.0"" encoding=""utf-8""?>
  238. <root>
  239. <resheader name=""resmimetype"">
  240. <value>text/microsoft-resx</value>
  241. </resheader>
  242. <resheader name=""version"">
  243. <value>2.0</value>
  244. </resheader>
  245. <resheader name=""reader"">
  246. <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  247. </resheader>
  248. <resheader name=""writer"">
  249. <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  250. </resheader>
  251. <data name=""test"" type=""DummyAssembly.Convertable"">
  252. <value>im a name im a value</value>
  253. </data>
  254. </root>";
  255. static string thisAssemblyConvertableResXWithoutAssemblyName =
  256. @"<?xml version=""1.0"" encoding=""utf-8""?>
  257. <root>
  258. <resheader name=""resmimetype"">
  259. <value>text/microsoft-resx</value>
  260. </resheader>
  261. <resheader name=""version"">
  262. <value>2.0</value>
  263. </resheader>
  264. <resheader name=""reader"">
  265. <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  266. </resheader>
  267. <resheader name=""writer"">
  268. <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  269. </resheader>
  270. <data name=""test"" type=""MonoTests.System.Resources.ThisAssemblyConvertable"">
  271. <value>im a name im a value</value>
  272. </data>
  273. </root>";
  274. }
  275. }
  276. #endif