2 // System.Xml.Serialization.XmlSchemaImporterTests
5 // Gert Driesen (drieseng@users.sourceforge.net)
6 // Atsushi Enomoto (atsushi@ximian.com)
8 // (C) 2005 Gert Driesen
9 // Copyright (C) 2006-2007 Novell, Inc.
13 // Permission is hereby granted, free of charge, to any person obtaining
14 // a copy of this software and associated documentation files (the
15 // "Software"), to deal in the Software without restriction, including
16 // without limitation the rights to use, copy, modify, merge, publish,
17 // distribute, sublicense, and/or sell copies of the Software, and to
18 // permit persons to whom the Software is furnished to do so, subject to
19 // the following conditions:
21 // The above copyright notice and this permission notice shall be
22 // included in all copies or substantial portions of the Software.
24 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
25 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
26 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
27 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
28 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
29 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
30 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
35 using System.CodeDom.Compiler;
36 using System.Collections;
37 using System.Globalization;
40 using System.Xml.Schema;
41 using System.Xml.Serialization;
43 using Microsoft.CSharp;
45 using NUnit.Framework;
47 using MonoTests.System.Xml.TestClasses;
49 namespace MonoTests.System.Xml.Serialization
52 public class XmlSchemaImporterTests
54 private const string WsdlTypesNamespace = "http://microsoft.com/wsdl/types/";
57 [Category ("NotWorking")]
58 public void ImportTypeMapping_Struct ()
60 XmlSchemas schemas = ExportType (typeof (TimeSpan));
61 ArrayList qnames = GetXmlQualifiedNames (schemas);
62 Assert.AreEqual (1, qnames.Count, "#1");
64 XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
65 XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
67 Assert.IsNotNull (map, "#2");
68 Assert.AreEqual ("TimeSpan", map.ElementName, "#3");
69 Assert.AreEqual ("NSTimeSpan", map.Namespace, "#4");
70 Assert.AreEqual ("TimeSpan", map.TypeFullName, "#5");
71 Assert.AreEqual ("TimeSpan", map.TypeName, "#6");
75 [Category ("NotWorking")] // mark it NotWorking until fixes have landed in svn
76 public void ImportTypeMapping_XsdPrimitive_AnyType ()
78 XmlSchemas schemas = ExportType (typeof (object));
79 ArrayList qnames = GetXmlQualifiedNames (schemas);
80 Assert.AreEqual (1, qnames.Count, "#1");
82 XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
83 XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
85 Assert.IsNotNull (map, "#2");
86 Assert.AreEqual ("anyType", map.ElementName, "#3");
87 Assert.AreEqual ("NSObject", map.Namespace, "#4");
88 Assert.AreEqual ("System.Object", map.TypeFullName, "#5");
89 Assert.AreEqual ("Object", map.TypeName, "#6");
93 public void ImportTypeMapping_XsdPrimitive_AnyURI ()
95 string schemaFragment = "<?xml version=\"1.0\" encoding=\"utf-16\"?>" +
96 "<xs:schema xmlns:tns=\"NSAnyURI\" elementFormDefault=\"qualified\" targetNamespace=\"NSAnyURI\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">" +
97 " <xs:element name=\"anyURI\" type=\"xs:anyURI\" />" +
100 XmlSchemas schemas = new XmlSchemas ();
101 schemas.Add (XmlSchema.Read (new StringReader (schemaFragment), null));
103 ArrayList qnames = GetXmlQualifiedNames (schemas);
104 Assert.AreEqual (1, qnames.Count, "#1");
106 XmlQualifiedName qname = (XmlQualifiedName) qnames[0];
108 Assert.AreEqual ("anyURI", qname.Name, "#2");
109 Assert.AreEqual ("NSAnyURI", qname.Namespace, "#3");
111 XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
112 XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
114 Assert.IsNotNull (map, "#4");
115 Assert.AreEqual ("anyURI", map.ElementName, "#5");
116 Assert.AreEqual ("NSAnyURI", map.Namespace, "#6");
117 Assert.AreEqual ("System.String", map.TypeFullName, "#7");
118 Assert.AreEqual ("String", map.TypeName, "#8");
122 [Category ("NotWorking")]
123 public void ImportTypeMapping_XsdPrimitive_Base64 ()
125 string schemaFragment = "<?xml version=\"1.0\" encoding=\"utf-16\"?>" +
126 "<xs:schema xmlns:tns=\"NSBase64\" elementFormDefault=\"qualified\" targetNamespace=\"NSBase64\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">" +
127 " <xs:element name=\"base64\" type=\"xs:base64\" />" +
130 XmlSchemas schemas = new XmlSchemas ();
131 schemas.Add (XmlSchema.Read (new StringReader (schemaFragment), null));
132 XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
133 XmlTypeMapping map = importer.ImportTypeMapping (new XmlQualifiedName ("base64", "NSBase64"));
135 Assert.IsNotNull (map, "#1");
136 Assert.AreEqual ("base64", map.ElementName, "#2");
137 Assert.AreEqual ("NSBase64", map.Namespace, "#3");
138 Assert.AreEqual ("System.String", map.TypeFullName, "#4");
139 Assert.AreEqual ("String", map.TypeName, "#5");
143 public void ImportTypeMapping_XsdPrimitive_Base64Binary ()
145 XmlSchemas schemas = ExportType (typeof (byte[]));
146 ArrayList qnames = GetXmlQualifiedNames (schemas);
147 Assert.AreEqual (1, qnames.Count, "#1");
149 XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
150 XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
152 Assert.IsNotNull (map, "#2");
153 Assert.AreEqual ("base64Binary", map.ElementName, "#3");
154 Assert.AreEqual ("NSByte[]", map.Namespace, "#4");
155 Assert.AreEqual ("System.Byte[]", map.TypeFullName, "#5");
156 Assert.AreEqual ("Byte[]", map.TypeName, "#6");
160 public void ImportTypeMapping_XsdPrimitive_Boolean ()
162 XmlSchemas schemas = ExportType (typeof (bool));
163 ArrayList qnames = GetXmlQualifiedNames (schemas);
164 Assert.AreEqual (1, qnames.Count, "#1");
166 XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
167 XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
169 Assert.IsNotNull (map, "#2");
170 Assert.AreEqual ("boolean", map.ElementName, "#3");
171 Assert.AreEqual ("NSBoolean", map.Namespace, "#4");
172 Assert.AreEqual ("System.Boolean", map.TypeFullName, "#5");
173 Assert.AreEqual ("Boolean", map.TypeName, "#6");
177 public void ImportTypeMapping_XsdPrimitive_Byte ()
179 XmlSchemas schemas = ExportType (typeof (sbyte));
180 ArrayList qnames = GetXmlQualifiedNames (schemas);
181 Assert.AreEqual (1, qnames.Count, "#1");
183 XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
184 XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
186 Assert.IsNotNull (map, "#2");
187 Assert.AreEqual ("byte", map.ElementName, "#3");
188 Assert.AreEqual ("NSSByte", map.Namespace, "#4");
189 Assert.AreEqual ("System.SByte", map.TypeFullName, "#5");
190 Assert.AreEqual ("SByte", map.TypeName, "#6");
194 [Category ("NotWorking")]
195 public void ImportTypeMapping_XsdPrimitive_Char ()
197 string schemaFragment = "<?xml version=\"1.0\" encoding=\"utf-16\"?>" +
198 "<xs:schema xmlns:tns=\"NSChar\" elementFormDefault=\"qualified\" targetNamespace=\"NSChar\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">" +
199 " <xs:element name=\"char\" type=\"xs:char\" />" +
202 XmlSchemas schemas = new XmlSchemas ();
203 schemas.Add (XmlSchema.Read (new StringReader (schemaFragment), null));
204 XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
205 XmlTypeMapping map = importer.ImportTypeMapping (new XmlQualifiedName ("char", "NSChar"));
207 Assert.IsNotNull (map, "#A1");
208 Assert.AreEqual ("char", map.ElementName, "#A2");
209 Assert.AreEqual ("NSChar", map.Namespace, "#A3");
210 Assert.AreEqual ("System.String", map.TypeFullName, "#A4");
211 Assert.AreEqual ("String", map.TypeName, "#A5");
214 schemas = ExportType (typeof (char));
215 importer = new XmlSchemaImporter (schemas);
216 map = importer.ImportTypeMapping (new XmlQualifiedName ("char", "NSChar"));
218 Assert.IsNotNull (map, "#B1");
219 Assert.AreEqual ("char", map.ElementName, "#B2");
220 Assert.AreEqual ("NSChar", map.Namespace, "#B3");
221 Assert.AreEqual ("System.Char", map.TypeFullName, "#B4");
222 Assert.AreEqual ("Char", map.TypeName, "#B5");
227 public void ImportTypeMapping_XsdPrimitive_Date ()
229 string schemaFragment = "<?xml version=\"1.0\" encoding=\"utf-16\"?>" +
230 "<xs:schema xmlns:tns=\"NSDate\" elementFormDefault=\"qualified\" targetNamespace=\"NSDate\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">" +
231 " <xs:element name=\"date\" type=\"xs:date\" />" +
234 XmlSchemas schemas = new XmlSchemas ();
235 schemas.Add (XmlSchema.Read (new StringReader (schemaFragment), null));
237 ArrayList qnames = GetXmlQualifiedNames (schemas);
238 Assert.AreEqual (1, qnames.Count, "#1");
240 XmlQualifiedName qname = (XmlQualifiedName) qnames[0];
242 Assert.AreEqual ("date", qname.Name, "#2");
243 Assert.AreEqual ("NSDate", qname.Namespace, "#3");
245 XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
246 XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
248 Assert.IsNotNull (map, "#4");
249 Assert.AreEqual ("date", map.ElementName, "#5");
250 Assert.AreEqual ("NSDate", map.Namespace, "#6");
251 Assert.AreEqual ("System.DateTime", map.TypeFullName, "#7");
252 Assert.AreEqual ("DateTime", map.TypeName, "#8");
256 public void ImportTypeMapping_XsdPrimitive_DateTime ()
258 XmlSchemas schemas = ExportType (typeof (DateTime));
259 ArrayList qnames = GetXmlQualifiedNames (schemas);
260 Assert.AreEqual (1, qnames.Count, "#1");
262 XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
263 XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
265 Assert.IsNotNull (map, "#2");
266 Assert.AreEqual ("dateTime", map.ElementName, "#3");
267 Assert.AreEqual ("NSDateTime", map.Namespace, "#4");
268 Assert.AreEqual ("System.DateTime", map.TypeFullName, "#5");
269 Assert.AreEqual ("DateTime", map.TypeName, "#6");
273 public void ImportTypeMapping_XsdPrimitive_Decimal ()
275 XmlSchemas schemas = ExportType (typeof (decimal));
276 ArrayList qnames = GetXmlQualifiedNames (schemas);
277 Assert.AreEqual (1, qnames.Count, "#1");
279 XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
280 XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
282 Assert.IsNotNull (map, "#2");
283 Assert.AreEqual ("decimal", map.ElementName, "#3");
284 Assert.AreEqual ("NSDecimal", map.Namespace, "#4");
285 Assert.AreEqual ("System.Decimal", map.TypeFullName, "#5");
286 Assert.AreEqual ("Decimal", map.TypeName, "#6");
290 public void ImportTypeMapping_XsdPrimitive_Double ()
292 XmlSchemas schemas = ExportType (typeof (double));
293 ArrayList qnames = GetXmlQualifiedNames (schemas);
294 Assert.AreEqual (1, qnames.Count, "#1");
296 XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
297 XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
299 Assert.IsNotNull (map, "#2");
300 Assert.AreEqual ("double", map.ElementName, "#3");
301 Assert.AreEqual ("NSDouble", map.Namespace, "#4");
302 Assert.AreEqual ("System.Double", map.TypeFullName, "#5");
303 Assert.AreEqual ("Double", map.TypeName, "#6");
307 [Category ("NotWorking")]
308 public void ImportTypeMapping_XsdPrimitive_Duration ()
310 string schemaFragment = "<?xml version=\"1.0\" encoding=\"utf-16\"?>" +
311 "<xs:schema xmlns:tns=\"NSDuration\" elementFormDefault=\"qualified\" targetNamespace=\"NSDuration\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">" +
312 " <xs:element name=\"duration\" type=\"xs:duration\" />" +
315 XmlSchemas schemas = new XmlSchemas ();
316 schemas.Add (XmlSchema.Read (new StringReader (schemaFragment), null));
318 ArrayList qnames = GetXmlQualifiedNames (schemas);
319 Assert.AreEqual (1, qnames.Count, "#1");
321 XmlQualifiedName qname = (XmlQualifiedName) qnames[0];
323 Assert.AreEqual ("duration", qname.Name, "#2");
324 Assert.AreEqual ("NSDuration", qname.Namespace, "#3");
326 XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
327 XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
329 Assert.IsNotNull (map, "#4");
330 Assert.AreEqual ("duration", map.ElementName, "#5");
331 Assert.AreEqual ("NSDuration", map.Namespace, "#6");
332 Assert.AreEqual ("System.String", map.TypeFullName, "#7");
333 Assert.AreEqual ("String", map.TypeName, "#8");
337 public void ImportTypeMapping_XsdPrimitive_ENTITIES ()
339 string schemaFragment = "<?xml version=\"1.0\" encoding=\"utf-16\"?>" +
340 "<xs:schema xmlns:tns=\"NSENTITIES\" elementFormDefault=\"qualified\" targetNamespace=\"NSENTITIES\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">" +
341 " <xs:element name=\"ENTITIES\" type=\"xs:ENTITIES\" />" +
344 XmlSchemas schemas = new XmlSchemas ();
345 schemas.Add (XmlSchema.Read (new StringReader (schemaFragment), null));
347 ArrayList qnames = GetXmlQualifiedNames (schemas);
348 Assert.AreEqual (1, qnames.Count, "#1");
350 XmlQualifiedName qname = (XmlQualifiedName) qnames[0];
352 Assert.AreEqual ("ENTITIES", qname.Name, "#2");
353 Assert.AreEqual ("NSENTITIES", qname.Namespace, "#3");
355 XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
356 XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
358 Assert.IsNotNull (map, "#4");
359 Assert.AreEqual ("ENTITIES", map.ElementName, "#5");
360 Assert.AreEqual ("NSENTITIES", map.Namespace, "#6");
361 Assert.AreEqual ("System.String", map.TypeFullName, "#7");
362 Assert.AreEqual ("String", map.TypeName, "#8");
366 public void ImportTypeMapping_XsdPrimitive_ENTITY ()
368 string schemaFragment = "<?xml version=\"1.0\" encoding=\"utf-16\"?>" +
369 "<xs:schema xmlns:tns=\"NSENTITY\" elementFormDefault=\"qualified\" targetNamespace=\"NSENTITY\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">" +
370 " <xs:element name=\"ENTITY\" type=\"xs:ENTITY\" />" +
373 XmlSchemas schemas = new XmlSchemas ();
374 schemas.Add (XmlSchema.Read (new StringReader (schemaFragment), null));
376 ArrayList qnames = GetXmlQualifiedNames (schemas);
377 Assert.AreEqual (1, qnames.Count, "#1");
379 XmlQualifiedName qname = (XmlQualifiedName) qnames[0];
381 Assert.AreEqual ("ENTITY", qname.Name, "#2");
382 Assert.AreEqual ("NSENTITY", qname.Namespace, "#3");
384 XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
385 XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
387 Assert.IsNotNull (map, "#4");
388 Assert.AreEqual ("ENTITY", map.ElementName, "#5");
389 Assert.AreEqual ("NSENTITY", map.Namespace, "#6");
390 Assert.AreEqual ("System.String", map.TypeFullName, "#7");
391 Assert.AreEqual ("String", map.TypeName, "#8");
395 public void ImportTypeMapping_XsdPrimitive_Float ()
397 XmlSchemas schemas = ExportType (typeof (float));
398 ArrayList qnames = GetXmlQualifiedNames (schemas);
399 Assert.AreEqual (1, qnames.Count, "#1");
401 XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
402 XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
404 Assert.IsNotNull (map, "#2");
405 Assert.AreEqual ("float", map.ElementName, "#3");
406 Assert.AreEqual ("NSSingle", map.Namespace, "#4");
407 Assert.AreEqual ("System.Single", map.TypeFullName, "#5");
408 Assert.AreEqual ("Single", map.TypeName, "#6");
412 public void ImportTypeMapping_XsdPrimitive_GDay ()
414 string schemaFragment = "<?xml version=\"1.0\" encoding=\"utf-16\"?>" +
415 "<xs:schema xmlns:tns=\"NSGDay\" elementFormDefault=\"qualified\" targetNamespace=\"NSGDay\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">" +
416 " <xs:element name=\"gDay\" type=\"xs:gDay\" />" +
419 XmlSchemas schemas = new XmlSchemas ();
420 schemas.Add (XmlSchema.Read (new StringReader (schemaFragment), null));
422 ArrayList qnames = GetXmlQualifiedNames (schemas);
423 Assert.AreEqual (1, qnames.Count, "#1");
425 XmlQualifiedName qname = (XmlQualifiedName) qnames[0];
427 Assert.AreEqual ("gDay", qname.Name, "#2");
428 Assert.AreEqual ("NSGDay", qname.Namespace, "#3");
430 XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
431 XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
433 Assert.IsNotNull (map, "#4");
434 Assert.AreEqual ("gDay", map.ElementName, "#5");
435 Assert.AreEqual ("NSGDay", map.Namespace, "#6");
436 Assert.AreEqual ("System.String", map.TypeFullName, "#7");
437 Assert.AreEqual ("String", map.TypeName, "#8");
441 public void ImportTypeMapping_XsdPrimitive_GMonthDay ()
443 string schemaFragment = "<?xml version=\"1.0\" encoding=\"utf-16\"?>" +
444 "<xs:schema xmlns:tns=\"NSGMonthDay\" elementFormDefault=\"qualified\" targetNamespace=\"NSGMonthDay\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">" +
445 " <xs:element name=\"gMonthDay\" type=\"xs:gMonthDay\" />" +
448 XmlSchemas schemas = new XmlSchemas ();
449 schemas.Add (XmlSchema.Read (new StringReader (schemaFragment), null));
451 ArrayList qnames = GetXmlQualifiedNames (schemas);
452 Assert.AreEqual (1, qnames.Count, "#1");
454 XmlQualifiedName qname = (XmlQualifiedName) qnames[0];
456 Assert.AreEqual ("gMonthDay", qname.Name, "#2");
457 Assert.AreEqual ("NSGMonthDay", qname.Namespace, "#3");
459 XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
460 XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
462 Assert.IsNotNull (map, "#4");
463 Assert.AreEqual ("gMonthDay", map.ElementName, "#5");
464 Assert.AreEqual ("NSGMonthDay", map.Namespace, "#6");
465 Assert.AreEqual ("System.String", map.TypeFullName, "#7");
466 Assert.AreEqual ("String", map.TypeName, "#8");
470 [Category ("NotWorking")]
471 public void ImportTypeMapping_XsdPrimitive_Guid ()
473 string schemaFragment = "<?xml version=\"1.0\" encoding=\"utf-16\"?>" +
474 "<xs:schema xmlns:tns=\"NSGuid\" elementFormDefault=\"qualified\" targetNamespace=\"NSGuid\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">" +
475 " <xs:element name=\"guid\" type=\"xs:guid\" />" +
478 XmlSchemas schemas = new XmlSchemas ();
479 schemas.Add (XmlSchema.Read (new StringReader (schemaFragment), null));
480 XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
481 XmlTypeMapping map = importer.ImportTypeMapping (new XmlQualifiedName ("guid", "NSGuid"));
483 Assert.IsNotNull (map, "#A1");
484 Assert.AreEqual ("guid", map.ElementName, "#A2");
485 Assert.AreEqual ("NSGuid", map.Namespace, "#A3");
486 Assert.AreEqual ("System.String", map.TypeFullName, "#A4");
487 Assert.AreEqual ("String", map.TypeName, "#A5");
490 schemas = ExportType (typeof (Guid));
491 importer = new XmlSchemaImporter (schemas);
492 map = importer.ImportTypeMapping (new XmlQualifiedName ("guid", "NSGuid"));
494 Assert.IsNotNull (map, "#B1");
495 Assert.AreEqual ("guid", map.ElementName, "#B2");
496 Assert.AreEqual ("NSGuid", map.Namespace, "#B3");
497 Assert.AreEqual ("System.Guid", map.TypeFullName, "#B4");
498 Assert.AreEqual ("Guid", map.TypeName, "#B5");
503 public void ImportTypeMapping_XsdPrimitive_GYear ()
505 string schemaFragment = "<?xml version=\"1.0\" encoding=\"utf-16\"?>" +
506 "<xs:schema xmlns:tns=\"NSGYear\" elementFormDefault=\"qualified\" targetNamespace=\"NSGYear\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">" +
507 " <xs:element name=\"gYear\" type=\"xs:gYear\" />" +
510 XmlSchemas schemas = new XmlSchemas ();
511 schemas.Add (XmlSchema.Read (new StringReader (schemaFragment), null));
513 ArrayList qnames = GetXmlQualifiedNames (schemas);
514 Assert.AreEqual (1, qnames.Count, "#1");
516 XmlQualifiedName qname = (XmlQualifiedName) qnames[0];
518 Assert.AreEqual ("gYear", qname.Name, "#2");
519 Assert.AreEqual ("NSGYear", qname.Namespace, "#3");
521 XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
522 XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
524 Assert.IsNotNull (map, "#4");
525 Assert.AreEqual ("gYear", map.ElementName, "#5");
526 Assert.AreEqual ("NSGYear", map.Namespace, "#6");
527 Assert.AreEqual ("System.String", map.TypeFullName, "#7");
528 Assert.AreEqual ("String", map.TypeName, "#8");
532 public void ImportTypeMapping_XsdPrimitive_GYearMonth ()
534 string schemaFragment = "<?xml version=\"1.0\" encoding=\"utf-16\"?>" +
535 "<xs:schema xmlns:tns=\"NSGYearMonth\" elementFormDefault=\"qualified\" targetNamespace=\"NSGYearMonth\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">" +
536 " <xs:element name=\"gYearMonth\" type=\"xs:gYearMonth\" />" +
539 XmlSchemas schemas = new XmlSchemas ();
540 schemas.Add (XmlSchema.Read (new StringReader (schemaFragment), null));
542 ArrayList qnames = GetXmlQualifiedNames (schemas);
543 Assert.AreEqual (1, qnames.Count, "#1");
545 XmlQualifiedName qname = (XmlQualifiedName) qnames[0];
547 Assert.AreEqual ("gYearMonth", qname.Name, "#2");
548 Assert.AreEqual ("NSGYearMonth", qname.Namespace, "#3");
550 XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
551 XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
553 Assert.IsNotNull (map, "#4");
554 Assert.AreEqual ("gYearMonth", map.ElementName, "#5");
555 Assert.AreEqual ("NSGYearMonth", map.Namespace, "#6");
556 Assert.AreEqual ("System.String", map.TypeFullName, "#7");
557 Assert.AreEqual ("String", map.TypeName, "#8");
561 public void ImportTypeMapping_XsdPrimitive_HexBinary ()
563 string schemaFragment = "<?xml version=\"1.0\" encoding=\"utf-16\"?>" +
564 "<xs:schema xmlns:tns=\"NSHexBinary\" elementFormDefault=\"qualified\" targetNamespace=\"NSHexBinary\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">" +
565 " <xs:element name=\"hexBinary\" type=\"xs:hexBinary\" />" +
568 XmlSchemas schemas = new XmlSchemas ();
569 schemas.Add (XmlSchema.Read (new StringReader (schemaFragment), null));
571 ArrayList qnames = GetXmlQualifiedNames (schemas);
572 Assert.AreEqual (1, qnames.Count, "#1");
574 XmlQualifiedName qname = (XmlQualifiedName) qnames[0];
576 Assert.AreEqual ("hexBinary", qname.Name, "#2");
577 Assert.AreEqual ("NSHexBinary", qname.Namespace, "#3");
579 XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
580 XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
582 Assert.IsNotNull (map, "#4");
583 Assert.AreEqual ("hexBinary", map.ElementName, "#5");
584 Assert.AreEqual ("NSHexBinary", map.Namespace, "#6");
585 Assert.AreEqual ("System.Byte[]", map.TypeFullName, "#7");
586 Assert.AreEqual ("Byte[]", map.TypeName, "#8");
590 public void ImportTypeMapping_XsdPrimitive_IDREFS ()
592 string schemaFragment = "<?xml version=\"1.0\" encoding=\"utf-16\"?>" +
593 "<xs:schema xmlns:tns=\"NSIDREFS\" elementFormDefault=\"qualified\" targetNamespace=\"NSIDREFS\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">" +
594 " <xs:element name=\"IDREFS\" type=\"xs:IDREFS\" />" +
597 XmlSchemas schemas = new XmlSchemas ();
598 schemas.Add (XmlSchema.Read (new StringReader (schemaFragment), null));
600 ArrayList qnames = GetXmlQualifiedNames (schemas);
601 Assert.AreEqual (1, qnames.Count, "#1");
603 XmlQualifiedName qname = (XmlQualifiedName) qnames[0];
605 Assert.AreEqual ("IDREFS", qname.Name, "#2");
606 Assert.AreEqual ("NSIDREFS", qname.Namespace, "#3");
608 XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
609 XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
611 Assert.IsNotNull (map, "#4");
612 Assert.AreEqual ("IDREFS", map.ElementName, "#5");
613 Assert.AreEqual ("NSIDREFS", map.Namespace, "#6");
614 Assert.AreEqual ("System.String", map.TypeFullName, "#7");
615 Assert.AreEqual ("String", map.TypeName, "#8");
619 public void ImportTypeMapping_XsdPrimitive_Int ()
621 XmlSchemas schemas = ExportType (typeof (int));
622 ArrayList qnames = GetXmlQualifiedNames (schemas);
623 Assert.AreEqual (1, qnames.Count, "#1");
625 XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
626 XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
628 Assert.IsNotNull (map, "#2");
629 Assert.AreEqual ("int", map.ElementName, "#3");
630 Assert.AreEqual ("NSInt32", map.Namespace, "#4");
631 Assert.AreEqual ("System.Int32", map.TypeFullName, "#5");
632 Assert.AreEqual ("Int32", map.TypeName, "#6");
636 public void ImportTypeMapping_XsdPrimitive_Integer ()
638 string schemaFragment = "<?xml version=\"1.0\" encoding=\"utf-16\"?>" +
639 "<xs:schema xmlns:tns=\"NSInteger\" elementFormDefault=\"qualified\" targetNamespace=\"NSInteger\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">" +
640 " <xs:element name=\"integer\" type=\"xs:integer\" />" +
643 XmlSchemas schemas = new XmlSchemas ();
644 schemas.Add (XmlSchema.Read (new StringReader (schemaFragment), null));
646 ArrayList qnames = GetXmlQualifiedNames (schemas);
647 Assert.AreEqual (1, qnames.Count, "#1");
649 XmlQualifiedName qname = (XmlQualifiedName) qnames[0];
651 Assert.AreEqual ("integer", qname.Name, "#2");
652 Assert.AreEqual ("NSInteger", qname.Namespace, "#3");
654 XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
655 XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
657 Assert.IsNotNull (map, "#4");
658 Assert.AreEqual ("integer", map.ElementName, "#5");
659 Assert.AreEqual ("NSInteger", map.Namespace, "#6");
660 Assert.AreEqual ("System.String", map.TypeFullName, "#7");
661 Assert.AreEqual ("String", map.TypeName, "#8");
665 public void ImportTypeMapping_XsdPrimitive_Long ()
667 XmlSchemas schemas = ExportType (typeof (long));
668 ArrayList qnames = GetXmlQualifiedNames (schemas);
669 Assert.AreEqual (1, qnames.Count, "#1");
671 XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
672 XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
674 Assert.IsNotNull (map, "#2");
675 Assert.AreEqual ("long", map.ElementName, "#3");
676 Assert.AreEqual ("NSInt64", map.Namespace, "#4");
677 Assert.AreEqual ("System.Int64", map.TypeFullName, "#5");
678 Assert.AreEqual ("Int64", map.TypeName, "#6");
682 [Category ("NotWorking")]
683 public void ImportTypeMapping_XsdPrimitive_Month ()
685 string schemaFragment = "<?xml version=\"1.0\" encoding=\"utf-16\"?>" +
686 "<xs:schema xmlns:tns=\"NSMonth\" elementFormDefault=\"qualified\" targetNamespace=\"NSMonth\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">" +
687 " <xs:element name=\"month\" type=\"xs:month\" />" +
690 XmlSchemas schemas = new XmlSchemas ();
691 schemas.Add (XmlSchema.Read (new StringReader (schemaFragment), null));
693 XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
694 XmlTypeMapping map = importer.ImportTypeMapping (new XmlQualifiedName ("month", "NSMonth"));
696 Assert.IsNotNull (map, "#4");
697 Assert.AreEqual ("month", map.ElementName, "#5");
698 Assert.AreEqual ("NSMonth", map.Namespace, "#6");
699 Assert.AreEqual ("System.String", map.TypeFullName, "#7");
700 Assert.AreEqual ("String", map.TypeName, "#8");
704 public void ImportTypeMapping_XsdPrimitive_QName ()
706 XmlSchemas schemas = ExportType (typeof (XmlQualifiedName));
707 ArrayList qnames = GetXmlQualifiedNames (schemas);
708 Assert.AreEqual (1, qnames.Count, "#1");
710 XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
711 XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
713 Assert.IsNotNull (map, "#2");
714 Assert.AreEqual ("QName", map.ElementName, "#3");
715 Assert.AreEqual ("NSXmlQualifiedName", map.Namespace, "#4");
716 Assert.AreEqual ("System.Xml.XmlQualifiedName", map.TypeFullName, "#5");
717 Assert.AreEqual ("XmlQualifiedName", map.TypeName, "#6");
721 public void ImportTypeMapping_XsdPrimitive_Short ()
723 XmlSchemas schemas = ExportType (typeof (short));
724 ArrayList qnames = GetXmlQualifiedNames (schemas);
725 Assert.AreEqual (1, qnames.Count, "#1");
727 XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
728 XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
730 Assert.IsNotNull (map, "#2");
731 Assert.AreEqual ("short", map.ElementName, "#3");
732 Assert.AreEqual ("NSInt16", map.Namespace, "#4");
733 Assert.AreEqual ("System.Int16", map.TypeFullName, "#5");
734 Assert.AreEqual ("Int16", map.TypeName, "#6");
738 public void ImportTypeMapping_XsdPrimitive_String ()
740 XmlSchemas schemas = ExportType (typeof (string));
741 ArrayList qnames = GetXmlQualifiedNames (schemas);
742 Assert.AreEqual (1, qnames.Count, "#1");
744 XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
745 XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
747 Assert.IsNotNull (map, "#2");
748 Assert.AreEqual ("string", map.ElementName, "#3");
749 Assert.AreEqual ("NSString", map.Namespace, "#4");
750 Assert.AreEqual ("System.String", map.TypeFullName, "#5");
751 Assert.AreEqual ("String", map.TypeName, "#6");
755 public void ImportTypeMapping_XsdPrimitive_Time ()
757 string schemaFragment = "<?xml version=\"1.0\" encoding=\"utf-16\"?>" +
758 "<xs:schema xmlns:tns=\"NSTime\" elementFormDefault=\"qualified\" targetNamespace=\"NSTime\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">" +
759 " <xs:element name=\"time\" type=\"xs:time\" />" +
762 XmlSchemas schemas = new XmlSchemas ();
763 schemas.Add (XmlSchema.Read (new StringReader (schemaFragment), null));
765 ArrayList qnames = GetXmlQualifiedNames (schemas);
766 Assert.AreEqual (1, qnames.Count, "#1");
768 XmlQualifiedName qname = (XmlQualifiedName) qnames[0];
770 Assert.AreEqual ("time", qname.Name, "#2");
771 Assert.AreEqual ("NSTime", qname.Namespace, "#3");
773 XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
774 XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
776 Assert.IsNotNull (map, "#4");
777 Assert.AreEqual ("time", map.ElementName, "#5");
778 Assert.AreEqual ("NSTime", map.Namespace, "#6");
779 Assert.AreEqual ("System.DateTime", map.TypeFullName, "#7");
780 Assert.AreEqual ("DateTime", map.TypeName, "#8");
784 [Category ("NotWorking")]
785 public void ImportTypeMapping_XsdPrimitive_TimeInstant ()
787 string schemaFragment = "<?xml version=\"1.0\" encoding=\"utf-16\"?>" +
788 "<xs:schema xmlns:tns=\"NSTimeInstant\" elementFormDefault=\"qualified\" targetNamespace=\"NSTimeInstant\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">" +
789 " <xs:element name=\"timeInstant\" type=\"xs:timeInstant\" />" +
792 XmlSchemas schemas = new XmlSchemas ();
793 schemas.Add (XmlSchema.Read (new StringReader (schemaFragment), null));
795 XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
796 XmlTypeMapping map = importer.ImportTypeMapping (new XmlQualifiedName ("timeInstant", "NSTimeInstant"));
798 Assert.IsNotNull (map, "#4");
799 Assert.AreEqual ("timeInstant", map.ElementName, "#5");
800 Assert.AreEqual ("NSTimeInstant", map.Namespace, "#6");
801 Assert.AreEqual ("System.String", map.TypeFullName, "#7");
802 Assert.AreEqual ("String", map.TypeName, "#8");
806 [Category ("NotWorking")]
807 public void ImportTypeMapping_XsdPrimitive_TimePeriod ()
809 string schemaFragment = "<?xml version=\"1.0\" encoding=\"utf-16\"?>" +
810 "<xs:schema xmlns:tns=\"NSTimePeriod\" elementFormDefault=\"qualified\" targetNamespace=\"NSTimePeriod\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">" +
811 " <xs:element name=\"timePeriod\" type=\"xs:timePeriod\" />" +
814 XmlSchemas schemas = new XmlSchemas ();
815 schemas.Add (XmlSchema.Read (new StringReader (schemaFragment), null));
817 XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
818 XmlTypeMapping map = importer.ImportTypeMapping (new XmlQualifiedName ("timePeriod", "NSTimePeriod"));
820 Assert.IsNotNull (map, "#4");
821 Assert.AreEqual ("timePeriod", map.ElementName, "#5");
822 Assert.AreEqual ("NSTimePeriod", map.Namespace, "#6");
823 Assert.AreEqual ("System.String", map.TypeFullName, "#7");
824 Assert.AreEqual ("String", map.TypeName, "#8");
828 public void ImportTypeMapping_XsdPrimitive_UnsignedByte ()
830 XmlSchemas schemas = ExportType (typeof (byte));
831 ArrayList qnames = GetXmlQualifiedNames (schemas);
832 Assert.AreEqual (1, qnames.Count, "#1");
834 XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
835 XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
837 Assert.IsNotNull (map, "#2");
838 Assert.AreEqual ("unsignedByte", map.ElementName, "#3");
839 Assert.AreEqual ("NSByte", map.Namespace, "#4");
840 Assert.AreEqual ("System.Byte", map.TypeFullName, "#5");
841 Assert.AreEqual ("Byte", map.TypeName, "#6");
845 public void ImportTypeMapping_XsdPrimitive_UnsignedInt ()
847 XmlSchemas schemas = ExportType (typeof (uint));
848 ArrayList qnames = GetXmlQualifiedNames (schemas);
849 Assert.AreEqual (1, qnames.Count, "#1");
851 XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
852 XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
854 Assert.IsNotNull (map, "#2");
855 Assert.AreEqual ("unsignedInt", map.ElementName, "#3");
856 Assert.AreEqual ("NSUInt32", map.Namespace, "#4");
857 Assert.AreEqual ("System.UInt32", map.TypeFullName, "#5");
858 Assert.AreEqual ("UInt32", map.TypeName, "#6");
862 public void ImportTypeMapping_XsdPrimitive_UnsignedLong ()
864 XmlSchemas schemas = ExportType (typeof (ulong));
865 ArrayList qnames = GetXmlQualifiedNames (schemas);
866 Assert.AreEqual (1, qnames.Count, "#1");
868 XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
869 XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
871 Assert.IsNotNull (map, "#2");
872 Assert.AreEqual ("unsignedLong", map.ElementName, "#3");
873 Assert.AreEqual ("NSUInt64", map.Namespace, "#4");
874 Assert.AreEqual ("System.UInt64", map.TypeFullName, "#5");
875 Assert.AreEqual ("UInt64", map.TypeName, "#6");
879 public void ImportTypeMapping_XsdPrimitive_UnsignedShort ()
881 XmlSchemas schemas = ExportType (typeof (ushort));
882 ArrayList qnames = GetXmlQualifiedNames (schemas);
883 Assert.AreEqual (1, qnames.Count, "#1");
885 XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
886 XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
888 Assert.IsNotNull (map, "#2");
889 Assert.AreEqual ("unsignedShort", map.ElementName, "#3");
890 Assert.AreEqual ("NSUInt16", map.Namespace, "#4");
891 Assert.AreEqual ("System.UInt16", map.TypeFullName, "#5");
892 Assert.AreEqual ("UInt16", map.TypeName, "#6");
898 public void ImportTypeMapping_EnumSimpleContent ()
900 string schemaFragment = "<?xml version=\"1.0\" encoding=\"utf-16\"?>" +
901 "<s:schema xmlns:tns=\"NSDate\" elementFormDefault=\"qualified\" targetNamespace=\"NSDate\" xmlns:s=\"http://www.w3.org/2001/XMLSchema\">" +
902 " <s:element name=\"trans\" type=\"tns:TranslationStatus\" />" +
903 " <s:complexType name=\"TranslationStatus\">" +
904 " <s:simpleContent>" +
905 " <s:extension base=\"tns:StatusType\">" +
906 " <s:attribute name=\"Language\" type=\"s:int\" use=\"required\" />" +
908 " </s:simpleContent>" +
909 " </s:complexType>" +
910 " <s:simpleType name=\"StatusType\">" +
911 " <s:restriction base=\"s:string\">" +
912 " <s:enumeration value=\"Untouched\" />" +
913 " <s:enumeration value=\"Touched\" />" +
914 " <s:enumeration value=\"Complete\" />" +
915 " <s:enumeration value=\"None\" />" +
916 " </s:restriction>" +
920 XmlSchemas schemas = new XmlSchemas ();
921 schemas.Add (XmlSchema.Read (new StringReader (schemaFragment), null));
923 ArrayList qnames = GetXmlQualifiedNames (schemas);
924 Assert.AreEqual (1, qnames.Count, "#1");
926 XmlQualifiedName qname = (XmlQualifiedName) qnames[0];
928 Assert.AreEqual ("trans", qname.Name, "#2");
929 Assert.AreEqual ("NSDate", qname.Namespace, "#3");
931 XmlSchemaImporter importer = new XmlSchemaImporter (schemas);
932 XmlTypeMapping map = importer.ImportTypeMapping ((XmlQualifiedName) qnames[0]);
934 Assert.IsNotNull (map, "#4");
935 Assert.AreEqual ("trans", map.ElementName, "#5");
936 Assert.AreEqual ("NSDate", map.Namespace, "#6");
937 Assert.AreEqual ("TranslationStatus", map.TypeFullName, "#7");
938 Assert.AreEqual ("TranslationStatus", map.TypeName, "#8");
940 CodeNamespace codeNamespace = ExportCode (map);
941 Assert.IsNotNull (codeNamespace, "#9");
943 CodeTypeDeclaration type = FindType (codeNamespace, "TranslationStatus");
944 Assert.IsNotNull (type, "#10");
947 CodeMemberProperty property = FindMember (type, "Value") as CodeMemberProperty;
948 Assert.IsNotNull (property, "#A1");
949 Assert.IsTrue (property.HasGet, "#A2");
950 Assert.IsTrue (property.HasSet, "#A3");
951 Assert.AreEqual ("StatusType", property.Type.BaseType, "#A4");
953 CodeMemberField field = FindMember (type, "valueField") as CodeMemberField;
954 Assert.IsNotNull (field, "#A5");
955 Assert.AreEqual ("StatusType", field.Type.BaseType, "#A6");
957 property = FindMember (type, "Language") as CodeMemberProperty;
958 Assert.IsNotNull (property, "#B1");
959 Assert.IsTrue (property.HasGet, "#B2");
960 Assert.IsTrue (property.HasSet, "#B3");
961 Assert.AreEqual ("System.Int32", property.Type.BaseType, "#B4");
963 field = FindMember (type, "languageField") as CodeMemberField;
964 Assert.IsNotNull (field, "#B5");
965 Assert.AreEqual ("System.Int32", field.Type.BaseType, "#B6");
967 CodeMemberField field = FindMember (type, "Value") as CodeMemberField;
968 Assert.IsNotNull (field, "#A1");
969 Assert.AreEqual ("StatusType", field.Type.BaseType, "#A2");
971 field = FindMember (type, "Language") as CodeMemberField;
972 Assert.IsNotNull (field, "#B1");
973 Assert.AreEqual ("System.Int32", field.Type.BaseType, "#B2");
977 XmlSchemaImporter CreateSchemaImporter (string xsd)
979 XmlSchemas s = new XmlSchemas ();
980 XmlReader r = new XmlTextReader (xsd, XmlNodeType.Document, null);
981 s.Add (XmlSchema.Read (r, null));
982 return new XmlSchemaImporter (s);
986 public void ImportTypeMapping_NullableField ()
989 <xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>
990 <xs:element name='Root'>
993 <xs:element name='Bar' nillable='true' type='xs:int' />
995 <xs:attribute name='A' use='optional' type='xs:int' />
999 XmlSchemaImporter imp = CreateSchemaImporter (xsd);
1000 XmlTypeMapping map = imp.ImportTypeMapping (new XmlQualifiedName ("Root"));
1001 CodeNamespace cns = ExportCode (map);
1003 CodeMemberProperty p = (CodeMemberProperty) FindMember (FindType (cns, "Root"), "Bar");
1004 Assert.AreEqual (1, p.Type.TypeArguments.Count, "2.0 #1");
1005 Assert.AreEqual ("System.Int32", p.Type.TypeArguments [0].BaseType, "2.0 #2");
1007 CodeMemberField f = (CodeMemberField) FindMember (FindType (cns, "Root"), "Bar");
1008 Assert.AreEqual ("System.Int32", f.Type.BaseType, "1.x #1");
1013 public void ImportMembersMapping_NullableField ()
1016 <xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>
1017 <xs:element name='Root'>
1020 <xs:element name='Bar' nillable='true' type='xs:int' />
1021 <xs:element name='Baz' type='xs:int' />
1023 <xs:attribute name='A' use='optional' type='xs:int' />
1027 XmlSchemaImporter imp = CreateSchemaImporter (xsd);
1028 XmlMembersMapping map = imp.ImportMembersMapping (new XmlQualifiedName ("Root"));
1029 Assert.AreEqual (3, map.Count, "#1");
1030 XmlMemberMapping bar = map [0];
1031 Assert.AreEqual ("Bar", bar.ElementName, "#2-1");
1032 Assert.IsFalse (bar.CheckSpecified, "#2-2");
1033 XmlMemberMapping baz = map [1];
1034 Assert.AreEqual ("Baz", baz.ElementName, "#3-1");
1035 Assert.IsFalse (baz.CheckSpecified, "#3-2");
1036 XmlMemberMapping a = map [2];
1037 Assert.AreEqual ("A", a.ElementName, "#4-1"); // ... element name?
1038 Assert.IsTrue (a.CheckSpecified, "#4-2");
1041 Assert.IsNull (map.TypeName, "#4-3"); // null at this state
1042 Assert.IsNull (map.TypeNamespace, "#4-4"); // null at this state
1044 CodeDomProvider p = new Microsoft.CSharp.CSharpCodeProvider ();
1045 Assert.AreEqual ("System.Nullable`1[System.Int32]", bar.GenerateTypeName (p), "#5-1");
1046 Assert.AreEqual ("System.Int32", baz.GenerateTypeName (p), "#5-2");
1048 var table = new Hashtable ();
1049 var exp = new XmlCodeExporter (new CodeNamespace ("foobar"), null, p, CodeGenerationOptions.None, table);
1050 exp.ExportMembersMapping (map);
1051 Assert.AreEqual (null, map.TypeName, "#5-3"); // filled after ExportExportMembersMapping().
1052 Assert.AreEqual (null, map.TypeNamespace, "#5-4"); // filled after ExportMembersMapping().
1053 // table contains some internal stuff that does not make sense in any public API.
1057 CodeNamespace ExportCode (XmlTypeMapping map)
1059 CodeNamespace codeNamespace = new CodeNamespace ();
1060 XmlCodeExporter exp = new XmlCodeExporter (codeNamespace);
1061 exp.ExportTypeMapping (map);
1062 return codeNamespace;
1065 CodeTypeDeclaration FindType (CodeNamespace codeNamespace, string name)
1067 foreach (CodeTypeDeclaration t in codeNamespace.Types)
1073 CodeTypeMember FindMember (CodeTypeDeclaration type, string name)
1075 foreach (CodeTypeMember m in type.Members)
1082 [ExpectedException (typeof (InvalidOperationException))]
1083 public void ImportTypeMappingNonExistent ()
1085 XmlSchemas xss = new XmlSchemas ();
1086 xss.Add (new XmlSchema ());
1087 XmlSchemaImporter imp = new XmlSchemaImporter (xss);
1088 imp.ImportTypeMapping (new XmlQualifiedName ("foo"));
1092 public void AnyTypeTopLevelElementImportsAllComplexTypes ()
1095 <xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>
1096 <xs:element name='Root' type='xs:anyType' />
1097 <xs:complexType name='FooType'>
1099 <xs:element name='Child1' type='xs:string' />
1100 <xs:element name='Child2' type='xs:string' />
1101 <xs:element name='Child3' type='xs:string' />
1104 <xs:complexType name='BarType' />
1106 XmlSchemas xss = new XmlSchemas ();
1107 xss.Add (XmlSchema.Read (new XmlTextReader (new StringReader (xsd)), null));
1108 XmlSchemaImporter imp = new XmlSchemaImporter (xss);
1109 CodeNamespace cns = new CodeNamespace ();
1110 XmlCodeExporter exp = new XmlCodeExporter (cns);
1111 exp.ExportTypeMapping (imp.ImportTypeMapping (new XmlQualifiedName ("Root")));
1112 bool foo = false, bar = false;
1113 foreach (CodeTypeDeclaration td in cns.Types) {
1114 if (td.Name == "FooType")
1116 else if (td.Name == "BarType")
1119 Assert.IsTrue (foo, "FooType not found");
1120 Assert.IsTrue (bar, "BarType not found");
1124 public void DefaultTypeTopLevelElementImportsAllComplexTypes ()
1127 <xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>
1128 <xs:element name='Root' />
1129 <xs:complexType name='FooType'>
1131 <xs:element name='Child1' type='xs:string' />
1132 <xs:element name='Child2' type='xs:string' />
1133 <xs:element name='Child3' type='xs:string' />
1136 <xs:complexType name='BarType' />
1138 XmlSchemas xss = new XmlSchemas ();
1139 xss.Add (XmlSchema.Read (new XmlTextReader (new StringReader (xsd)), null));
1140 XmlSchemaImporter imp = new XmlSchemaImporter (xss);
1141 CodeNamespace cns = new CodeNamespace ();
1142 XmlCodeExporter exp = new XmlCodeExporter (cns);
1143 exp.ExportTypeMapping (imp.ImportTypeMapping (new XmlQualifiedName ("Root")));
1144 bool foo = false, bar = false;
1145 foreach (CodeTypeDeclaration td in cns.Types) {
1146 if (td.Name == "FooType")
1148 else if (td.Name == "BarType")
1151 Assert.IsTrue (foo, "FooType not found");
1152 Assert.IsTrue (bar, "BarType not found");
1156 public void ImportComplexDerivationByExtension ()
1158 string xsd = @"<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>
1159 <xs:element name='Root' type='DerivedType' />
1160 <xs:complexType name='DerivedType'>
1162 <xs:extension base='BaseType'>
1163 <xs:attribute name='Foo' type='xs:string' />
1165 </xs:complexContent>
1167 <xs:complexType name='BaseType'>
1168 <xs:attribute name='Foo' type='xs:string' />
1171 XmlSchemaImporter imp = CreateImporter (xsd);
1172 CodeNamespace cns = new CodeNamespace ();
1173 XmlCodeExporter exp = new XmlCodeExporter (cns);
1174 exp.ExportTypeMapping (imp.ImportTypeMapping (new XmlQualifiedName ("Root")));
1178 public void ImportSimpleSchemaType ()
1181 <xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>
1182 <xs:element name='a' type='b' />
1183 <xs:simpleType name='b'>
1184 <xs:restriction base='xs:string'>
1185 <xs:enumeration value='v1'/>
1186 <xs:enumeration value='v2'/>
1187 <xs:enumeration value='v3'/>
1191 XmlSchemaImporter imp = CreateImporter (xsd);
1192 XmlTypeMapping tm = imp.ImportTypeMapping (new XmlQualifiedName ("a"));
1193 Assert.AreEqual ("a", tm.ElementName, "#1");
1194 Assert.AreEqual ("b", tm.TypeName, "#2");
1198 public void ImportWildcardElementAsClass ()
1200 var xss = new XmlSchemas ();
1201 xss.Add (XmlSchema.Read (XmlReader.Create ("Test/XmlFiles/xsd/670945-1.xsd"), null));
1202 xss.Add (XmlSchema.Read (XmlReader.Create ("Test/XmlFiles/xsd/670945-2.xsd"), null));
1203 var imp = new XmlSchemaImporter (xss);
1204 var xtm = imp.ImportSchemaType (new XmlQualifiedName ("SystemDateTime", "http://www.onvif.org/ver10/schema"));
1205 var cns = new CodeNamespace ();
1206 var exp = new XmlCodeExporter (cns);
1207 exp.ExportTypeMapping (xtm);
1208 var sw = new StringWriter ();
1209 new CSharpCodeProvider ().GenerateCodeFromNamespace (cns, sw, null);
1210 Assert.IsTrue (sw.ToString ().IndexOf ("class SystemDateTimeExtension") > 0, "#1");
1213 XmlSchemaImporter CreateImporter (params string [] schemaXmlStrings)
1215 XmlSchemas xss = new XmlSchemas ();
1216 foreach (string xsd in schemaXmlStrings)
1217 xss.Add (XmlSchema.Read (new XmlTextReader (new StringReader (xsd)), null));
1218 return new XmlSchemaImporter (xss);
1223 private static ArrayList GetXmlQualifiedNames (XmlSchemas schemas)
1225 ArrayList qnames = new ArrayList ();
1227 foreach (XmlSchema schema in schemas) {
1228 if (!schema.IsCompiled) schema.Compile (null);
1229 foreach (XmlSchemaObject ob in schema.Items)
1230 if (ob is XmlSchemaElement)
1231 qnames.Add (((XmlSchemaElement) ob).QualifiedName);
1237 private static XmlSchemas ExportType (Type type)
1239 XmlReflectionImporter ri = new XmlReflectionImporter ("NS" + type.Name);
1240 XmlSchemas schemas = new XmlSchemas ();
1241 XmlSchemaExporter sx = new XmlSchemaExporter (schemas);
1242 XmlTypeMapping tm = ri.ImportTypeMapping (type);
1243 sx.ExportTypeMapping (tm);