XmlConvertTests.cs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309
  1. //
  2. // System.Xml.XmlConvertTests.cs
  3. //
  4. // Authors: Atsushi Enomoto ([email protected]), Jon Kessler ([email protected])
  5. //
  6. // (C) 2003 Atsushi Enomoto, Jon Kessler
  7. //
  8. using System;
  9. using System.Xml;
  10. using NUnit.Framework;
  11. namespace MonoTests.System.Xml
  12. {
  13. [TestFixture]
  14. public class XmlConvertTests : Assertion
  15. {
  16. private void AssertName (string result, string source)
  17. {
  18. AssertEquals (result,
  19. XmlConvert.EncodeName (source));
  20. }
  21. private void AssertNmToken (string result, string source)
  22. {
  23. AssertEquals (result,
  24. XmlConvert.EncodeNmToken (source));
  25. }
  26. [Test]
  27. public void DecodeName ()
  28. {
  29. AssertEquals (null, XmlConvert.DecodeName (null));
  30. AssertEquals ("", XmlConvert.DecodeName (""));
  31. AssertEquals ("Test", XmlConvert.DecodeName ("Test"));
  32. AssertEquals ("_Test", XmlConvert.DecodeName ("_Test"));
  33. AssertEquals ("_hello_friends", XmlConvert.DecodeName ("_hello_friends"));
  34. AssertEquals ("_hello friends", XmlConvert.DecodeName ("_hello friends"));
  35. AssertEquals (" ", XmlConvert.DecodeName ("_x0020_"));
  36. }
  37. [Test]
  38. public void EncodeLocalName ()
  39. {
  40. AssertNull (XmlConvert.EncodeLocalName (null));
  41. AssertEquals (String.Empty, XmlConvert.EncodeLocalName (String.Empty));
  42. AssertEquals ("Hello_x003A__x0020_", XmlConvert.EncodeLocalName ("Hello: "));
  43. AssertEquals ("Hello", XmlConvert.EncodeLocalName ("Hello"));
  44. }
  45. [Test]
  46. public void EncodeName ()
  47. {
  48. AssertNull (XmlConvert.EncodeName (null));
  49. AssertEquals (String.Empty, XmlConvert.EncodeName (String.Empty));
  50. AssertName ("Test", "Test");
  51. AssertName ("Hello_x0020_my_x0020_friends.", "Hello my friends.");
  52. AssertName ("_x0031_23", "123");
  53. AssertName ("_x005F_x0031_23", "_x0031_23");
  54. }
  55. [Test]
  56. public void EncodeNmToken ()
  57. {
  58. AssertNull (XmlConvert.EncodeNmToken (null));
  59. AssertNmToken ("Test", "Test");
  60. AssertNmToken ("Hello_x0020_my_x0020_friends.", "Hello my friends.");
  61. AssertNmToken ("123", "123");
  62. AssertNmToken ("_x005F_x0031_23", "_x0031_23");
  63. }
  64. [Test]
  65. [ExpectedException (typeof (XmlException))]
  66. public void EncodeNmTokenError ()
  67. {
  68. XmlConvert.EncodeNmToken (String.Empty);
  69. }
  70. [Test]
  71. public void ToBoolean ()
  72. {
  73. AssertEquals (true, XmlConvert.ToBoolean (" 1 "));
  74. AssertEquals (true, XmlConvert.ToBoolean (" true "));
  75. AssertEquals (false, XmlConvert.ToBoolean (" 0 "));
  76. AssertEquals (false, XmlConvert.ToBoolean (" false "));
  77. try
  78. {
  79. AssertEquals (false, XmlConvert.ToBoolean (" invalid "));
  80. }
  81. catch (FormatException)
  82. {
  83. }
  84. }
  85. [Test]
  86. public void ToByte ()
  87. {
  88. AssertEquals (255, XmlConvert.ToByte ("255"));
  89. }
  90. [Test]
  91. public void ToChar ()
  92. {
  93. AssertEquals ('x', XmlConvert.ToChar ("x"));
  94. }
  95. [Test]
  96. public void ToDateTime ()//fails on Mono
  97. {
  98. //dateTime
  99. AssertEquals (632001798000000000L, XmlConvert.ToDateTime ("2003-09-26T13:30:00").Ticks);
  100. AssertEquals (632001798000000000L, XmlConvert.ToDateTime ("2003-09-26T13:30:00.0").Ticks);
  101. AssertEquals (632001798000000000L, XmlConvert.ToDateTime ("2003-09-26T13:30:00.00").Ticks);
  102. AssertEquals (632001798000000000L, XmlConvert.ToDateTime ("2003-09-26T13:30:00.000").Ticks);
  103. AssertEquals (632001798000000000L, XmlConvert.ToDateTime ("2003-09-26T13:30:00.0000").Ticks);
  104. AssertEquals (632001798000000000L, XmlConvert.ToDateTime ("2003-09-26T13:30:00.00000").Ticks);
  105. AssertEquals (632001798000000000L, XmlConvert.ToDateTime ("2003-09-26T13:30:00.000000").Ticks);
  106. AssertEquals (632001798000000000L, XmlConvert.ToDateTime ("2003-09-26T13:30:00.0000000").Ticks);
  107. /*
  108. // These tests also failed on MS.NET
  109. AssertEquals (632001150000000000L, XmlConvert.ToDateTime ("2003-09-26T13:30:00+13:00").Ticks);
  110. AssertEquals (632001150000000000L, XmlConvert.ToDateTime ("2003-09-26T13:30:00.0+13:00").Ticks);
  111. AssertEquals (632001150000000000L, XmlConvert.ToDateTime ("2003-09-26T13:30:00.00+13:00").Ticks);
  112. AssertEquals (632001150000000000L, XmlConvert.ToDateTime ("2003-09-26T13:30:00.000+13:00").Ticks);
  113. AssertEquals (632001150000000000L, XmlConvert.ToDateTime ("2003-09-26T13:30:00.0000+13:00").Ticks);
  114. AssertEquals (632001150000000000L, XmlConvert.ToDateTime ("2003-09-26T13:30:00.00000+13:00").Ticks);
  115. AssertEquals (632001150000000000L, XmlConvert.ToDateTime ("2003-09-26T13:30:00.000000+13:00").Ticks);
  116. AssertEquals (632001150000000000L, XmlConvert.ToDateTime ("2003-09-26T13:30:00.0000000+13:00").Ticks);
  117. AssertEquals (632001618000000000L, XmlConvert.ToDateTime ("2003-09-26T13:30:00Z").Ticks);
  118. AssertEquals (632001618000000000L, XmlConvert.ToDateTime ("2003-09-26T13:30:00.0Z").Ticks);
  119. AssertEquals (632001618000000000L, XmlConvert.ToDateTime ("2003-09-26T13:30:00.00Z").Ticks);
  120. AssertEquals (632001618000000000L, XmlConvert.ToDateTime ("2003-09-26T13:30:00.000Z").Ticks);
  121. AssertEquals (632001618000000000L, XmlConvert.ToDateTime ("2003-09-26T13:30:00.0000Z").Ticks);
  122. AssertEquals (632001618000000000L, XmlConvert.ToDateTime ("2003-09-26T13:30:00.00000Z").Ticks);
  123. AssertEquals (632001618000000000L, XmlConvert.ToDateTime ("2003-09-26T13:30:00.000000Z").Ticks);
  124. AssertEquals (632001618000000000L, XmlConvert.ToDateTime ("2003-09-26T13:30:00.0000000Z").Ticks);
  125. */
  126. //time
  127. DateTime t1 = new DateTime (DateTime.Today.Year, 1, 1);
  128. t1 = DateTime.Today + new TimeSpan (12,0,0);
  129. AssertEquals (t1.Ticks, XmlConvert.ToDateTime ("12:00:00").Ticks);
  130. AssertEquals (t1.Ticks, XmlConvert.ToDateTime ("12:00:00.0").Ticks);
  131. AssertEquals (t1.Ticks, XmlConvert.ToDateTime ("12:00:00.00").Ticks);
  132. AssertEquals (t1.Ticks, XmlConvert.ToDateTime ("12:00:00.000").Ticks);
  133. AssertEquals (t1.Ticks, XmlConvert.ToDateTime ("12:00:00.0000").Ticks);
  134. AssertEquals (t1.Ticks, XmlConvert.ToDateTime ("12:00:00.00000").Ticks);
  135. AssertEquals (t1.Ticks, XmlConvert.ToDateTime ("12:00:00.000000").Ticks);
  136. AssertEquals (t1.Ticks, XmlConvert.ToDateTime ("12:00:00.0000000").Ticks);
  137. //AssertEquals (t1.Ticks, XmlConvert.ToDateTime ("12:00:00+13:00").Ticks);//doesn't work on .NET
  138. //AssertEquals (t1.Ticks, XmlConvert.ToDateTime ("12:00:00.f+13:00").Ticks);//doesn't work on .NET
  139. //AssertEquals (t1.Ticks, XmlConvert.ToDateTime ("12:00:00.ff+13:00").Ticks);//doesn't work on .NET
  140. //AssertEquals (t1.Ticks, XmlConvert.ToDateTime ("12:00:00.fff+13:00").Ticks);//doesn't work on .NET
  141. //AssertEquals (t1.Ticks, XmlConvert.ToDateTime ("12:00:00.ffff+13:00").Ticks);//doesn't work on .NET
  142. //AssertEquals (t1.Ticks, XmlConvert.ToDateTime ("12:00:00.fffff+13:00").Ticks);//doesn't work on .NET
  143. //AssertEquals (t1.Ticks, XmlConvert.ToDateTime ("12:00:00.ffffff+13:00").Ticks);//doesn't work on .NET
  144. //AssertEquals (t1.Ticks, XmlConvert.ToDateTime ("12:00:00.fffffff+13:00").Ticks);//doesn't work on .NET
  145. //AssertEquals (t1.Ticks, XmlConvert.ToDateTime ("12:00:00Z").Ticks);//doesn't work on .NET
  146. //AssertEquals (t1.Ticks, XmlConvert.ToDateTime ("12:00:00.fZ").Ticks);//doesn't work on .NET
  147. //AssertEquals (t1.Ticks, XmlConvert.ToDateTime ("12:00:00.ffZ").Ticks);//doesn't work on .NET
  148. //AssertEquals (t1.Ticks, XmlConvert.ToDateTime ("12:00:00.fffZ").Ticks);//doesn't work on .NET
  149. //AssertEquals (t1.Ticks, XmlConvert.ToDateTime ("12:00:00.ffffZ").Ticks);//doesn't work on .NET
  150. //AssertEquals (t1.Ticks, XmlConvert.ToDateTime ("12:00:00.fffffZ").Ticks);//doesn't work on .NET
  151. //AssertEquals (t1.Ticks, XmlConvert.ToDateTime ("12:00:00.ffffffZ").Ticks);//doesn't work on .NET
  152. //AssertEquals (t1.Ticks, XmlConvert.ToDateTime ("12:00:00.fffffffZ").Ticks);//doesn't work on .NET
  153. //date
  154. AssertEquals (632001312000000000L, XmlConvert.ToDateTime ("2003-09-26").Ticks);
  155. // AssertEquals (632000664000000000L, XmlConvert.ToDateTime ("2003-09-26+13:00").Ticks);
  156. // AssertEquals (632001132000000000L, XmlConvert.ToDateTime ("2003-09-26Z").Ticks);
  157. //gYearMonth
  158. AssertEquals (631979712000000000L, XmlConvert.ToDateTime ("2003-09").Ticks);
  159. // AssertEquals (631979064000000000L, XmlConvert.ToDateTime ("2003-09+13:00").Ticks);
  160. // AssertEquals (631979532000000000L, XmlConvert.ToDateTime ("2003-09Z").Ticks);
  161. //gYear
  162. AssertEquals (631769760000000000L, XmlConvert.ToDateTime ("2003").Ticks);
  163. // AssertEquals (631769076000000000L, XmlConvert.ToDateTime ("2003+13:00").Ticks);
  164. // AssertEquals (631769544000000000L, XmlConvert.ToDateTime ("2003Z").Ticks);
  165. //gMonthDay
  166. // Don't try locale-dependent test
  167. // AssertEquals (632001312000000000L, XmlConvert.ToDateTime ("--09-26").Ticks);//shouldn't have a hardcoded value
  168. // AssertEquals (632000664000000000L, XmlConvert.ToDateTime ("--09-26+13:00").Ticks);//shouldn't have a hardcoded value
  169. // AssertEquals (632001132000000000L, XmlConvert.ToDateTime ("--09-26Z").Ticks);//shouldn't have a hardcoded value
  170. //gDay
  171. // Don't try locale-dependent test
  172. // AssertEquals (631791360000000000L, XmlConvert.ToDateTime ("---26").Ticks);//shouldn't have a hardcoded value
  173. // AssertEquals (631790676000000000L, XmlConvert.ToDateTime ("---26+13:00").Ticks);//shouldn't have a hardcoded value
  174. // AssertEquals (631791144000000000L, XmlConvert.ToDateTime ("---26Z").Ticks);//shouldn't have a hardcoded value
  175. try
  176. {
  177. AssertEquals (45L, XmlConvert.ToDateTime (";ljdfas;kl").Ticks);
  178. }
  179. catch (Exception)
  180. {
  181. }
  182. }
  183. [Test]
  184. public void ToDecimal ()
  185. {
  186. AssertEquals (1.987, XmlConvert.ToDecimal ("1.987"));
  187. }
  188. [Test]
  189. public void ToDouble ()
  190. {
  191. AssertEquals (1.0d/0.0d, XmlConvert.ToDouble ("INF"));
  192. AssertEquals (-1.0d/0.0d, XmlConvert.ToDouble ("-INF"));
  193. AssertEquals (0.0d/0.0d, XmlConvert.ToDouble ("NaN"));
  194. AssertEquals (789324, XmlConvert.ToDouble ("789324"));
  195. }
  196. [Test]
  197. public void ToGuid ()
  198. {
  199. AssertEquals (new Guid ("ca761232-ed42-11ce-bacd-00aa0057b223"), XmlConvert.ToGuid ("ca761232-ed42-11ce-bacd-00aa0057b223"));
  200. }
  201. [Test]
  202. public void ToInt16 ()//not done
  203. {
  204. }
  205. [Test]
  206. public void ToInt32 ()//not done
  207. {
  208. }
  209. [Test]
  210. public void ToInt64 ()//not done
  211. {
  212. }
  213. [Test]
  214. public void ToSByte ()//not done
  215. {
  216. }
  217. [Test]
  218. public void ToSingle ()//not done
  219. {
  220. }
  221. [Test]
  222. public void ToStringTest ()//not done
  223. {
  224. // Don't include TimeZone value for test value.
  225. string dateString =
  226. XmlConvert.ToString (new DateTime (2003, 5, 5));
  227. AssertEquals (33, dateString.Length);
  228. AssertEquals ("2003-05-05T00:00:00.0000000", dateString.Substring (0, 27));
  229. }
  230. [Test]
  231. public void ToTimeSpan ()//not done
  232. {
  233. }
  234. [Test]
  235. public void ToUInt16 ()//not done
  236. {
  237. }
  238. [Test]
  239. public void ToUInt32 ()//not done
  240. {
  241. }
  242. [Test]
  243. public void ToUInt64 ()//not done
  244. {
  245. }
  246. [Test]
  247. public void VerifyName ()//not done
  248. {
  249. }
  250. [Test]
  251. public void VerifyNCName ()
  252. {
  253. AssertEquals ("foo", XmlConvert.VerifyNCName ("foo"));
  254. try {
  255. XmlConvert.VerifyNCName ("?foo");
  256. Fail ();
  257. } catch (XmlException) {}
  258. try {
  259. XmlConvert.VerifyNCName (":foo");
  260. Fail ();
  261. } catch (XmlException) {}
  262. try {
  263. XmlConvert.VerifyNCName ("foo:bar");
  264. Fail ();
  265. } catch (XmlException) {}
  266. try {
  267. XmlConvert.VerifyNCName ("foo:bar:baz");
  268. Fail ();
  269. } catch (XmlException) {}
  270. }
  271. }
  272. }