XmlSchemaImporterTests.cs 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522
  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. public void ImportTypeMapping_XsdPrimitive_Boolean ()
  57. {
  58. XmlSchemas schemas = ExportType (typeof (bool));
  59. ArrayList qnames = GetXmlQualifiedNames (schemas);
  60. Assert.AreEqual (1, qnames.Count, "#1");
  61. XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
  62. XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
  63. Assert.IsNotNull (map, "#2");
  64. Assert.AreEqual ("boolean", map.ElementName, "#3");
  65. Assert.AreEqual ("NSBoolean", map.Namespace, "#4");
  66. Assert.AreEqual ("System.Boolean", map.TypeFullName, "#5");
  67. Assert.AreEqual ("Boolean", map.TypeName, "#6");
  68. }
  69. [Test]
  70. public void ImportTypeMapping_XsdPrimitive_Short ()
  71. {
  72. XmlSchemas schemas = ExportType (typeof (short));
  73. ArrayList qnames = GetXmlQualifiedNames (schemas);
  74. Assert.AreEqual (1, qnames.Count, "#1");
  75. XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
  76. XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
  77. Assert.IsNotNull (map, "#2");
  78. Assert.AreEqual ("short", map.ElementName, "#3");
  79. Assert.AreEqual ("NSInt16", map.Namespace, "#4");
  80. Assert.AreEqual ("System.Int16", map.TypeFullName, "#5");
  81. Assert.AreEqual ("Int16", map.TypeName, "#6");
  82. }
  83. [Test]
  84. public void ImportTypeMapping_XsdPrimitive_UnsignedShort ()
  85. {
  86. XmlSchemas schemas = ExportType (typeof (ushort));
  87. ArrayList qnames = GetXmlQualifiedNames (schemas);
  88. Assert.AreEqual (1, qnames.Count, "#1");
  89. XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
  90. XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
  91. Assert.IsNotNull (map, "#2");
  92. Assert.AreEqual ("unsignedShort", map.ElementName, "#3");
  93. Assert.AreEqual ("NSUInt16", map.Namespace, "#4");
  94. Assert.AreEqual ("System.UInt16", map.TypeFullName, "#5");
  95. Assert.AreEqual ("UInt16", map.TypeName, "#6");
  96. }
  97. [Test]
  98. public void ImportTypeMapping_XsdPrimitive_Int ()
  99. {
  100. XmlSchemas schemas = ExportType (typeof (int));
  101. ArrayList qnames = GetXmlQualifiedNames (schemas);
  102. Assert.AreEqual (1, qnames.Count, "#1");
  103. XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
  104. XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
  105. Assert.IsNotNull (map, "#2");
  106. Assert.AreEqual ("int", map.ElementName, "#3");
  107. Assert.AreEqual ("NSInt32", map.Namespace, "#4");
  108. Assert.AreEqual ("System.Int32", map.TypeFullName, "#5");
  109. Assert.AreEqual ("Int32", map.TypeName, "#6");
  110. }
  111. [Test]
  112. public void ImportTypeMapping_XsdPrimitive_UnsignedInt ()
  113. {
  114. XmlSchemas schemas = ExportType (typeof (uint));
  115. ArrayList qnames = GetXmlQualifiedNames (schemas);
  116. Assert.AreEqual (1, qnames.Count, "#1");
  117. XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
  118. XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
  119. Assert.IsNotNull (map, "#2");
  120. Assert.AreEqual ("unsignedInt", map.ElementName, "#3");
  121. Assert.AreEqual ("NSUInt32", map.Namespace, "#4");
  122. Assert.AreEqual ("System.UInt32", map.TypeFullName, "#5");
  123. Assert.AreEqual ("UInt32", map.TypeName, "#6");
  124. }
  125. [Test]
  126. public void ImportTypeMapping_XsdPrimitive_Long ()
  127. {
  128. XmlSchemas schemas = ExportType (typeof (long));
  129. ArrayList qnames = GetXmlQualifiedNames (schemas);
  130. Assert.AreEqual (1, qnames.Count, "#1");
  131. XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
  132. XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
  133. Assert.IsNotNull (map, "#2");
  134. Assert.AreEqual ("long", map.ElementName, "#3");
  135. Assert.AreEqual ("NSInt64", map.Namespace, "#4");
  136. Assert.AreEqual ("System.Int64", map.TypeFullName, "#5");
  137. Assert.AreEqual ("Int64", map.TypeName, "#6");
  138. }
  139. [Test]
  140. public void ImportTypeMapping_XsdPrimitive_UnsignedLong ()
  141. {
  142. XmlSchemas schemas = ExportType (typeof (ulong));
  143. ArrayList qnames = GetXmlQualifiedNames (schemas);
  144. Assert.AreEqual (1, qnames.Count, "#1");
  145. XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
  146. XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
  147. Assert.IsNotNull (map, "#2");
  148. Assert.AreEqual ("unsignedLong", map.ElementName, "#3");
  149. Assert.AreEqual ("NSUInt64", map.Namespace, "#4");
  150. Assert.AreEqual ("System.UInt64", map.TypeFullName, "#5");
  151. Assert.AreEqual ("UInt64", map.TypeName, "#6");
  152. }
  153. [Test]
  154. public void ImportTypeMapping_XsdPrimitive_Float ()
  155. {
  156. XmlSchemas schemas = ExportType (typeof (float));
  157. ArrayList qnames = GetXmlQualifiedNames (schemas);
  158. Assert.AreEqual (1, qnames.Count, "#1");
  159. XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
  160. XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
  161. Assert.IsNotNull (map, "#2");
  162. Assert.AreEqual ("float", map.ElementName, "#3");
  163. Assert.AreEqual ("NSSingle", map.Namespace, "#4");
  164. Assert.AreEqual ("System.Single", map.TypeFullName, "#5");
  165. Assert.AreEqual ("Single", map.TypeName, "#6");
  166. }
  167. [Test]
  168. public void ImportTypeMapping_XsdPrimitive_Double ()
  169. {
  170. XmlSchemas schemas = ExportType (typeof (double));
  171. ArrayList qnames = GetXmlQualifiedNames (schemas);
  172. Assert.AreEqual (1, qnames.Count, "#1");
  173. XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
  174. XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
  175. Assert.IsNotNull (map, "#2");
  176. Assert.AreEqual ("double", map.ElementName, "#3");
  177. Assert.AreEqual ("NSDouble", map.Namespace, "#4");
  178. Assert.AreEqual ("System.Double", map.TypeFullName, "#5");
  179. Assert.AreEqual ("Double", map.TypeName, "#6");
  180. }
  181. [Test]
  182. public void ImportTypeMapping_XsdPrimitive_DateTime ()
  183. {
  184. XmlSchemas schemas = ExportType (typeof (DateTime));
  185. ArrayList qnames = GetXmlQualifiedNames (schemas);
  186. Assert.AreEqual (1, qnames.Count, "#1");
  187. XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
  188. XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
  189. Assert.IsNotNull (map, "#2");
  190. Assert.AreEqual ("dateTime", map.ElementName, "#3");
  191. Assert.AreEqual ("NSDateTime", map.Namespace, "#4");
  192. Assert.AreEqual ("System.DateTime", map.TypeFullName, "#5");
  193. Assert.AreEqual ("DateTime", map.TypeName, "#6");
  194. }
  195. [Test]
  196. public void ImportTypeMapping_XsdPrimitive_Decimal ()
  197. {
  198. XmlSchemas schemas = ExportType (typeof (decimal));
  199. ArrayList qnames = GetXmlQualifiedNames (schemas);
  200. Assert.AreEqual (1, qnames.Count, "#1");
  201. XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
  202. XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
  203. Assert.IsNotNull (map, "#2");
  204. Assert.AreEqual ("decimal", map.ElementName, "#3");
  205. Assert.AreEqual ("NSDecimal", map.Namespace, "#4");
  206. Assert.AreEqual ("System.Decimal", map.TypeFullName, "#5");
  207. Assert.AreEqual ("Decimal", map.TypeName, "#6");
  208. }
  209. [Test]
  210. public void ImportTypeMapping_XsdPrimitive_QName ()
  211. {
  212. XmlSchemas schemas = ExportType (typeof (XmlQualifiedName));
  213. ArrayList qnames = GetXmlQualifiedNames (schemas);
  214. Assert.AreEqual (1, qnames.Count, "#1");
  215. XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
  216. XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
  217. Assert.IsNotNull (map, "#2");
  218. Assert.AreEqual ("QName", map.ElementName, "#3");
  219. Assert.AreEqual ("NSXmlQualifiedName", map.Namespace, "#4");
  220. Assert.AreEqual ("System.Xml.XmlQualifiedName", map.TypeFullName, "#5");
  221. Assert.AreEqual ("XmlQualifiedName", map.TypeName, "#6");
  222. }
  223. [Test]
  224. public void ImportTypeMapping_XsdPrimitive_String ()
  225. {
  226. XmlSchemas schemas = ExportType (typeof (string));
  227. ArrayList qnames = GetXmlQualifiedNames (schemas);
  228. Assert.AreEqual (1, qnames.Count, "#1");
  229. XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
  230. XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
  231. Assert.IsNotNull (map, "#2");
  232. Assert.AreEqual ("string", map.ElementName, "#3");
  233. Assert.AreEqual ("NSString", map.Namespace, "#4");
  234. Assert.AreEqual ("System.String", map.TypeFullName, "#5");
  235. Assert.AreEqual ("String", map.TypeName, "#6");
  236. }
  237. [Test]
  238. [Category ("NotWorking")]
  239. [ExpectedException (typeof (XmlSchemaException))] // Type 'http://microsoft.com/wsdl/types/:guid' is not declared
  240. public void ImportTypeMapping_XsdPrimitive_Guid ()
  241. {
  242. XmlSchemas schemas = ExportType (typeof (Guid));
  243. GetXmlQualifiedNames (schemas);
  244. }
  245. [Test]
  246. public void ImportTypeMapping_XsdPrimitive_UnsignedByte ()
  247. {
  248. XmlSchemas schemas = ExportType (typeof (byte));
  249. ArrayList qnames = GetXmlQualifiedNames (schemas);
  250. Assert.AreEqual (1, qnames.Count, "#1");
  251. XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
  252. XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
  253. Assert.IsNotNull (map, "#2");
  254. Assert.AreEqual ("unsignedByte", map.ElementName, "#3");
  255. Assert.AreEqual ("NSByte", map.Namespace, "#4");
  256. Assert.AreEqual ("System.Byte", map.TypeFullName, "#5");
  257. Assert.AreEqual ("Byte", map.TypeName, "#6");
  258. }
  259. [Test]
  260. public void ImportTypeMapping_XsdPrimitive_Byte ()
  261. {
  262. XmlSchemas schemas = ExportType (typeof (sbyte));
  263. ArrayList qnames = GetXmlQualifiedNames (schemas);
  264. Assert.AreEqual (1, qnames.Count, "#1");
  265. XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
  266. XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
  267. Assert.IsNotNull (map, "#2");
  268. Assert.AreEqual ("byte", map.ElementName, "#3");
  269. Assert.AreEqual ("NSSByte", map.Namespace, "#4");
  270. Assert.AreEqual ("System.SByte", map.TypeFullName, "#5");
  271. Assert.AreEqual ("SByte", map.TypeName, "#6");
  272. }
  273. [Test]
  274. [Category ("NotWorking")]
  275. [ExpectedException (typeof (XmlSchemaException))] // Type 'http://microsoft.com/wsdl/types/:char' is not declared
  276. public void ImportTypeMapping_XsdPrimitive_Char ()
  277. {
  278. XmlSchemas schemas = ExportType (typeof (char));
  279. GetXmlQualifiedNames (schemas);
  280. }
  281. [Test]
  282. public void ImportTypeMapping_XsdPrimitive_Base64Binary ()
  283. {
  284. XmlSchemas schemas = ExportType (typeof (byte[]));
  285. ArrayList qnames = GetXmlQualifiedNames (schemas);
  286. Assert.AreEqual (1, qnames.Count, "#1");
  287. XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
  288. XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
  289. Assert.IsNotNull (map, "#2");
  290. Assert.AreEqual ("base64Binary", map.ElementName, "#3");
  291. Assert.AreEqual ("NSByte[]", map.Namespace, "#4");
  292. Assert.AreEqual ("System.Byte[]", map.TypeFullName, "#5");
  293. Assert.AreEqual ("Byte[]", map.TypeName, "#6");
  294. }
  295. [Test]
  296. [Category ("NotWorking")]
  297. public void ImportTypeMapping_XsdPrimitive_Duration ()
  298. {
  299. string schemaFragment = "<?xml version=\"1.0\" encoding=\"utf-16\"?>" +
  300. "<xs:schema xmlns:tns=\"NSDuration\" elementFormDefault=\"qualified\" targetNamespace=\"NSDuration\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">" +
  301. " <xs:element name=\"duration\" type=\"xs:duration\" />" +
  302. "</xs:schema>";
  303. XmlSchemas schemas = new XmlSchemas ();
  304. schemas.Add (XmlSchema.Read (new StringReader (schemaFragment), null));
  305. ArrayList qnames = GetXmlQualifiedNames (schemas);
  306. Assert.AreEqual (1, qnames.Count, "#1");
  307. XmlQualifiedName qname = (XmlQualifiedName) qnames[0];
  308. Assert.AreEqual ("duration", qname.Name, "#2");
  309. Assert.AreEqual ("NSDuration", qname.Namespace, "#3");
  310. XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
  311. XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
  312. Assert.IsNotNull (map, "#4");
  313. Assert.AreEqual ("duration", map.ElementName, "#5");
  314. Assert.AreEqual ("NSDuration", map.Namespace, "#6");
  315. Assert.AreEqual ("System.String", map.TypeFullName, "#7");
  316. Assert.AreEqual ("String", map.TypeName, "#8");
  317. }
  318. [Test]
  319. [Category ("NotWorking")]
  320. public void ImportTypeMapping_XsdPrimitive_Date ()
  321. {
  322. string schemaFragment = "<?xml version=\"1.0\" encoding=\"utf-16\"?>" +
  323. "<xs:schema xmlns:tns=\"NSDate\" elementFormDefault=\"qualified\" targetNamespace=\"NSDate\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">" +
  324. " <xs:element name=\"date\" type=\"xs:date\" />" +
  325. "</xs:schema>";
  326. XmlSchemas schemas = new XmlSchemas ();
  327. schemas.Add (XmlSchema.Read (new StringReader (schemaFragment), null));
  328. ArrayList qnames = GetXmlQualifiedNames (schemas);
  329. Assert.AreEqual (1, qnames.Count, "#1");
  330. XmlQualifiedName qname = (XmlQualifiedName) qnames[0];
  331. Assert.AreEqual ("date", qname.Name, "#2");
  332. Assert.AreEqual ("NSDate", qname.Namespace, "#3");
  333. XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
  334. XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
  335. Assert.IsNotNull (map, "#4");
  336. Assert.AreEqual ("date", map.ElementName, "#5");
  337. Assert.AreEqual ("NSDate", map.Namespace, "#6");
  338. Assert.AreEqual ("System.DateTime", map.TypeFullName, "#7");
  339. Assert.AreEqual ("DateTime", map.TypeName, "#8");
  340. }
  341. [Test]
  342. public void ImportTypeMapping_EnumSimpleContent ()
  343. {
  344. string schemaFragment = "<?xml version=\"1.0\" encoding=\"utf-16\"?>" +
  345. "<s:schema xmlns:tns=\"NSDate\" elementFormDefault=\"qualified\" targetNamespace=\"NSDate\" xmlns:s=\"http://www.w3.org/2001/XMLSchema\">";
  346. schemaFragment += " <s:element name=\"trans\" type=\"tns:TranslationStatus\" />";
  347. schemaFragment += " <s:complexType name=\"TranslationStatus\">";
  348. schemaFragment += " <s:simpleContent>";
  349. schemaFragment += " <s:extension base=\"tns:StatusType\">";
  350. schemaFragment += " <s:attribute name=\"Language\" type=\"s:int\" use=\"required\" />";
  351. schemaFragment += " </s:extension>";
  352. schemaFragment += " </s:simpleContent>";
  353. schemaFragment += " </s:complexType>";
  354. schemaFragment += " <s:simpleType name=\"StatusType\">";
  355. schemaFragment += " <s:restriction base=\"s:string\">";
  356. schemaFragment += " <s:enumeration value=\"Untouched\" />";
  357. schemaFragment += " <s:enumeration value=\"Touched\" />";
  358. schemaFragment += " <s:enumeration value=\"Complete\" />";
  359. schemaFragment += " <s:enumeration value=\"None\" />";
  360. schemaFragment += " </s:restriction>";
  361. schemaFragment += " </s:simpleType>";
  362. schemaFragment += "</s:schema>";
  363. XmlSchemas schemas = new XmlSchemas ();
  364. schemas.Add (XmlSchema.Read (new StringReader (schemaFragment), null));
  365. ArrayList qnames = GetXmlQualifiedNames (schemas);
  366. Assert.AreEqual (1, qnames.Count, "#1");
  367. XmlQualifiedName qname = (XmlQualifiedName) qnames[0];
  368. Assert.AreEqual ("trans", qname.Name, "#2");
  369. Assert.AreEqual ("NSDate", qname.Namespace, "#3");
  370. XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
  371. XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
  372. Assert.IsNotNull (map, "#4");
  373. Assert.AreEqual ("trans", map.ElementName, "#5");
  374. Assert.AreEqual ("NSDate", map.Namespace, "#6");
  375. Assert.AreEqual ("TranslationStatus", map.TypeFullName, "#7");
  376. Assert.AreEqual ("TranslationStatus", map.TypeName, "#8");
  377. CodeNamespace codeNamespace = ExportCode (map);
  378. Assert.IsNotNull (codeNamespace);
  379. CodeTypeDeclaration type = FindType (codeNamespace, "TranslationStatus");
  380. Assert.IsNotNull (type, "#9");
  381. CodeMemberField field = FindMember (type, "Value") as CodeMemberField;
  382. Assert.IsNotNull (field, "#10");
  383. Assert.AreEqual ("StatusType", field.Type.BaseType, "#11");
  384. field = FindMember (type, "Language") as CodeMemberField;
  385. Assert.IsNotNull (field, "#12");
  386. Assert.AreEqual ("System.Int32", field.Type.BaseType, "#13");
  387. }
  388. CodeNamespace ExportCode (XmlTypeMapping map)
  389. {
  390. CodeNamespace codeNamespace = new CodeNamespace ();
  391. XmlCodeExporter exp = new XmlCodeExporter (codeNamespace);
  392. exp.ExportTypeMapping (map);
  393. return codeNamespace;
  394. }
  395. CodeTypeDeclaration FindType (CodeNamespace codeNamespace, string name)
  396. {
  397. foreach (CodeTypeDeclaration t in codeNamespace.Types)
  398. if (t.Name == name)
  399. return t;
  400. return null;
  401. }
  402. CodeTypeMember FindMember (CodeTypeDeclaration type, string name)
  403. {
  404. foreach (CodeTypeMember m in type.Members)
  405. if (m.Name == name)
  406. return m;
  407. return null;
  408. }
  409. private static XmlSchemas ExportType (Type type)
  410. {
  411. XmlReflectionImporter ri = new XmlReflectionImporter ("NS" + type.Name);
  412. XmlSchemas schemas = new XmlSchemas ();
  413. XmlSchemaExporter sx = new XmlSchemaExporter (schemas);
  414. XmlTypeMapping tm = ri.ImportTypeMapping (type);
  415. sx.ExportTypeMapping (tm);
  416. return schemas;
  417. }
  418. private static ArrayList GetXmlQualifiedNames (XmlSchemas schemas)
  419. {
  420. ArrayList qnames = new ArrayList ();
  421. foreach (XmlSchema schema in schemas) {
  422. if (!schema.IsCompiled) schema.Compile (null);
  423. foreach (XmlSchemaObject ob in schema.Items)
  424. if (ob is XmlSchemaElement)
  425. qnames.Add (((XmlSchemaElement) ob).QualifiedName);
  426. }
  427. return qnames;
  428. }
  429. }
  430. }