XmlSchemaImporterTests.cs 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987
  1. //
  2. // System.Xml.Serialization.XmlSchemaImporterTests
  3. //
  4. // Author:
  5. // Gert Driesen ([email protected])
  6. //
  7. // (C) 2005 Novell
  8. //
  9. using System;
  10. using System.CodeDom;
  11. using System.Collections;
  12. using System.Globalization;
  13. using System.IO;
  14. using System.Xml;
  15. using System.Xml.Schema;
  16. using System.Xml.Serialization;
  17. using NUnit.Framework;
  18. using MonoTests.System.Xml.TestClasses;
  19. namespace MonoTests.System.XmlSerialization
  20. {
  21. [TestFixture]
  22. public class XmlSchemaImporterTests
  23. {
  24. private const string WsdlTypesNamespace = "http://microsoft.com/wsdl/types/";
  25. [Test]
  26. [Category ("NotWorking")]
  27. public void ImportTypeMapping_Struct ()
  28. {
  29. XmlSchemas schemas = ExportType (typeof (TimeSpan));
  30. ArrayList qnames = GetXmlQualifiedNames (schemas);
  31. Assert.AreEqual (1, qnames.Count, "#1");
  32. XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
  33. XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
  34. Assert.IsNotNull (map, "#2");
  35. Assert.AreEqual ("TimeSpan", map.ElementName, "#3");
  36. Assert.AreEqual ("NSTimeSpan", map.Namespace, "#4");
  37. Assert.AreEqual ("TimeSpan", map.TypeFullName, "#5");
  38. Assert.AreEqual ("TimeSpan", map.TypeName, "#6");
  39. }
  40. [Test]
  41. [Category ("NotWorking")] // mark it NotWorking until fixes have landed in svn
  42. public void ImportTypeMapping_XsdPrimitive_AnyType ()
  43. {
  44. XmlSchemas schemas = ExportType (typeof (object));
  45. ArrayList qnames = GetXmlQualifiedNames (schemas);
  46. Assert.AreEqual (1, qnames.Count, "#1");
  47. XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
  48. XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
  49. Assert.IsNotNull (map, "#2");
  50. Assert.AreEqual ("anyType", map.ElementName, "#3");
  51. Assert.AreEqual ("NSObject", map.Namespace, "#4");
  52. Assert.AreEqual ("System.Object", map.TypeFullName, "#5");
  53. Assert.AreEqual ("Object", map.TypeName, "#6");
  54. }
  55. [Test]
  56. [Category ("NotWorking")]
  57. public void ImportTypeMapping_XsdPrimitive_AnyURI ()
  58. {
  59. string schemaFragment = "<?xml version=\"1.0\" encoding=\"utf-16\"?>" +
  60. "<xs:schema xmlns:tns=\"NSAnyURI\" elementFormDefault=\"qualified\" targetNamespace=\"NSAnyURI\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">" +
  61. " <xs:element name=\"anyURI\" type=\"xs:anyURI\" />" +
  62. "</xs:schema>";
  63. XmlSchemas schemas = new XmlSchemas ();
  64. schemas.Add (XmlSchema.Read (new StringReader (schemaFragment), null));
  65. ArrayList qnames = GetXmlQualifiedNames (schemas);
  66. Assert.AreEqual (1, qnames.Count, "#1");
  67. XmlQualifiedName qname = (XmlQualifiedName) qnames[0];
  68. Assert.AreEqual ("anyURI", qname.Name, "#2");
  69. Assert.AreEqual ("NSAnyURI", qname.Namespace, "#3");
  70. XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
  71. XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
  72. Assert.IsNotNull (map, "#4");
  73. Assert.AreEqual ("anyURI", map.ElementName, "#5");
  74. Assert.AreEqual ("NSAnyURI", map.Namespace, "#6");
  75. Assert.AreEqual ("System.String", map.TypeFullName, "#7");
  76. Assert.AreEqual ("String", map.TypeName, "#8");
  77. }
  78. [Test]
  79. [Category ("NotWorking")]
  80. public void ImportTypeMapping_XsdPrimitive_Base64 ()
  81. {
  82. string schemaFragment = "<?xml version=\"1.0\" encoding=\"utf-16\"?>" +
  83. "<xs:schema xmlns:tns=\"NSBase64\" elementFormDefault=\"qualified\" targetNamespace=\"NSBase64\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">" +
  84. " <xs:element name=\"base64\" type=\"xs:base64\" />" +
  85. "</xs:schema>";
  86. XmlSchemas schemas = new XmlSchemas ();
  87. schemas.Add (XmlSchema.Read (new StringReader (schemaFragment), null));
  88. XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
  89. XmlTypeMapping map = importer.ImportTypeMapping (new XmlQualifiedName ("base64", "NSBase64"));
  90. Assert.IsNotNull (map, "#1");
  91. Assert.AreEqual ("base64", map.ElementName, "#2");
  92. Assert.AreEqual ("NSBase64", map.Namespace, "#3");
  93. Assert.AreEqual ("System.String", map.TypeFullName, "#4");
  94. Assert.AreEqual ("String", map.TypeName, "#5");
  95. }
  96. [Test]
  97. public void ImportTypeMapping_XsdPrimitive_Base64Binary ()
  98. {
  99. XmlSchemas schemas = ExportType (typeof (byte[]));
  100. ArrayList qnames = GetXmlQualifiedNames (schemas);
  101. Assert.AreEqual (1, qnames.Count, "#1");
  102. XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
  103. XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
  104. Assert.IsNotNull (map, "#2");
  105. Assert.AreEqual ("base64Binary", map.ElementName, "#3");
  106. Assert.AreEqual ("NSByte[]", map.Namespace, "#4");
  107. Assert.AreEqual ("System.Byte[]", map.TypeFullName, "#5");
  108. Assert.AreEqual ("Byte[]", map.TypeName, "#6");
  109. }
  110. [Test]
  111. public void ImportTypeMapping_XsdPrimitive_Boolean ()
  112. {
  113. XmlSchemas schemas = ExportType (typeof (bool));
  114. ArrayList qnames = GetXmlQualifiedNames (schemas);
  115. Assert.AreEqual (1, qnames.Count, "#1");
  116. XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
  117. XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
  118. Assert.IsNotNull (map, "#2");
  119. Assert.AreEqual ("boolean", map.ElementName, "#3");
  120. Assert.AreEqual ("NSBoolean", map.Namespace, "#4");
  121. Assert.AreEqual ("System.Boolean", map.TypeFullName, "#5");
  122. Assert.AreEqual ("Boolean", map.TypeName, "#6");
  123. }
  124. [Test]
  125. public void ImportTypeMapping_XsdPrimitive_Byte ()
  126. {
  127. XmlSchemas schemas = ExportType (typeof (sbyte));
  128. ArrayList qnames = GetXmlQualifiedNames (schemas);
  129. Assert.AreEqual (1, qnames.Count, "#1");
  130. XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
  131. XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
  132. Assert.IsNotNull (map, "#2");
  133. Assert.AreEqual ("byte", map.ElementName, "#3");
  134. Assert.AreEqual ("NSSByte", map.Namespace, "#4");
  135. Assert.AreEqual ("System.SByte", map.TypeFullName, "#5");
  136. Assert.AreEqual ("SByte", map.TypeName, "#6");
  137. }
  138. [Test]
  139. [Category ("NotWorking")]
  140. public void ImportTypeMapping_XsdPrimitive_Char ()
  141. {
  142. string schemaFragment = "<?xml version=\"1.0\" encoding=\"utf-16\"?>" +
  143. "<xs:schema xmlns:tns=\"NSChar\" elementFormDefault=\"qualified\" targetNamespace=\"NSChar\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">" +
  144. " <xs:element name=\"char\" type=\"xs:char\" />" +
  145. "</xs:schema>";
  146. XmlSchemas schemas = new XmlSchemas ();
  147. schemas.Add (XmlSchema.Read (new StringReader (schemaFragment), null));
  148. XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
  149. XmlTypeMapping map = importer.ImportTypeMapping (new XmlQualifiedName ("char", "NSChar"));
  150. Assert.IsNotNull (map, "#A1");
  151. Assert.AreEqual ("char", map.ElementName, "#A2");
  152. Assert.AreEqual ("NSChar", map.Namespace, "#A3");
  153. Assert.AreEqual ("System.String", map.TypeFullName, "#A4");
  154. Assert.AreEqual ("String", map.TypeName, "#A5");
  155. #if ONLY_1_1
  156. schemas = ExportType (typeof (char));
  157. importer = new XmlSchemaImporter (schemas);
  158. map = importer.ImportTypeMapping (new XmlQualifiedName ("char", "NSChar"));
  159. Assert.IsNotNull (map, "#B1");
  160. Assert.AreEqual ("char", map.ElementName, "#B2");
  161. Assert.AreEqual ("NSChar", map.Namespace, "#B3");
  162. Assert.AreEqual ("System.Char", map.TypeFullName, "#B4");
  163. Assert.AreEqual ("Char", map.TypeName, "#B5");
  164. #endif
  165. }
  166. [Test]
  167. [Category ("NotWorking")]
  168. public void ImportTypeMapping_XsdPrimitive_Date ()
  169. {
  170. string schemaFragment = "<?xml version=\"1.0\" encoding=\"utf-16\"?>" +
  171. "<xs:schema xmlns:tns=\"NSDate\" elementFormDefault=\"qualified\" targetNamespace=\"NSDate\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">" +
  172. " <xs:element name=\"date\" type=\"xs:date\" />" +
  173. "</xs:schema>";
  174. XmlSchemas schemas = new XmlSchemas ();
  175. schemas.Add (XmlSchema.Read (new StringReader (schemaFragment), null));
  176. ArrayList qnames = GetXmlQualifiedNames (schemas);
  177. Assert.AreEqual (1, qnames.Count, "#1");
  178. XmlQualifiedName qname = (XmlQualifiedName) qnames[0];
  179. Assert.AreEqual ("date", qname.Name, "#2");
  180. Assert.AreEqual ("NSDate", qname.Namespace, "#3");
  181. XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
  182. XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
  183. Assert.IsNotNull (map, "#4");
  184. Assert.AreEqual ("date", map.ElementName, "#5");
  185. Assert.AreEqual ("NSDate", map.Namespace, "#6");
  186. Assert.AreEqual ("System.DateTime", map.TypeFullName, "#7");
  187. Assert.AreEqual ("DateTime", map.TypeName, "#8");
  188. }
  189. [Test]
  190. public void ImportTypeMapping_XsdPrimitive_DateTime ()
  191. {
  192. XmlSchemas schemas = ExportType (typeof (DateTime));
  193. ArrayList qnames = GetXmlQualifiedNames (schemas);
  194. Assert.AreEqual (1, qnames.Count, "#1");
  195. XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
  196. XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
  197. Assert.IsNotNull (map, "#2");
  198. Assert.AreEqual ("dateTime", map.ElementName, "#3");
  199. Assert.AreEqual ("NSDateTime", map.Namespace, "#4");
  200. Assert.AreEqual ("System.DateTime", map.TypeFullName, "#5");
  201. Assert.AreEqual ("DateTime", map.TypeName, "#6");
  202. }
  203. [Test]
  204. public void ImportTypeMapping_XsdPrimitive_Decimal ()
  205. {
  206. XmlSchemas schemas = ExportType (typeof (decimal));
  207. ArrayList qnames = GetXmlQualifiedNames (schemas);
  208. Assert.AreEqual (1, qnames.Count, "#1");
  209. XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
  210. XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
  211. Assert.IsNotNull (map, "#2");
  212. Assert.AreEqual ("decimal", map.ElementName, "#3");
  213. Assert.AreEqual ("NSDecimal", map.Namespace, "#4");
  214. Assert.AreEqual ("System.Decimal", map.TypeFullName, "#5");
  215. Assert.AreEqual ("Decimal", map.TypeName, "#6");
  216. }
  217. [Test]
  218. public void ImportTypeMapping_XsdPrimitive_Double ()
  219. {
  220. XmlSchemas schemas = ExportType (typeof (double));
  221. ArrayList qnames = GetXmlQualifiedNames (schemas);
  222. Assert.AreEqual (1, qnames.Count, "#1");
  223. XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
  224. XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
  225. Assert.IsNotNull (map, "#2");
  226. Assert.AreEqual ("double", map.ElementName, "#3");
  227. Assert.AreEqual ("NSDouble", map.Namespace, "#4");
  228. Assert.AreEqual ("System.Double", map.TypeFullName, "#5");
  229. Assert.AreEqual ("Double", map.TypeName, "#6");
  230. }
  231. [Test]
  232. [Category ("NotWorking")]
  233. public void ImportTypeMapping_XsdPrimitive_Duration ()
  234. {
  235. string schemaFragment = "<?xml version=\"1.0\" encoding=\"utf-16\"?>" +
  236. "<xs:schema xmlns:tns=\"NSDuration\" elementFormDefault=\"qualified\" targetNamespace=\"NSDuration\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">" +
  237. " <xs:element name=\"duration\" type=\"xs:duration\" />" +
  238. "</xs:schema>";
  239. XmlSchemas schemas = new XmlSchemas ();
  240. schemas.Add (XmlSchema.Read (new StringReader (schemaFragment), null));
  241. ArrayList qnames = GetXmlQualifiedNames (schemas);
  242. Assert.AreEqual (1, qnames.Count, "#1");
  243. XmlQualifiedName qname = (XmlQualifiedName) qnames[0];
  244. Assert.AreEqual ("duration", qname.Name, "#2");
  245. Assert.AreEqual ("NSDuration", qname.Namespace, "#3");
  246. XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
  247. XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
  248. Assert.IsNotNull (map, "#4");
  249. Assert.AreEqual ("duration", map.ElementName, "#5");
  250. Assert.AreEqual ("NSDuration", map.Namespace, "#6");
  251. Assert.AreEqual ("System.String", map.TypeFullName, "#7");
  252. Assert.AreEqual ("String", map.TypeName, "#8");
  253. }
  254. [Test]
  255. [Category ("NotWorking")]
  256. public void ImportTypeMapping_XsdPrimitive_ENTITIES ()
  257. {
  258. string schemaFragment = "<?xml version=\"1.0\" encoding=\"utf-16\"?>" +
  259. "<xs:schema xmlns:tns=\"NSENTITIES\" elementFormDefault=\"qualified\" targetNamespace=\"NSENTITIES\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">" +
  260. " <xs:element name=\"ENTITIES\" type=\"xs:ENTITIES\" />" +
  261. "</xs:schema>";
  262. XmlSchemas schemas = new XmlSchemas ();
  263. schemas.Add (XmlSchema.Read (new StringReader (schemaFragment), null));
  264. ArrayList qnames = GetXmlQualifiedNames (schemas);
  265. Assert.AreEqual (1, qnames.Count, "#1");
  266. XmlQualifiedName qname = (XmlQualifiedName) qnames[0];
  267. Assert.AreEqual ("ENTITIES", qname.Name, "#2");
  268. Assert.AreEqual ("NSENTITIES", qname.Namespace, "#3");
  269. XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
  270. XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
  271. Assert.IsNotNull (map, "#4");
  272. Assert.AreEqual ("ENTITIES", map.ElementName, "#5");
  273. Assert.AreEqual ("NSENTITIES", map.Namespace, "#6");
  274. Assert.AreEqual ("System.String", map.TypeFullName, "#7");
  275. Assert.AreEqual ("String", map.TypeName, "#8");
  276. }
  277. [Test]
  278. [Category ("NotWorking")]
  279. public void ImportTypeMapping_XsdPrimitive_ENTITY ()
  280. {
  281. string schemaFragment = "<?xml version=\"1.0\" encoding=\"utf-16\"?>" +
  282. "<xs:schema xmlns:tns=\"NSENTITY\" elementFormDefault=\"qualified\" targetNamespace=\"NSENTITY\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">" +
  283. " <xs:element name=\"ENTITY\" type=\"xs:ENTITY\" />" +
  284. "</xs:schema>";
  285. XmlSchemas schemas = new XmlSchemas ();
  286. schemas.Add (XmlSchema.Read (new StringReader (schemaFragment), null));
  287. ArrayList qnames = GetXmlQualifiedNames (schemas);
  288. Assert.AreEqual (1, qnames.Count, "#1");
  289. XmlQualifiedName qname = (XmlQualifiedName) qnames[0];
  290. Assert.AreEqual ("ENTITY", qname.Name, "#2");
  291. Assert.AreEqual ("NSENTITY", qname.Namespace, "#3");
  292. XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
  293. XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
  294. Assert.IsNotNull (map, "#4");
  295. Assert.AreEqual ("ENTITY", map.ElementName, "#5");
  296. Assert.AreEqual ("NSENTITY", map.Namespace, "#6");
  297. Assert.AreEqual ("System.String", map.TypeFullName, "#7");
  298. Assert.AreEqual ("String", map.TypeName, "#8");
  299. }
  300. [Test]
  301. public void ImportTypeMapping_XsdPrimitive_Float ()
  302. {
  303. XmlSchemas schemas = ExportType (typeof (float));
  304. ArrayList qnames = GetXmlQualifiedNames (schemas);
  305. Assert.AreEqual (1, qnames.Count, "#1");
  306. XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
  307. XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
  308. Assert.IsNotNull (map, "#2");
  309. Assert.AreEqual ("float", map.ElementName, "#3");
  310. Assert.AreEqual ("NSSingle", map.Namespace, "#4");
  311. Assert.AreEqual ("System.Single", map.TypeFullName, "#5");
  312. Assert.AreEqual ("Single", map.TypeName, "#6");
  313. }
  314. [Test]
  315. [Category ("NotWorking")]
  316. public void ImportTypeMapping_XsdPrimitive_GDay ()
  317. {
  318. string schemaFragment = "<?xml version=\"1.0\" encoding=\"utf-16\"?>" +
  319. "<xs:schema xmlns:tns=\"NSGDay\" elementFormDefault=\"qualified\" targetNamespace=\"NSGDay\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">" +
  320. " <xs:element name=\"gDay\" type=\"xs:gDay\" />" +
  321. "</xs:schema>";
  322. XmlSchemas schemas = new XmlSchemas ();
  323. schemas.Add (XmlSchema.Read (new StringReader (schemaFragment), null));
  324. ArrayList qnames = GetXmlQualifiedNames (schemas);
  325. Assert.AreEqual (1, qnames.Count, "#1");
  326. XmlQualifiedName qname = (XmlQualifiedName) qnames[0];
  327. Assert.AreEqual ("gDay", qname.Name, "#2");
  328. Assert.AreEqual ("NSGDay", qname.Namespace, "#3");
  329. XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
  330. XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
  331. Assert.IsNotNull (map, "#4");
  332. Assert.AreEqual ("gDay", map.ElementName, "#5");
  333. Assert.AreEqual ("NSGDay", map.Namespace, "#6");
  334. Assert.AreEqual ("System.String", map.TypeFullName, "#7");
  335. Assert.AreEqual ("String", map.TypeName, "#8");
  336. }
  337. [Test]
  338. [Category ("NotWorking")]
  339. public void ImportTypeMapping_XsdPrimitive_GMonthDay ()
  340. {
  341. string schemaFragment = "<?xml version=\"1.0\" encoding=\"utf-16\"?>" +
  342. "<xs:schema xmlns:tns=\"NSGMonthDay\" elementFormDefault=\"qualified\" targetNamespace=\"NSGMonthDay\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">" +
  343. " <xs:element name=\"gMonthDay\" type=\"xs:gMonthDay\" />" +
  344. "</xs:schema>";
  345. XmlSchemas schemas = new XmlSchemas ();
  346. schemas.Add (XmlSchema.Read (new StringReader (schemaFragment), null));
  347. ArrayList qnames = GetXmlQualifiedNames (schemas);
  348. Assert.AreEqual (1, qnames.Count, "#1");
  349. XmlQualifiedName qname = (XmlQualifiedName) qnames[0];
  350. Assert.AreEqual ("gMonthDay", qname.Name, "#2");
  351. Assert.AreEqual ("NSGMonthDay", qname.Namespace, "#3");
  352. XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
  353. XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
  354. Assert.IsNotNull (map, "#4");
  355. Assert.AreEqual ("gMonthDay", map.ElementName, "#5");
  356. Assert.AreEqual ("NSGMonthDay", map.Namespace, "#6");
  357. Assert.AreEqual ("System.String", map.TypeFullName, "#7");
  358. Assert.AreEqual ("String", map.TypeName, "#8");
  359. }
  360. [Test]
  361. [Category ("NotWorking")]
  362. public void ImportTypeMapping_XsdPrimitive_Guid ()
  363. {
  364. string schemaFragment = "<?xml version=\"1.0\" encoding=\"utf-16\"?>" +
  365. "<xs:schema xmlns:tns=\"NSGuid\" elementFormDefault=\"qualified\" targetNamespace=\"NSGuid\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">" +
  366. " <xs:element name=\"guid\" type=\"xs:guid\" />" +
  367. "</xs:schema>";
  368. XmlSchemas schemas = new XmlSchemas ();
  369. schemas.Add (XmlSchema.Read (new StringReader (schemaFragment), null));
  370. XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
  371. XmlTypeMapping map = importer.ImportTypeMapping (new XmlQualifiedName ("guid", "NSGuid"));
  372. Assert.IsNotNull (map, "#A1");
  373. Assert.AreEqual ("guid", map.ElementName, "#A2");
  374. Assert.AreEqual ("NSGuid", map.Namespace, "#A3");
  375. Assert.AreEqual ("System.String", map.TypeFullName, "#A4");
  376. Assert.AreEqual ("String", map.TypeName, "#A5");
  377. #if ONLY_1_1
  378. schemas = ExportType (typeof (Guid));
  379. importer = new XmlSchemaImporter (schemas);
  380. map = importer.ImportTypeMapping (new XmlQualifiedName ("guid", "NSGuid"));
  381. Assert.IsNotNull (map, "#B1");
  382. Assert.AreEqual ("guid", map.ElementName, "#B2");
  383. Assert.AreEqual ("NSGuid", map.Namespace, "#B3");
  384. Assert.AreEqual ("System.Guid", map.TypeFullName, "#B4");
  385. Assert.AreEqual ("Guid", map.TypeName, "#B5");
  386. #endif
  387. }
  388. [Test]
  389. [Category ("NotWorking")]
  390. public void ImportTypeMapping_XsdPrimitive_GYear ()
  391. {
  392. string schemaFragment = "<?xml version=\"1.0\" encoding=\"utf-16\"?>" +
  393. "<xs:schema xmlns:tns=\"NSGYear\" elementFormDefault=\"qualified\" targetNamespace=\"NSGYear\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">" +
  394. " <xs:element name=\"gYear\" type=\"xs:gYear\" />" +
  395. "</xs:schema>";
  396. XmlSchemas schemas = new XmlSchemas ();
  397. schemas.Add (XmlSchema.Read (new StringReader (schemaFragment), null));
  398. ArrayList qnames = GetXmlQualifiedNames (schemas);
  399. Assert.AreEqual (1, qnames.Count, "#1");
  400. XmlQualifiedName qname = (XmlQualifiedName) qnames[0];
  401. Assert.AreEqual ("gYear", qname.Name, "#2");
  402. Assert.AreEqual ("NSGYear", qname.Namespace, "#3");
  403. XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
  404. XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
  405. Assert.IsNotNull (map, "#4");
  406. Assert.AreEqual ("gYear", map.ElementName, "#5");
  407. Assert.AreEqual ("NSGYear", map.Namespace, "#6");
  408. Assert.AreEqual ("System.String", map.TypeFullName, "#7");
  409. Assert.AreEqual ("String", map.TypeName, "#8");
  410. }
  411. [Test]
  412. [Category ("NotWorking")]
  413. public void ImportTypeMapping_XsdPrimitive_GYearMonth ()
  414. {
  415. string schemaFragment = "<?xml version=\"1.0\" encoding=\"utf-16\"?>" +
  416. "<xs:schema xmlns:tns=\"NSGYearMonth\" elementFormDefault=\"qualified\" targetNamespace=\"NSGYearMonth\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">" +
  417. " <xs:element name=\"gYearMonth\" type=\"xs:gYearMonth\" />" +
  418. "</xs:schema>";
  419. XmlSchemas schemas = new XmlSchemas ();
  420. schemas.Add (XmlSchema.Read (new StringReader (schemaFragment), null));
  421. ArrayList qnames = GetXmlQualifiedNames (schemas);
  422. Assert.AreEqual (1, qnames.Count, "#1");
  423. XmlQualifiedName qname = (XmlQualifiedName) qnames[0];
  424. Assert.AreEqual ("gYearMonth", qname.Name, "#2");
  425. Assert.AreEqual ("NSGYearMonth", qname.Namespace, "#3");
  426. XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
  427. XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
  428. Assert.IsNotNull (map, "#4");
  429. Assert.AreEqual ("gYearMonth", map.ElementName, "#5");
  430. Assert.AreEqual ("NSGYearMonth", map.Namespace, "#6");
  431. Assert.AreEqual ("System.String", map.TypeFullName, "#7");
  432. Assert.AreEqual ("String", map.TypeName, "#8");
  433. }
  434. [Test]
  435. [Category ("NotWorking")]
  436. public void ImportTypeMapping_XsdPrimitive_HexBinary ()
  437. {
  438. string schemaFragment = "<?xml version=\"1.0\" encoding=\"utf-16\"?>" +
  439. "<xs:schema xmlns:tns=\"NSHexBinary\" elementFormDefault=\"qualified\" targetNamespace=\"NSHexBinary\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">" +
  440. " <xs:element name=\"hexBinary\" type=\"xs:hexBinary\" />" +
  441. "</xs:schema>";
  442. XmlSchemas schemas = new XmlSchemas ();
  443. schemas.Add (XmlSchema.Read (new StringReader (schemaFragment), null));
  444. ArrayList qnames = GetXmlQualifiedNames (schemas);
  445. Assert.AreEqual (1, qnames.Count, "#1");
  446. XmlQualifiedName qname = (XmlQualifiedName) qnames[0];
  447. Assert.AreEqual ("hexBinary", qname.Name, "#2");
  448. Assert.AreEqual ("NSHexBinary", qname.Namespace, "#3");
  449. XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
  450. XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
  451. Assert.IsNotNull (map, "#4");
  452. Assert.AreEqual ("hexBinary", map.ElementName, "#5");
  453. Assert.AreEqual ("NSHexBinary", map.Namespace, "#6");
  454. Assert.AreEqual ("System.Byte[]", map.TypeFullName, "#7");
  455. Assert.AreEqual ("Byte[]", map.TypeName, "#8");
  456. }
  457. [Test]
  458. [Category ("NotWorking")]
  459. public void ImportTypeMapping_XsdPrimitive_IDREFS ()
  460. {
  461. string schemaFragment = "<?xml version=\"1.0\" encoding=\"utf-16\"?>" +
  462. "<xs:schema xmlns:tns=\"NSIDREFS\" elementFormDefault=\"qualified\" targetNamespace=\"NSIDREFS\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">" +
  463. " <xs:element name=\"IDREFS\" type=\"xs:IDREFS\" />" +
  464. "</xs:schema>";
  465. XmlSchemas schemas = new XmlSchemas ();
  466. schemas.Add (XmlSchema.Read (new StringReader (schemaFragment), null));
  467. ArrayList qnames = GetXmlQualifiedNames (schemas);
  468. Assert.AreEqual (1, qnames.Count, "#1");
  469. XmlQualifiedName qname = (XmlQualifiedName) qnames[0];
  470. Assert.AreEqual ("IDREFS", qname.Name, "#2");
  471. Assert.AreEqual ("NSIDREFS", qname.Namespace, "#3");
  472. XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
  473. XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
  474. Assert.IsNotNull (map, "#4");
  475. Assert.AreEqual ("IDREFS", map.ElementName, "#5");
  476. Assert.AreEqual ("NSIDREFS", map.Namespace, "#6");
  477. Assert.AreEqual ("System.String", map.TypeFullName, "#7");
  478. Assert.AreEqual ("String", map.TypeName, "#8");
  479. }
  480. [Test]
  481. public void ImportTypeMapping_XsdPrimitive_Int ()
  482. {
  483. XmlSchemas schemas = ExportType (typeof (int));
  484. ArrayList qnames = GetXmlQualifiedNames (schemas);
  485. Assert.AreEqual (1, qnames.Count, "#1");
  486. XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
  487. XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
  488. Assert.IsNotNull (map, "#2");
  489. Assert.AreEqual ("int", map.ElementName, "#3");
  490. Assert.AreEqual ("NSInt32", map.Namespace, "#4");
  491. Assert.AreEqual ("System.Int32", map.TypeFullName, "#5");
  492. Assert.AreEqual ("Int32", map.TypeName, "#6");
  493. }
  494. [Test]
  495. [Category ("NotWorking")]
  496. public void ImportTypeMapping_XsdPrimitive_Integer ()
  497. {
  498. string schemaFragment = "<?xml version=\"1.0\" encoding=\"utf-16\"?>" +
  499. "<xs:schema xmlns:tns=\"NSInteger\" elementFormDefault=\"qualified\" targetNamespace=\"NSInteger\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">" +
  500. " <xs:element name=\"integer\" type=\"xs:integer\" />" +
  501. "</xs:schema>";
  502. XmlSchemas schemas = new XmlSchemas ();
  503. schemas.Add (XmlSchema.Read (new StringReader (schemaFragment), null));
  504. ArrayList qnames = GetXmlQualifiedNames (schemas);
  505. Assert.AreEqual (1, qnames.Count, "#1");
  506. XmlQualifiedName qname = (XmlQualifiedName) qnames[0];
  507. Assert.AreEqual ("integer", qname.Name, "#2");
  508. Assert.AreEqual ("NSInteger", qname.Namespace, "#3");
  509. XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
  510. XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
  511. Assert.IsNotNull (map, "#4");
  512. Assert.AreEqual ("integer", map.ElementName, "#5");
  513. Assert.AreEqual ("NSInteger", map.Namespace, "#6");
  514. Assert.AreEqual ("System.String", map.TypeFullName, "#7");
  515. Assert.AreEqual ("String", map.TypeName, "#8");
  516. }
  517. [Test]
  518. public void ImportTypeMapping_XsdPrimitive_Long ()
  519. {
  520. XmlSchemas schemas = ExportType (typeof (long));
  521. ArrayList qnames = GetXmlQualifiedNames (schemas);
  522. Assert.AreEqual (1, qnames.Count, "#1");
  523. XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
  524. XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
  525. Assert.IsNotNull (map, "#2");
  526. Assert.AreEqual ("long", map.ElementName, "#3");
  527. Assert.AreEqual ("NSInt64", map.Namespace, "#4");
  528. Assert.AreEqual ("System.Int64", map.TypeFullName, "#5");
  529. Assert.AreEqual ("Int64", map.TypeName, "#6");
  530. }
  531. [Test]
  532. [Category ("NotWorking")]
  533. public void ImportTypeMapping_XsdPrimitive_Month ()
  534. {
  535. string schemaFragment = "<?xml version=\"1.0\" encoding=\"utf-16\"?>" +
  536. "<xs:schema xmlns:tns=\"NSMonth\" elementFormDefault=\"qualified\" targetNamespace=\"NSMonth\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">" +
  537. " <xs:element name=\"month\" type=\"xs:month\" />" +
  538. "</xs:schema>";
  539. XmlSchemas schemas = new XmlSchemas ();
  540. schemas.Add (XmlSchema.Read (new StringReader (schemaFragment), null));
  541. XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
  542. XmlTypeMapping map = importer.ImportTypeMapping (new XmlQualifiedName ("month", "NSMonth"));
  543. Assert.IsNotNull (map, "#4");
  544. Assert.AreEqual ("month", map.ElementName, "#5");
  545. Assert.AreEqual ("NSMonth", map.Namespace, "#6");
  546. Assert.AreEqual ("System.String", map.TypeFullName, "#7");
  547. Assert.AreEqual ("String", map.TypeName, "#8");
  548. }
  549. [Test]
  550. public void ImportTypeMapping_XsdPrimitive_QName ()
  551. {
  552. XmlSchemas schemas = ExportType (typeof (XmlQualifiedName));
  553. ArrayList qnames = GetXmlQualifiedNames (schemas);
  554. Assert.AreEqual (1, qnames.Count, "#1");
  555. XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
  556. XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
  557. Assert.IsNotNull (map, "#2");
  558. Assert.AreEqual ("QName", map.ElementName, "#3");
  559. Assert.AreEqual ("NSXmlQualifiedName", map.Namespace, "#4");
  560. Assert.AreEqual ("System.Xml.XmlQualifiedName", map.TypeFullName, "#5");
  561. Assert.AreEqual ("XmlQualifiedName", map.TypeName, "#6");
  562. }
  563. [Test]
  564. public void ImportTypeMapping_XsdPrimitive_Short ()
  565. {
  566. XmlSchemas schemas = ExportType (typeof (short));
  567. ArrayList qnames = GetXmlQualifiedNames (schemas);
  568. Assert.AreEqual (1, qnames.Count, "#1");
  569. XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
  570. XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
  571. Assert.IsNotNull (map, "#2");
  572. Assert.AreEqual ("short", map.ElementName, "#3");
  573. Assert.AreEqual ("NSInt16", map.Namespace, "#4");
  574. Assert.AreEqual ("System.Int16", map.TypeFullName, "#5");
  575. Assert.AreEqual ("Int16", map.TypeName, "#6");
  576. }
  577. [Test]
  578. public void ImportTypeMapping_XsdPrimitive_String ()
  579. {
  580. XmlSchemas schemas = ExportType (typeof (string));
  581. ArrayList qnames = GetXmlQualifiedNames (schemas);
  582. Assert.AreEqual (1, qnames.Count, "#1");
  583. XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
  584. XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
  585. Assert.IsNotNull (map, "#2");
  586. Assert.AreEqual ("string", map.ElementName, "#3");
  587. Assert.AreEqual ("NSString", map.Namespace, "#4");
  588. Assert.AreEqual ("System.String", map.TypeFullName, "#5");
  589. Assert.AreEqual ("String", map.TypeName, "#6");
  590. }
  591. [Test]
  592. [Category ("NotWorking")]
  593. public void ImportTypeMapping_XsdPrimitive_Time ()
  594. {
  595. string schemaFragment = "<?xml version=\"1.0\" encoding=\"utf-16\"?>" +
  596. "<xs:schema xmlns:tns=\"NSTime\" elementFormDefault=\"qualified\" targetNamespace=\"NSTime\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">" +
  597. " <xs:element name=\"time\" type=\"xs:time\" />" +
  598. "</xs:schema>";
  599. XmlSchemas schemas = new XmlSchemas ();
  600. schemas.Add (XmlSchema.Read (new StringReader (schemaFragment), null));
  601. ArrayList qnames = GetXmlQualifiedNames (schemas);
  602. Assert.AreEqual (1, qnames.Count, "#1");
  603. XmlQualifiedName qname = (XmlQualifiedName) qnames[0];
  604. Assert.AreEqual ("time", qname.Name, "#2");
  605. Assert.AreEqual ("NSTime", qname.Namespace, "#3");
  606. XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
  607. XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
  608. Assert.IsNotNull (map, "#4");
  609. Assert.AreEqual ("time", map.ElementName, "#5");
  610. Assert.AreEqual ("NSTime", map.Namespace, "#6");
  611. Assert.AreEqual ("System.DateTime", map.TypeFullName, "#7");
  612. Assert.AreEqual ("DateTime", map.TypeName, "#8");
  613. }
  614. [Test]
  615. [Category ("NotWorking")]
  616. public void ImportTypeMapping_XsdPrimitive_TimeInstant ()
  617. {
  618. string schemaFragment = "<?xml version=\"1.0\" encoding=\"utf-16\"?>" +
  619. "<xs:schema xmlns:tns=\"NSTimeInstant\" elementFormDefault=\"qualified\" targetNamespace=\"NSTimeInstant\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">" +
  620. " <xs:element name=\"timeInstant\" type=\"xs:timeInstant\" />" +
  621. "</xs:schema>";
  622. XmlSchemas schemas = new XmlSchemas ();
  623. schemas.Add (XmlSchema.Read (new StringReader (schemaFragment), null));
  624. XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
  625. XmlTypeMapping map = importer.ImportTypeMapping (new XmlQualifiedName ("timeInstant", "NSTimeInstant"));
  626. Assert.IsNotNull (map, "#4");
  627. Assert.AreEqual ("timeInstant", map.ElementName, "#5");
  628. Assert.AreEqual ("NSTimeInstant", map.Namespace, "#6");
  629. Assert.AreEqual ("System.String", map.TypeFullName, "#7");
  630. Assert.AreEqual ("String", map.TypeName, "#8");
  631. }
  632. [Test]
  633. [Category ("NotWorking")]
  634. public void ImportTypeMapping_XsdPrimitive_TimePeriod ()
  635. {
  636. string schemaFragment = "<?xml version=\"1.0\" encoding=\"utf-16\"?>" +
  637. "<xs:schema xmlns:tns=\"NSTimePeriod\" elementFormDefault=\"qualified\" targetNamespace=\"NSTimePeriod\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">" +
  638. " <xs:element name=\"timePeriod\" type=\"xs:timePeriod\" />" +
  639. "</xs:schema>";
  640. XmlSchemas schemas = new XmlSchemas ();
  641. schemas.Add (XmlSchema.Read (new StringReader (schemaFragment), null));
  642. XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
  643. XmlTypeMapping map = importer.ImportTypeMapping (new XmlQualifiedName ("timePeriod", "NSTimePeriod"));
  644. Assert.IsNotNull (map, "#4");
  645. Assert.AreEqual ("timePeriod", map.ElementName, "#5");
  646. Assert.AreEqual ("NSTimePeriod", map.Namespace, "#6");
  647. Assert.AreEqual ("System.String", map.TypeFullName, "#7");
  648. Assert.AreEqual ("String", map.TypeName, "#8");
  649. }
  650. [Test]
  651. public void ImportTypeMapping_XsdPrimitive_UnsignedByte ()
  652. {
  653. XmlSchemas schemas = ExportType (typeof (byte));
  654. ArrayList qnames = GetXmlQualifiedNames (schemas);
  655. Assert.AreEqual (1, qnames.Count, "#1");
  656. XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
  657. XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
  658. Assert.IsNotNull (map, "#2");
  659. Assert.AreEqual ("unsignedByte", map.ElementName, "#3");
  660. Assert.AreEqual ("NSByte", map.Namespace, "#4");
  661. Assert.AreEqual ("System.Byte", map.TypeFullName, "#5");
  662. Assert.AreEqual ("Byte", map.TypeName, "#6");
  663. }
  664. [Test]
  665. public void ImportTypeMapping_XsdPrimitive_UnsignedInt ()
  666. {
  667. XmlSchemas schemas = ExportType (typeof (uint));
  668. ArrayList qnames = GetXmlQualifiedNames (schemas);
  669. Assert.AreEqual (1, qnames.Count, "#1");
  670. XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
  671. XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
  672. Assert.IsNotNull (map, "#2");
  673. Assert.AreEqual ("unsignedInt", map.ElementName, "#3");
  674. Assert.AreEqual ("NSUInt32", map.Namespace, "#4");
  675. Assert.AreEqual ("System.UInt32", map.TypeFullName, "#5");
  676. Assert.AreEqual ("UInt32", map.TypeName, "#6");
  677. }
  678. [Test]
  679. public void ImportTypeMapping_XsdPrimitive_UnsignedLong ()
  680. {
  681. XmlSchemas schemas = ExportType (typeof (ulong));
  682. ArrayList qnames = GetXmlQualifiedNames (schemas);
  683. Assert.AreEqual (1, qnames.Count, "#1");
  684. XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
  685. XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
  686. Assert.IsNotNull (map, "#2");
  687. Assert.AreEqual ("unsignedLong", map.ElementName, "#3");
  688. Assert.AreEqual ("NSUInt64", map.Namespace, "#4");
  689. Assert.AreEqual ("System.UInt64", map.TypeFullName, "#5");
  690. Assert.AreEqual ("UInt64", map.TypeName, "#6");
  691. }
  692. [Test]
  693. public void ImportTypeMapping_XsdPrimitive_UnsignedShort ()
  694. {
  695. XmlSchemas schemas = ExportType (typeof (ushort));
  696. ArrayList qnames = GetXmlQualifiedNames (schemas);
  697. Assert.AreEqual (1, qnames.Count, "#1");
  698. XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
  699. XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
  700. Assert.IsNotNull (map, "#2");
  701. Assert.AreEqual ("unsignedShort", map.ElementName, "#3");
  702. Assert.AreEqual ("NSUInt16", map.Namespace, "#4");
  703. Assert.AreEqual ("System.UInt16", map.TypeFullName, "#5");
  704. Assert.AreEqual ("UInt16", map.TypeName, "#6");
  705. }
  706. [Test]
  707. public void ImportTypeMapping_EnumSimpleContent ()
  708. {
  709. string schemaFragment = "<?xml version=\"1.0\" encoding=\"utf-16\"?>" +
  710. "<s:schema xmlns:tns=\"NSDate\" elementFormDefault=\"qualified\" targetNamespace=\"NSDate\" xmlns:s=\"http://www.w3.org/2001/XMLSchema\">";
  711. schemaFragment += " <s:element name=\"trans\" type=\"tns:TranslationStatus\" />";
  712. schemaFragment += " <s:complexType name=\"TranslationStatus\">";
  713. schemaFragment += " <s:simpleContent>";
  714. schemaFragment += " <s:extension base=\"tns:StatusType\">";
  715. schemaFragment += " <s:attribute name=\"Language\" type=\"s:int\" use=\"required\" />";
  716. schemaFragment += " </s:extension>";
  717. schemaFragment += " </s:simpleContent>";
  718. schemaFragment += " </s:complexType>";
  719. schemaFragment += " <s:simpleType name=\"StatusType\">";
  720. schemaFragment += " <s:restriction base=\"s:string\">";
  721. schemaFragment += " <s:enumeration value=\"Untouched\" />";
  722. schemaFragment += " <s:enumeration value=\"Touched\" />";
  723. schemaFragment += " <s:enumeration value=\"Complete\" />";
  724. schemaFragment += " <s:enumeration value=\"None\" />";
  725. schemaFragment += " </s:restriction>";
  726. schemaFragment += " </s:simpleType>";
  727. schemaFragment += "</s:schema>";
  728. XmlSchemas schemas = new XmlSchemas ();
  729. schemas.Add (XmlSchema.Read (new StringReader (schemaFragment), null));
  730. ArrayList qnames = GetXmlQualifiedNames (schemas);
  731. Assert.AreEqual (1, qnames.Count, "#1");
  732. XmlQualifiedName qname = (XmlQualifiedName) qnames[0];
  733. Assert.AreEqual ("trans", qname.Name, "#2");
  734. Assert.AreEqual ("NSDate", qname.Namespace, "#3");
  735. XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
  736. XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
  737. Assert.IsNotNull (map, "#4");
  738. Assert.AreEqual ("trans", map.ElementName, "#5");
  739. Assert.AreEqual ("NSDate", map.Namespace, "#6");
  740. Assert.AreEqual ("TranslationStatus", map.TypeFullName, "#7");
  741. Assert.AreEqual ("TranslationStatus", map.TypeName, "#8");
  742. CodeNamespace codeNamespace = ExportCode (map);
  743. Assert.IsNotNull (codeNamespace);
  744. CodeTypeDeclaration type = FindType (codeNamespace, "TranslationStatus");
  745. Assert.IsNotNull (type, "#9");
  746. CodeMemberField field = FindMember (type, "Value") as CodeMemberField;
  747. Assert.IsNotNull (field, "#10");
  748. Assert.AreEqual ("StatusType", field.Type.BaseType, "#11");
  749. field = FindMember (type, "Language") as CodeMemberField;
  750. Assert.IsNotNull (field, "#12");
  751. Assert.AreEqual ("System.Int32", field.Type.BaseType, "#13");
  752. }
  753. CodeNamespace ExportCode (XmlTypeMapping map)
  754. {
  755. CodeNamespace codeNamespace = new CodeNamespace ();
  756. XmlCodeExporter exp = new XmlCodeExporter (codeNamespace);
  757. exp.ExportTypeMapping (map);
  758. return codeNamespace;
  759. }
  760. CodeTypeDeclaration FindType (CodeNamespace codeNamespace, string name)
  761. {
  762. foreach (CodeTypeDeclaration t in codeNamespace.Types)
  763. if (t.Name == name)
  764. return t;
  765. return null;
  766. }
  767. CodeTypeMember FindMember (CodeTypeDeclaration type, string name)
  768. {
  769. foreach (CodeTypeMember m in type.Members)
  770. if (m.Name == name)
  771. return m;
  772. return null;
  773. }
  774. private static XmlSchemas ExportType (Type type)
  775. {
  776. XmlReflectionImporter ri = new XmlReflectionImporter ("NS" + type.Name);
  777. XmlSchemas schemas = new XmlSchemas ();
  778. XmlSchemaExporter sx = new XmlSchemaExporter (schemas);
  779. XmlTypeMapping tm = ri.ImportTypeMapping (type);
  780. sx.ExportTypeMapping (tm);
  781. return schemas;
  782. }
  783. private static ArrayList GetXmlQualifiedNames (XmlSchemas schemas)
  784. {
  785. ArrayList qnames = new ArrayList ();
  786. foreach (XmlSchema schema in schemas) {
  787. if (!schema.IsCompiled) schema.Compile (null);
  788. foreach (XmlSchemaObject ob in schema.Items)
  789. if (ob is XmlSchemaElement)
  790. qnames.Add (((XmlSchemaElement) ob).QualifiedName);
  791. }
  792. return qnames;
  793. }
  794. }
  795. }