2 // System.Xml.Serialization.XmlReflectionImporterTests
\r
5 // Erik LeBel (eriklebel@yahoo.ca)
\r
7 // (C) 2003 Erik LeBel
\r
9 // FIXME test some of these with Xml Attributes attached to some members:
\r
10 // do the names get carried over to Element for XmlAttributeAttribute and XmlElementAttribute?
\r
14 using System.Collections;
\r
16 using System.Xml.Schema;
\r
17 using System.Xml.Serialization;
\r
19 using NUnit.Framework;
\r
21 using MonoTests.System.Xml.TestClasses;
\r
23 namespace MonoTests.System.XmlSerialization
\r
26 internal class Debug
\r
28 public static void Print(XmlTypeMapping tm)
\r
30 Console.WriteLine("/XmlTypeMapping:");
\r
31 Console.WriteLine("ElementName: {0} ", tm.ElementName);
\r
32 Console.WriteLine("Namespace: {0} ", tm.Namespace);
\r
33 Console.WriteLine("TypeName: {0} ", tm.TypeName);
\r
34 Console.WriteLine("FullTypeName: {0} ", tm.TypeFullName);
\r
37 public static void Print(XmlMemberMapping mm)
\r
39 Console.WriteLine("/XmlMemberMapping:");
\r
40 Console.WriteLine("Any: {0} ", mm.Any);
\r
41 Console.WriteLine("ElementName: {0} ", mm.ElementName);
\r
42 Console.WriteLine("MemberName: {0} ", mm.MemberName);
\r
43 Console.WriteLine("Namespace: {0} ", mm.Namespace);
\r
44 Console.WriteLine("TypeFullName: {0} ", mm.TypeFullName);
\r
45 Console.WriteLine("TypeName: {0} ", mm.TypeName);
\r
46 Console.WriteLine("TypeNamespace: {0} ", mm.TypeNamespace);
\r
51 public class XmlReflectionImporterTests
\r
53 private const string SomeNamespace = "some:urn";
\r
54 private const string AnotherNamespace = "another:urn";
\r
55 private const string XmlSchemaNamespace = "http://www.w3.org/2001/XMLSchema";
\r
57 // these Map methods re-create the XmlReflectionImporter at every call.
\r
59 private XmlTypeMapping Map(Type t)
\r
61 XmlReflectionImporter ri = new XmlReflectionImporter();
\r
62 XmlTypeMapping tm = ri.ImportTypeMapping(t);
\r
68 private XmlTypeMapping Map(Type t, XmlRootAttribute root)
\r
70 XmlReflectionImporter ri = new XmlReflectionImporter();
\r
71 XmlTypeMapping tm = ri.ImportTypeMapping(t, root);
\r
76 private XmlTypeMapping Map(Type t, string ns)
\r
78 XmlReflectionImporter ri = new XmlReflectionImporter(ns);
\r
79 XmlTypeMapping tm = ri.ImportTypeMapping(t);
\r
85 private XmlTypeMapping Map (Type t, string ns, XmlRootAttribute root)
\r
87 XmlReflectionImporter ri = new XmlReflectionImporter (ns);
\r
88 XmlTypeMapping tm = ri.ImportTypeMapping (t, root);
\r
93 private XmlTypeMapping Map(Type t, XmlAttributeOverrides overrides)
\r
95 XmlReflectionImporter ri = new XmlReflectionImporter(overrides);
\r
96 XmlTypeMapping tm = ri.ImportTypeMapping(t);
\r
102 private XmlMembersMapping MembersMap(Type t, XmlAttributeOverrides overrides,
\r
103 XmlReflectionMember [] members, bool inContainer)
\r
105 XmlReflectionImporter ri = new XmlReflectionImporter(overrides);
\r
106 XmlMembersMapping mm = ri.ImportMembersMapping(null, null, members, inContainer);
\r
112 public void TestIntTypeMapping()
\r
114 XmlTypeMapping tm = Map(typeof(int));
\r
115 Assert.AreEqual ("int", tm.ElementName, "#1");
\r
116 Assert.AreEqual (string.Empty, tm.Namespace, "#2");
\r
117 Assert.AreEqual ("Int32", tm.TypeName, "#3");
\r
118 Assert.AreEqual ("System.Int32", tm.TypeFullName, "#4");
\r
123 [Category ("NotWorking")] // mark it NotWorking until fixes have landed in svn
\r
125 public void TestIntTypeMapping_Array ()
\r
127 XmlTypeMapping tm = Map(typeof(int[]));
\r
128 Assert.AreEqual ("ArrayOfInt", tm.ElementName, "#A1");
\r
129 Assert.AreEqual (string.Empty, tm.Namespace, "#A2");
\r
131 Assert.AreEqual ("ArrayOfInt32", tm.TypeName, "#A3");
\r
133 Assert.AreEqual ("Int32[]", tm.TypeName, "#A3");
\r
135 Assert.AreEqual ("System.Int32[]", tm.TypeFullName, "#A4");
\r
137 tm = Map (typeof (int[][]));
\r
138 Assert.AreEqual ("ArrayOfArrayOfInt", tm.ElementName, "#B1");
\r
139 Assert.AreEqual (string.Empty, tm.Namespace, "#B2");
\r
141 Assert.AreEqual ("ArrayOfArrayOfInt32", tm.TypeName, "#B3");
\r
143 Assert.AreEqual ("Int32[][]", tm.TypeName, "#B3");
\r
145 Assert.AreEqual ("System.Int32[][]", tm.TypeFullName, "#B4");
\r
147 tm = Map (typeof (int[][][]));
\r
148 Assert.AreEqual ("ArrayOfArrayOfArrayOfInt", tm.ElementName, "#C1");
\r
149 Assert.AreEqual (string.Empty, tm.Namespace, "#C2");
\r
151 Assert.AreEqual ("ArrayOfArrayOfArrayOfInt32", tm.TypeName, "#C3");
\r
153 Assert.AreEqual ("Int32[][][]", tm.TypeName, "#C3");
\r
155 Assert.AreEqual ("System.Int32[][][]", tm.TypeFullName, "#C4");
\r
159 public void TestStringTypeMapping()
\r
161 XmlTypeMapping tm = Map(typeof(string));
\r
162 Assert.AreEqual ("string", tm.ElementName, "#1");
\r
163 Assert.AreEqual (string.Empty, tm.Namespace, "#2");
\r
164 Assert.AreEqual ("String", tm.TypeName, "#3");
\r
165 Assert.AreEqual ("System.String", tm.TypeFullName, "#4");
\r
170 [Category ("NotWorking")] // mark it NotWorking until fixes have landed in svn
\r
172 public void TestStringTypeMapping_Array ()
\r
174 XmlTypeMapping tm = Map (typeof (string[]));
\r
175 Assert.AreEqual ("ArrayOfString", tm.ElementName, "#A1");
\r
176 Assert.AreEqual (string.Empty, tm.Namespace, "#A2");
\r
178 Assert.AreEqual ("ArrayOfString", tm.TypeName, "#A3");
\r
180 Assert.AreEqual ("String[]", tm.TypeName, "#A3");
\r
182 Assert.AreEqual ("System.String[]", tm.TypeFullName, "#A4");
\r
184 tm = Map (typeof (string[][]));
\r
185 Assert.AreEqual ("ArrayOfArrayOfString", tm.ElementName, "#B1");
\r
186 Assert.AreEqual (string.Empty, tm.Namespace, "#B2");
\r
188 Assert.AreEqual ("ArrayOfArrayOfString", tm.TypeName, "#B3");
\r
190 Assert.AreEqual ("String[][]", tm.TypeName, "#B3");
\r
192 Assert.AreEqual ("System.String[][]", tm.TypeFullName, "#B4");
\r
194 tm = Map (typeof (string[][][]));
\r
195 Assert.AreEqual ("ArrayOfArrayOfArrayOfString", tm.ElementName, "#C1");
\r
196 Assert.AreEqual (string.Empty, tm.Namespace, "#C2");
\r
198 Assert.AreEqual ("ArrayOfArrayOfArrayOfString", tm.TypeName, "#C3");
\r
200 Assert.AreEqual ("String[][][]", tm.TypeName, "#C3");
\r
202 Assert.AreEqual ("System.String[][][]", tm.TypeFullName, "#C4");
\r
206 public void TestObjectTypeMapping()
\r
208 XmlTypeMapping tm = Map(typeof(object));
\r
209 Assert.AreEqual ("anyType", tm.ElementName, "#1");
\r
210 Assert.AreEqual (string.Empty, tm.Namespace, "#2");
\r
211 Assert.AreEqual ("Object", tm.TypeName, "#3");
\r
212 Assert.AreEqual ("System.Object", tm.TypeFullName, "#4");
\r
217 [Category ("NotWorking")] // mark it NotWorking until fixes have landed in svn
\r
219 public void TestObjectTypeMapping_Array ()
\r
221 XmlTypeMapping tm = Map (typeof (object[]));
\r
222 Assert.AreEqual ("ArrayOfAnyType", tm.ElementName, "#A1");
\r
223 Assert.AreEqual (string.Empty, tm.Namespace, "#A2");
\r
225 Assert.AreEqual ("ArrayOfObject", tm.TypeName, "#A3");
\r
227 Assert.AreEqual ("Object[]", tm.TypeName, "#A3");
\r
229 Assert.AreEqual ("System.Object[]", tm.TypeFullName, "#A4");
\r
231 tm = Map (typeof (object[][]));
\r
232 Assert.AreEqual ("ArrayOfArrayOfAnyType", tm.ElementName, "#B1");
\r
233 Assert.AreEqual (string.Empty, tm.Namespace, "#B2");
\r
235 Assert.AreEqual ("ArrayOfArrayOfObject", tm.TypeName, "#B3");
\r
237 Assert.AreEqual ("Object[][]", tm.TypeName, "#B3");
\r
239 Assert.AreEqual ("System.Object[][]", tm.TypeFullName, "#B4");
\r
241 tm = Map (typeof (object[][][]));
\r
242 Assert.AreEqual ("ArrayOfArrayOfArrayOfAnyType", tm.ElementName, "#C1");
\r
243 Assert.AreEqual (string.Empty, tm.Namespace, "#C2");
\r
245 Assert.AreEqual ("ArrayOfArrayOfArrayOfObject", tm.TypeName, "#C3");
\r
247 Assert.AreEqual ("Object[][][]", tm.TypeName, "#C3");
\r
249 Assert.AreEqual ("System.Object[][][]", tm.TypeFullName, "#C4");
\r
253 public void TestByteTypeMapping()
\r
255 XmlTypeMapping tm = Map(typeof(byte));
\r
256 Assert.AreEqual ("unsignedByte", tm.ElementName, "#1");
\r
257 Assert.AreEqual (string.Empty, tm.Namespace, "#2");
\r
258 Assert.AreEqual ("Byte", tm.TypeName, "#3");
\r
259 Assert.AreEqual ("System.Byte", tm.TypeFullName, "#4");
\r
264 [Category ("NotWorking")] // mark it NotWorking until fixes have landed in svn
\r
266 public void TestByteTypeMapping_Array ()
\r
268 XmlTypeMapping tm = Map(typeof(byte[]));
\r
269 Assert.AreEqual ("base64Binary", tm.ElementName, "#A1");
\r
270 Assert.AreEqual (string.Empty, tm.Namespace, "#A2");
\r
271 Assert.AreEqual ("Byte[]", tm.TypeName, "#A3");
\r
272 Assert.AreEqual ("System.Byte[]", tm.TypeFullName, "#A4");
\r
274 tm = Map (typeof (byte[][]));
\r
275 Assert.AreEqual ("ArrayOfBase64Binary", tm.ElementName, "#B1");
\r
276 Assert.AreEqual (string.Empty, tm.Namespace, "#B2");
\r
278 Assert.AreEqual ("ArrayOfArrayOfByte", tm.TypeName, "#B3");
\r
280 Assert.AreEqual ("Byte[][]", tm.TypeName, "#B3");
\r
282 Assert.AreEqual ("System.Byte[][]", tm.TypeFullName, "#B4");
\r
284 tm = Map (typeof (byte[][][]));
\r
285 Assert.AreEqual ("ArrayOfArrayOfBase64Binary", tm.ElementName, "#C1");
\r
286 Assert.AreEqual (string.Empty, tm.Namespace, "#C2");
\r
288 Assert.AreEqual ("ArrayOfArrayOfArrayOfByte", tm.TypeName, "#C3");
\r
290 Assert.AreEqual ("Byte[][][]", tm.TypeName, "#C3");
\r
292 Assert.AreEqual ("System.Byte[][][]", tm.TypeFullName, "#C4");
\r
296 public void TestBoolTypeMapping()
\r
298 XmlTypeMapping tm = Map(typeof(bool));
\r
299 Assert.AreEqual ("boolean", tm.ElementName, "#1");
\r
300 Assert.AreEqual (string.Empty, tm.Namespace, "#2");
\r
301 Assert.AreEqual ("Boolean", tm.TypeName, "#3");
\r
302 Assert.AreEqual ("System.Boolean", tm.TypeFullName, "#4");
\r
306 public void TestShortTypeMapping()
\r
308 XmlTypeMapping tm = Map(typeof(short));
\r
309 Assert.AreEqual ("short", tm.ElementName, "#1");
\r
310 Assert.AreEqual (string.Empty, tm.Namespace, "#2");
\r
311 Assert.AreEqual ("Int16", tm.TypeName, "#3");
\r
312 Assert.AreEqual ("System.Int16", tm.TypeFullName, "#4");
\r
316 public void TestUnsignedShortTypeMapping()
\r
318 XmlTypeMapping tm = Map(typeof(ushort));
\r
319 Assert.AreEqual ("unsignedShort", tm.ElementName, "#1");
\r
320 Assert.AreEqual (string.Empty, tm.Namespace, "#2");
\r
321 Assert.AreEqual ("UInt16", tm.TypeName, "#3");
\r
322 Assert.AreEqual ("System.UInt16", tm.TypeFullName, "#4");
\r
326 public void TestUIntTypeMapping()
\r
328 XmlTypeMapping tm = Map(typeof(uint));
\r
329 Assert.AreEqual ("unsignedInt", tm.ElementName, "#1");
\r
330 Assert.AreEqual (string.Empty, tm.Namespace, "#2");
\r
331 Assert.AreEqual ("UInt32", tm.TypeName, "#3");
\r
332 Assert.AreEqual ("System.UInt32", tm.TypeFullName, "#4");
\r
336 public void TestLongTypeMapping()
\r
338 XmlTypeMapping tm = Map(typeof(long));
\r
339 Assert.AreEqual ("long", tm.ElementName, "#1");
\r
340 Assert.AreEqual (string.Empty, tm.Namespace, "#2");
\r
341 Assert.AreEqual ("Int64", tm.TypeName, "#3");
\r
342 Assert.AreEqual ("System.Int64", tm.TypeFullName, "#4");
\r
346 public void TestULongTypeMapping()
\r
348 XmlTypeMapping tm = Map(typeof(ulong));
\r
349 Assert.AreEqual ("unsignedLong", tm.ElementName, "#1");
\r
350 Assert.AreEqual (string.Empty, tm.Namespace, "#2");
\r
351 Assert.AreEqual ("UInt64", tm.TypeName, "#3");
\r
352 Assert.AreEqual ("System.UInt64", tm.TypeFullName, "#4");
\r
356 public void TestFloatTypeMapping()
\r
358 XmlTypeMapping tm = Map(typeof(float));
\r
359 Assert.AreEqual ("float", tm.ElementName, "#1");
\r
360 Assert.AreEqual (string.Empty, tm.Namespace, "#2");
\r
361 Assert.AreEqual ("Single", tm.TypeName, "#3");
\r
362 Assert.AreEqual ("System.Single", tm.TypeFullName, "#4");
\r
366 public void TestDoubleTypeMapping()
\r
368 XmlTypeMapping tm = Map(typeof(double));
\r
369 Assert.AreEqual ("double", tm.ElementName, "#1");
\r
370 Assert.AreEqual (string.Empty, tm.Namespace, "#2");
\r
371 Assert.AreEqual ("Double", tm.TypeName, "#3");
\r
372 Assert.AreEqual ("System.Double", tm.TypeFullName, "#4");
\r
376 public void TestDateTimeTypeMapping()
\r
378 XmlTypeMapping tm = Map(typeof(DateTime));
\r
379 Assert.AreEqual ("dateTime", tm.ElementName, "#1");
\r
380 Assert.AreEqual (string.Empty, tm.Namespace, "#2");
\r
381 Assert.AreEqual ("DateTime", tm.TypeName, "#3");
\r
382 Assert.AreEqual ("System.DateTime", tm.TypeFullName, "#4");
\r
387 [Category ("NotWorking")] // mark it NotWorking until fixes have landed in svn
\r
389 public void TestDateTimeTypeMapping_Array ()
\r
391 XmlTypeMapping tm = Map (typeof (DateTime[]));
\r
392 Assert.AreEqual ("ArrayOfDateTime", tm.ElementName, "#A1");
\r
393 Assert.AreEqual (string.Empty, tm.Namespace, "#A2");
\r
395 Assert.AreEqual ("ArrayOfDateTime", tm.TypeName, "#A3");
\r
397 Assert.AreEqual ("DateTime[]", tm.TypeName, "#A3");
\r
399 Assert.AreEqual ("System.DateTime[]", tm.TypeFullName, "#A4");
\r
401 tm = Map (typeof (DateTime[][]));
\r
402 Assert.AreEqual ("ArrayOfArrayOfDateTime", tm.ElementName, "#B1");
\r
403 Assert.AreEqual (string.Empty, tm.Namespace, "#B2");
\r
405 Assert.AreEqual ("ArrayOfArrayOfDateTime", tm.TypeName, "#B3");
\r
407 Assert.AreEqual ("DateTime[][]", tm.TypeName, "#B3");
\r
409 Assert.AreEqual ("System.DateTime[][]", tm.TypeFullName, "#B4");
\r
411 tm = Map (typeof (DateTime[][][]));
\r
412 Assert.AreEqual ("ArrayOfArrayOfArrayOfDateTime", tm.ElementName, "#C1");
\r
413 Assert.AreEqual (string.Empty, tm.Namespace, "#C2");
\r
415 Assert.AreEqual ("ArrayOfArrayOfArrayOfDateTime", tm.TypeName, "#C3");
\r
417 Assert.AreEqual ("DateTime[][][]", tm.TypeName, "#C3");
\r
419 Assert.AreEqual ("System.DateTime[][][]", tm.TypeFullName, "#C4");
\r
423 public void TestGuidTypeMapping()
\r
425 XmlTypeMapping tm = Map(typeof(Guid));
\r
426 Assert.AreEqual ("guid", tm.ElementName, "#1");
\r
427 Assert.AreEqual (string.Empty, tm.Namespace, "#2");
\r
428 Assert.AreEqual ("Guid", tm.TypeName, "#3");
\r
429 Assert.AreEqual ("System.Guid", tm.TypeFullName, "#4");
\r
434 [Category ("NotWorking")] // mark it NotWorking until fixes have landed in svn
\r
436 public void TestGuidTypeMapping_Array ()
\r
438 XmlTypeMapping tm = Map (typeof (Guid[]));
\r
439 Assert.AreEqual ("ArrayOfGuid", tm.ElementName, "#A1");
\r
440 Assert.AreEqual (string.Empty, tm.Namespace, "#A2");
\r
442 Assert.AreEqual ("ArrayOfGuid", tm.TypeName, "#A3");
\r
444 Assert.AreEqual ("Guid[]", tm.TypeName, "#A3");
\r
446 Assert.AreEqual ("System.Guid[]", tm.TypeFullName, "#A4");
\r
448 tm = Map (typeof (Guid[][]));
\r
449 Assert.AreEqual ("ArrayOfArrayOfGuid", tm.ElementName, "#B1");
\r
450 Assert.AreEqual (string.Empty, tm.Namespace, "#B2");
\r
452 Assert.AreEqual ("ArrayOfArrayOfGuid", tm.TypeName, "#B3");
\r
454 Assert.AreEqual ("Guid[][]", tm.TypeName, "#B3");
\r
456 Assert.AreEqual ("System.Guid[][]", tm.TypeFullName, "#B4");
\r
458 tm = Map (typeof (Guid[][][]));
\r
459 Assert.AreEqual ("ArrayOfArrayOfArrayOfGuid", tm.ElementName, "#C1");
\r
460 Assert.AreEqual (string.Empty, tm.Namespace, "#C2");
\r
462 Assert.AreEqual ("ArrayOfArrayOfArrayOfGuid", tm.TypeName, "#C3");
\r
464 Assert.AreEqual ("Guid[][][]", tm.TypeName, "#C3");
\r
466 Assert.AreEqual ("System.Guid[][][]", tm.TypeFullName, "#C4");
\r
470 public void TestDecimalTypeMapping()
\r
472 XmlTypeMapping tm = Map(typeof(decimal));
\r
473 Assert.AreEqual ("decimal", tm.ElementName, "#1");
\r
474 Assert.AreEqual (string.Empty, tm.Namespace, "#2");
\r
475 Assert.AreEqual ("Decimal", tm.TypeName, "#3");
\r
476 Assert.AreEqual ("System.Decimal", tm.TypeFullName, "#4");
\r
480 public void TestXmlQualifiedNameTypeMapping()
\r
482 XmlTypeMapping tm = Map(typeof(XmlQualifiedName));
\r
483 Assert.AreEqual ("QName", tm.ElementName, "#1");
\r
484 Assert.AreEqual (string.Empty, tm.Namespace, "#2");
\r
485 Assert.AreEqual ("XmlQualifiedName", tm.TypeName, "#3");
\r
486 Assert.AreEqual ("System.Xml.XmlQualifiedName", tm.TypeFullName, "#4");
\r
490 public void TestSByteTypeMapping()
\r
492 XmlTypeMapping tm = Map(typeof(sbyte));
\r
493 Assert.AreEqual ("byte", tm.ElementName, "#1");
\r
494 Assert.AreEqual (string.Empty, tm.Namespace, "#2");
\r
495 Assert.AreEqual ("SByte", tm.TypeName, "#3");
\r
496 Assert.AreEqual ("System.SByte", tm.TypeFullName, "#4");
\r
501 public void TestCharTypeMapping()
\r
503 XmlTypeMapping tm = Map(typeof(char));
\r
504 Assert.AreEqual ("char", tm.ElementName, "#1");
\r
505 Assert.AreEqual (string.Empty, tm.Namespace, "#2");
\r
506 Assert.AreEqual ("Char", tm.TypeName, "#3");
\r
507 Assert.AreEqual ("System.Char", tm.TypeFullName, "#4");
\r
512 [Category ("NotWorking")] // mark it NotWorking until fixes have landed in svn
\r
514 public void TestCharTypeMapping_Array ()
\r
516 XmlTypeMapping tm = Map (typeof (char[]));
\r
517 Assert.AreEqual ("ArrayOfChar", tm.ElementName, "#A1");
\r
518 Assert.AreEqual (string.Empty, tm.Namespace, "#A2");
\r
520 Assert.AreEqual ("ArrayOfChar", tm.TypeName, "#A3");
\r
522 Assert.AreEqual ("Char[]", tm.TypeName, "#A3");
\r
524 Assert.AreEqual ("System.Char[]", tm.TypeFullName, "#A4");
\r
526 tm = Map (typeof (char[][]));
\r
527 Assert.AreEqual ("ArrayOfArrayOfChar", tm.ElementName, "#B1");
\r
528 Assert.AreEqual (string.Empty, tm.Namespace, "#B2");
\r
530 Assert.AreEqual ("ArrayOfArrayOfChar", tm.TypeName, "#B3");
\r
532 Assert.AreEqual ("Char[][]", tm.TypeName, "#B3");
\r
534 Assert.AreEqual ("System.Char[][]", tm.TypeFullName, "#B4");
\r
536 tm = Map (typeof (char[][][]));
\r
537 Assert.AreEqual ("ArrayOfArrayOfArrayOfChar", tm.ElementName, "#C1");
\r
538 Assert.AreEqual (string.Empty, tm.Namespace, "#C2");
\r
540 Assert.AreEqual ("ArrayOfArrayOfArrayOfChar", tm.TypeName, "#C3");
\r
542 Assert.AreEqual ("Char[][][]", tm.TypeName, "#C3");
\r
544 Assert.AreEqual ("System.Char[][][]", tm.TypeFullName, "#C4");
\r
548 [Category ("NotWorking")] // mark it NotWorking until fixes have landed in svn
\r
549 public void TestXmlNodeTypeMapping ()
\r
551 Type type = typeof (XmlNode);
\r
553 XmlTypeMapping tm = Map (type);
\r
554 Assert.AreEqual (string.Empty, tm.ElementName, "#A1");
\r
555 Assert.IsNull (tm.Namespace, "#A2");
\r
556 Assert.AreEqual ("XmlNode", tm.TypeName, "#A3");
\r
557 Assert.AreEqual ("System.Xml.XmlNode", tm.TypeFullName, "#A4");
\r
559 tm = Map (type, AnotherNamespace);
\r
560 Assert.AreEqual (string.Empty, tm.ElementName, "#B1");
\r
561 Assert.IsNull (tm.Namespace, "#B2");
\r
562 Assert.AreEqual ("XmlNode", tm.TypeName, "#B3");
\r
563 Assert.AreEqual ("System.Xml.XmlNode", tm.TypeFullName, "#B4");
\r
565 XmlRootAttribute root = new XmlRootAttribute ("somename");
\r
566 root.Namespace = SomeNamespace;
\r
567 tm = Map (type, root);
\r
568 Assert.AreEqual ("somename", tm.ElementName, "#C1");
\r
569 Assert.IsNull (tm.Namespace, "#C2");
\r
570 Assert.AreEqual ("XmlNode", tm.TypeName, "#C3");
\r
571 Assert.AreEqual ("System.Xml.XmlNode", tm.TypeFullName, "#C4");
\r
573 tm = Map (type, AnotherNamespace, root);
\r
574 Assert.AreEqual ("somename", tm.ElementName, "#D1");
\r
575 Assert.IsNull (tm.Namespace, "#D2");
\r
576 Assert.AreEqual ("XmlNode", tm.TypeName, "#D3");
\r
577 Assert.AreEqual ("System.Xml.XmlNode", tm.TypeFullName, "#D4");
\r
579 root.Namespace = null;
\r
580 tm = Map (type, root);
\r
581 Assert.AreEqual ("somename", tm.ElementName, "#E1");
\r
582 Assert.IsNull (tm.Namespace, "#E2");
\r
583 Assert.AreEqual ("XmlNode", tm.TypeName, "#E3");
\r
584 Assert.AreEqual ("System.Xml.XmlNode", tm.TypeFullName, "#E4");
\r
586 tm = Map (type, AnotherNamespace, root);
\r
587 Assert.AreEqual ("somename", tm.ElementName, "#F1");
\r
588 Assert.IsNull (tm.Namespace, "#F2");
\r
589 Assert.AreEqual ("XmlNode", tm.TypeName, "#F3");
\r
590 Assert.AreEqual ("System.Xml.XmlNode", tm.TypeFullName, "#F4");
\r
594 [Category ("NotWorking")] // mark it NotWorking until fixes have landed in svn
\r
595 public void TestXmlElementTypeMapping ()
\r
597 Type type = typeof (XmlElement);
\r
599 XmlTypeMapping tm = Map (type);
\r
600 Assert.AreEqual (string.Empty, tm.ElementName, "#1");
\r
601 Assert.IsNull (tm.Namespace, "#2");
\r
602 Assert.AreEqual ("XmlElement", tm.TypeName, "#3");
\r
603 Assert.AreEqual ("System.Xml.XmlElement", tm.TypeFullName, "#4");
\r
605 tm = Map (type, AnotherNamespace);
\r
606 Assert.AreEqual (string.Empty, tm.ElementName, "#B1");
\r
607 Assert.IsNull (tm.Namespace, "#B2");
\r
608 Assert.AreEqual ("XmlElement", tm.TypeName, "#B3");
\r
609 Assert.AreEqual ("System.Xml.XmlElement", tm.TypeFullName, "#B4");
\r
611 XmlRootAttribute root = new XmlRootAttribute ("somename");
\r
612 root.Namespace = SomeNamespace;
\r
613 tm = Map (type, root);
\r
614 Assert.AreEqual ("somename", tm.ElementName, "#C1");
\r
615 Assert.IsNull (tm.Namespace, "#C2");
\r
616 Assert.AreEqual ("XmlElement", tm.TypeName, "#C3");
\r
617 Assert.AreEqual ("System.Xml.XmlElement", tm.TypeFullName, "#C4");
\r
619 tm = Map (type, AnotherNamespace, root);
\r
620 Assert.AreEqual ("somename", tm.ElementName, "#D1");
\r
621 Assert.IsNull (tm.Namespace, "#D2");
\r
622 Assert.AreEqual ("XmlElement", tm.TypeName, "#D3");
\r
623 Assert.AreEqual ("System.Xml.XmlElement", tm.TypeFullName, "#D4");
\r
625 root.Namespace = null;
\r
626 tm = Map (type, root);
\r
627 Assert.AreEqual ("somename", tm.ElementName, "#E1");
\r
628 Assert.IsNull (tm.Namespace, "#E2");
\r
629 Assert.AreEqual ("XmlElement", tm.TypeName, "#E3");
\r
630 Assert.AreEqual ("System.Xml.XmlElement", tm.TypeFullName, "#E4");
\r
632 tm = Map (type, AnotherNamespace, root);
\r
633 Assert.AreEqual ("somename", tm.ElementName, "#F1");
\r
634 Assert.IsNull (tm.Namespace, "#F2");
\r
635 Assert.AreEqual ("XmlElement", tm.TypeName, "#F3");
\r
636 Assert.AreEqual ("System.Xml.XmlElement", tm.TypeFullName, "#F4");
\r
640 [Category ("NotWorking")] // mark it NotWorking until fixes have landed in svn
\r
641 public void TestXmlNotationTypeMapping ()
\r
643 Type type = typeof (XmlNotation);
\r
645 XmlTypeMapping tm = Map (type);
\r
646 Assert.AreEqual (string.Empty, tm.ElementName, "#1");
\r
647 Assert.IsNull (tm.Namespace, "#2");
\r
648 Assert.AreEqual ("XmlNotation", tm.TypeName, "#3");
\r
649 Assert.AreEqual ("System.Xml.XmlNotation", tm.TypeFullName, "#4");
\r
651 tm = Map (type, AnotherNamespace);
\r
652 Assert.AreEqual (string.Empty, tm.ElementName, "#B1");
\r
653 Assert.IsNull (tm.Namespace, "#B2");
\r
654 Assert.AreEqual ("XmlNotation", tm.TypeName, "#B3");
\r
655 Assert.AreEqual ("System.Xml.XmlNotation", tm.TypeFullName, "#B4");
\r
657 XmlRootAttribute root = new XmlRootAttribute ("somename");
\r
658 root.Namespace = SomeNamespace;
\r
659 tm = Map (type, root);
\r
660 Assert.AreEqual ("somename", tm.ElementName, "#C1");
\r
661 Assert.IsNull (tm.Namespace, "#C2");
\r
662 Assert.AreEqual ("XmlNotation", tm.TypeName, "#C3");
\r
663 Assert.AreEqual ("System.Xml.XmlNotation", tm.TypeFullName, "#C4");
\r
665 tm = Map (type, AnotherNamespace, root);
\r
666 Assert.AreEqual ("somename", tm.ElementName, "#D1");
\r
667 Assert.IsNull (tm.Namespace, "#D2");
\r
668 Assert.AreEqual ("XmlNotation", tm.TypeName, "#D3");
\r
669 Assert.AreEqual ("System.Xml.XmlNotation", tm.TypeFullName, "#D4");
\r
671 root.Namespace = null;
\r
672 tm = Map (type, root);
\r
673 Assert.AreEqual ("somename", tm.ElementName, "#E1");
\r
674 Assert.IsNull (tm.Namespace, "#E2");
\r
675 Assert.AreEqual ("XmlNotation", tm.TypeName, "#E3");
\r
676 Assert.AreEqual ("System.Xml.XmlNotation", tm.TypeFullName, "#E4");
\r
678 tm = Map (type, AnotherNamespace, root);
\r
679 Assert.AreEqual ("somename", tm.ElementName, "#F1");
\r
680 Assert.IsNull (tm.Namespace, "#F2");
\r
681 Assert.AreEqual ("XmlNotation", tm.TypeName, "#F3");
\r
682 Assert.AreEqual ("System.Xml.XmlNotation", tm.TypeFullName, "#F4");
\r
686 public void TestXmlSerializableTypeMapping ()
\r
688 XmlTypeMapping tm = Map (typeof (Employee));
\r
689 Assert.AreEqual ("Employee", tm.ElementName, "#1");
\r
690 Assert.AreEqual (string.Empty, tm.Namespace, "#2");
\r
691 Assert.AreEqual ("Employee", tm.TypeName, "#3");
\r
692 Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.Employee", tm.TypeFullName, "#4");
\r
697 [Category ("NotWorking")] // mark it NotWorking until fixes have landed in svn
\r
699 public void TestXmlSerializableTypeMapping_Array ()
\r
701 XmlTypeMapping tm = Map (typeof (Employee[]));
\r
702 Assert.AreEqual ("ArrayOfEmployee", tm.ElementName, "#A1");
\r
703 Assert.AreEqual (string.Empty, tm.Namespace, "#A2");
\r
705 Assert.AreEqual ("ArrayOfEmployee", tm.TypeName, "#A3");
\r
707 Assert.AreEqual ("Employee[]", tm.TypeName, "#A3");
\r
709 Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.Employee[]", tm.TypeFullName, "#A4");
\r
711 tm = Map (typeof (Employee[][]));
\r
712 Assert.AreEqual ("ArrayOfArrayOfEmployee", tm.ElementName, "#B1");
\r
713 Assert.AreEqual (string.Empty, tm.Namespace, "#B2");
\r
715 Assert.AreEqual ("ArrayOfArrayOfEmployee", tm.TypeName, "#B3");
\r
717 Assert.AreEqual ("Employee[][]", tm.TypeName, "#B3");
\r
719 Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.Employee[][]", tm.TypeFullName, "#B4");
\r
721 tm = Map (typeof (Employee[][][]));
\r
722 Assert.AreEqual ("ArrayOfArrayOfArrayOfEmployee", tm.ElementName, "#C1");
\r
723 Assert.AreEqual (string.Empty, tm.Namespace, "#C2");
\r
725 Assert.AreEqual ("ArrayOfArrayOfArrayOfEmployee", tm.TypeName, "#C3");
\r
727 Assert.AreEqual ("Employee[][][]", tm.TypeName, "#C3");
\r
729 Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.Employee[][][]", tm.TypeFullName, "#C4");
\r
733 public void TestClassTypeMapping_NestedStruct ()
\r
735 XmlTypeMapping tm = Map (typeof (NestedStruct));
\r
736 Assert.AreEqual ("NestedStruct", tm.ElementName, "#1");
\r
737 Assert.AreEqual (string.Empty, tm.Namespace, "#2");
\r
738 Assert.AreEqual ("NestedStruct", tm.TypeName, "#3");
\r
739 Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.NestedStruct", tm.TypeFullName, "#4");
\r
743 [ExpectedException (typeof (ArgumentNullException))]
\r
744 public void TestNullTypeMapping()
\r
750 public void TestIntTypeMappingWithDefaultNamespaces()
\r
752 XmlTypeMapping tm = Map(typeof(int), SomeNamespace);
\r
753 Assert.AreEqual ("int", tm.ElementName, "#1");
\r
754 Assert.AreEqual (SomeNamespace, tm.Namespace, "#2");
\r
755 Assert.AreEqual ("Int32", tm.TypeName, "#3");
\r
756 Assert.AreEqual ("System.Int32", tm.TypeFullName, "#4");
\r
760 [Category ("NotWorking")] // mark it NotWorking until fixes have landed in svn
\r
761 public void TestStructTypeMapping ()
\r
763 XmlTypeMapping tm = Map (typeof (TimeSpan));
\r
764 Assert.AreEqual ("TimeSpan", tm.ElementName, "#1");
\r
765 Assert.AreEqual (string.Empty, tm.Namespace, "#2");
\r
766 Assert.AreEqual ("TimeSpan", tm.TypeName, "#3");
\r
767 Assert.AreEqual ("System.TimeSpan", tm.TypeFullName, "#4");
\r
771 [Category ("NotWorking")] // mark it NotWorking until fixes have landed in svn
\r
772 public void TestStructTypeMapping_Array ()
\r
774 XmlTypeMapping tm = Map (typeof (TimeSpan[]));
\r
775 Assert.AreEqual ("ArrayOfTimeSpan", tm.ElementName, "#A1");
\r
776 Assert.AreEqual (string.Empty, tm.Namespace, "#A2");
\r
778 Assert.AreEqual ("ArrayOfTimeSpan", tm.TypeName, "#A3");
\r
780 Assert.AreEqual ("TimeSpan[]", tm.TypeName, "#A3");
\r
782 Assert.AreEqual ("System.TimeSpan[]", tm.TypeFullName, "#A4");
\r
784 tm = Map (typeof (TimeSpan[][]));
\r
785 Assert.AreEqual ("ArrayOfArrayOfTimeSpan", tm.ElementName, "#B1");
\r
786 Assert.AreEqual (string.Empty, tm.Namespace, "#B2");
\r
788 Assert.AreEqual ("ArrayOfArrayOfTimeSpan", tm.TypeName, "#B3");
\r
790 Assert.AreEqual ("TimeSpan[][]", tm.TypeName, "#B3");
\r
792 Assert.AreEqual ("System.TimeSpan[][]", tm.TypeFullName, "#B4");
\r
794 tm = Map (typeof (TimeSpan[][][]));
\r
795 Assert.AreEqual ("ArrayOfArrayOfArrayOfTimeSpan", tm.ElementName, "#C1");
\r
796 Assert.AreEqual (string.Empty, tm.Namespace, "#C2");
\r
798 Assert.AreEqual ("ArrayOfArrayOfArrayOfTimeSpan", tm.TypeName, "#C3");
\r
800 Assert.AreEqual ("TimeSpan[][][]", tm.TypeName, "#C3");
\r
802 Assert.AreEqual ("System.TimeSpan[][][]", tm.TypeFullName, "#C4");
\r
806 public void TestEnumTypeMapping ()
\r
808 XmlTypeMapping tm = Map (typeof (AttributeTargets));
\r
809 Assert.AreEqual ("AttributeTargets", tm.ElementName, "#1");
\r
810 Assert.AreEqual (string.Empty, tm.Namespace, "#2");
\r
811 Assert.AreEqual ("AttributeTargets", tm.TypeName, "#3");
\r
812 Assert.AreEqual ("System.AttributeTargets", tm.TypeFullName, "#4");
\r
817 [Category ("NotWorking")] // mark it NotWorking until fixes have landed in svn
\r
819 public void TestEnumTypeMapping_Array ()
\r
821 XmlTypeMapping tm = Map (typeof (AttributeTargets[]));
\r
822 Assert.AreEqual ("ArrayOfAttributeTargets", tm.ElementName, "#A1");
\r
823 Assert.AreEqual (string.Empty, tm.Namespace, "#A2");
\r
825 Assert.AreEqual ("ArrayOfAttributeTargets", tm.TypeName, "#A3");
\r
827 Assert.AreEqual ("AttributeTargets[]", tm.TypeName, "#A3");
\r
829 Assert.AreEqual ("System.AttributeTargets[]", tm.TypeFullName, "#A4");
\r
831 tm = Map (typeof (AttributeTargets[][]));
\r
832 Assert.AreEqual ("ArrayOfArrayOfAttributeTargets", tm.ElementName, "#B1");
\r
833 Assert.AreEqual (string.Empty, tm.Namespace, "#B2");
\r
835 Assert.AreEqual ("ArrayOfArrayOfAttributeTargets", tm.TypeName, "#B3");
\r
837 Assert.AreEqual ("AttributeTargets[][]", tm.TypeName, "#B3");
\r
839 Assert.AreEqual ("System.AttributeTargets[][]", tm.TypeFullName, "#B4");
\r
841 tm = Map (typeof (AttributeTargets[][][]));
\r
842 Assert.AreEqual ("ArrayOfArrayOfArrayOfAttributeTargets", tm.ElementName, "#C1");
\r
843 Assert.AreEqual (string.Empty, tm.Namespace, "#C2");
\r
845 Assert.AreEqual ("ArrayOfArrayOfArrayOfAttributeTargets", tm.TypeName, "#C3");
\r
847 Assert.AreEqual ("AttributeTargets[][][]", tm.TypeName, "#C3");
\r
849 Assert.AreEqual ("System.AttributeTargets[][][]", tm.TypeFullName, "#C4");
\r
853 public void TestClassTypeMapping()
\r
855 XmlTypeMapping tm = Map (typeof (SimpleClass));
\r
856 Assert.AreEqual ("SimpleClass", tm.ElementName, "#1");
\r
857 Assert.AreEqual (string.Empty, tm.Namespace, "#2");
\r
858 Assert.AreEqual ("SimpleClass", tm.TypeName, "#3");
\r
859 Assert.AreEqual ("MonoTests.System.Xml.TestClasses.SimpleClass", tm.TypeFullName, "#4");
\r
864 [Category ("NotWorking")] // mark it NotWorking until fixes have landed in svn
\r
866 public void TestClassTypeMapping_Array ()
\r
868 XmlTypeMapping tm = Map (typeof (SimpleClass[]));
\r
869 Assert.AreEqual ("ArrayOfSimpleClass", tm.ElementName, "#A1");
\r
870 Assert.AreEqual (string.Empty, tm.Namespace, "#A2");
\r
872 Assert.AreEqual ("ArrayOfSimpleClass", tm.TypeName, "#A3");
\r
874 Assert.AreEqual ("SimpleClass[]", tm.TypeName, "#A3");
\r
876 Assert.AreEqual ("MonoTests.System.Xml.TestClasses.SimpleClass[]", tm.TypeFullName, "#A4");
\r
878 tm = Map (typeof (SimpleClass[][]));
\r
879 Assert.AreEqual ("ArrayOfArrayOfSimpleClass", tm.ElementName, "#B1");
\r
880 Assert.AreEqual (string.Empty, tm.Namespace, "#B2");
\r
882 Assert.AreEqual ("ArrayOfArrayOfSimpleClass", tm.TypeName, "#B3");
\r
884 Assert.AreEqual ("SimpleClass[][]", tm.TypeName, "#B3");
\r
886 Assert.AreEqual ("MonoTests.System.Xml.TestClasses.SimpleClass[][]", tm.TypeFullName, "#B4");
\r
888 tm = Map (typeof (SimpleClass[][][]));
\r
889 Assert.AreEqual ("ArrayOfArrayOfArrayOfSimpleClass", tm.ElementName, "#C1");
\r
890 Assert.AreEqual (string.Empty, tm.Namespace, "#C2");
\r
892 Assert.AreEqual ("ArrayOfArrayOfArrayOfSimpleClass", tm.TypeName, "#C3");
\r
894 Assert.AreEqual ("SimpleClass[][][]", tm.TypeName, "#C3");
\r
896 Assert.AreEqual ("MonoTests.System.Xml.TestClasses.SimpleClass[][][]", tm.TypeFullName, "#C4");
\r
900 [ExpectedException (typeof (NotSupportedException))]
\r
901 public void TypeMapping_IDictionary ()
\r
903 // The type MonoTests.System.Xml.TestClasses.DictionaryWithIndexer
\r
904 // is not supported because it implements IDictionary.
\r
905 Map (typeof (DictionaryWithIndexer));
\r
910 [Category ("NotWorking")] // mark it NotWorking until fixes have landed in svn
\r
912 public void TypeMapping_IEnumerable_SimpleClass ()
\r
914 XmlTypeMapping tm = Map (typeof (SimpleClassEnumerable));
\r
915 Assert.AreEqual ("ArrayOfSimpleClass", tm.ElementName, "#1");
\r
916 Assert.AreEqual (string.Empty, tm.Namespace, "#2");
\r
917 Assert.AreEqual ("SimpleClassEnumerable", tm.TypeName, "#3");
\r
918 Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.SimpleClassEnumerable", tm.TypeFullName, "#4");
\r
920 tm = Map (typeof (SimpleClassEnumerable[]));
\r
921 Assert.AreEqual ("ArrayOfArrayOfSimpleClass", tm.ElementName, "#A1");
\r
922 Assert.AreEqual (string.Empty, tm.Namespace, "#A2");
\r
924 Assert.AreEqual ("ArrayOfSimpleClassEnumerable", tm.TypeName, "#A3");
\r
926 Assert.AreEqual ("SimpleClassEnumerable[]", tm.TypeName, "#A3");
\r
928 Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.SimpleClassEnumerable[]", tm.TypeFullName, "#A4");
\r
930 tm = Map (typeof (SimpleClassEnumerable[][]));
\r
931 Assert.AreEqual ("ArrayOfArrayOfArrayOfSimpleClass", tm.ElementName, "#B1");
\r
932 Assert.AreEqual (string.Empty, tm.Namespace, "#B2");
\r
934 Assert.AreEqual ("ArrayOfArrayOfSimpleClassEnumerable", tm.TypeName, "#B3");
\r
936 Assert.AreEqual ("SimpleClassEnumerable[][]", tm.TypeName, "#B3");
\r
938 Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.SimpleClassEnumerable[][]", tm.TypeFullName, "#B4");
\r
940 tm = Map (typeof (SimpleClassEnumerable[][][]));
\r
941 Assert.AreEqual ("ArrayOfArrayOfArrayOfArrayOfSimpleClass", tm.ElementName, "#C1");
\r
942 Assert.AreEqual (string.Empty, tm.Namespace, "#C2");
\r
944 Assert.AreEqual ("ArrayOfArrayOfArrayOfSimpleClassEnumerable", tm.TypeName, "#C3");
\r
946 Assert.AreEqual ("SimpleClassEnumerable[][][]", tm.TypeName, "#C3");
\r
948 Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.SimpleClassEnumerable[][][]", tm.TypeFullName, "#C4");
\r
953 [Category ("NotWorking")] // mark it NotWorking until fixes have landed in svn
\r
955 public void TypeMapping_IEnumerable_Object ()
\r
957 XmlTypeMapping tm = Map (typeof (ObjectEnumerable));
\r
958 Assert.AreEqual ("ArrayOfAnyType", tm.ElementName, "#1");
\r
959 Assert.AreEqual (string.Empty, tm.Namespace, "#2");
\r
960 Assert.AreEqual ("ObjectEnumerable", tm.TypeName, "#3");
\r
961 Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.ObjectEnumerable", tm.TypeFullName, "#4");
\r
963 tm = Map (typeof (ObjectEnumerable[]));
\r
964 Assert.AreEqual ("ArrayOfArrayOfAnyType", tm.ElementName, "#A1");
\r
965 Assert.AreEqual (string.Empty, tm.Namespace, "#A2");
\r
967 Assert.AreEqual ("ArrayOfObjectEnumerable", tm.TypeName, "#A3");
\r
969 Assert.AreEqual ("ObjectEnumerable[]", tm.TypeName, "#A3");
\r
971 Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.ObjectEnumerable[]", tm.TypeFullName, "#A4");
\r
973 tm = Map (typeof (ObjectEnumerable[][]));
\r
974 Assert.AreEqual ("ArrayOfArrayOfArrayOfAnyType", tm.ElementName, "#B1");
\r
975 Assert.AreEqual (string.Empty, tm.Namespace, "#B2");
\r
977 Assert.AreEqual ("ArrayOfArrayOfObjectEnumerable", tm.TypeName, "#B3");
\r
979 Assert.AreEqual ("ObjectEnumerable[][]", tm.TypeName, "#B3");
\r
981 Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.ObjectEnumerable[][]", tm.TypeFullName, "#B4");
\r
983 tm = Map (typeof (ObjectEnumerable[][][]));
\r
984 Assert.AreEqual ("ArrayOfArrayOfArrayOfArrayOfAnyType", tm.ElementName, "#C1");
\r
985 Assert.AreEqual (string.Empty, tm.Namespace, "#C2");
\r
987 Assert.AreEqual ("ArrayOfArrayOfArrayOfObjectEnumerable", tm.TypeName, "#C3");
\r
989 Assert.AreEqual ("ObjectEnumerable[][][]", tm.TypeName, "#C3");
\r
991 Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.ObjectEnumerable[][][]", tm.TypeFullName, "#C4");
\r
995 [ExpectedException (typeof (InvalidOperationException))]
\r
996 public void TypeMapping_IEnumerable_Object_NoMatchingAddMethod ()
\r
998 Map (typeof (ObjectEnumerableNoMatchingAddMethod));
\r
1002 [ExpectedException (typeof (InvalidOperationException))]
\r
1003 public void TypeMapping_IEnumerable_Object_NoMatchingAddMethod_Array ()
\r
1005 Map (typeof (ObjectEnumerableNoMatchingAddMethod[]));
\r
1010 [Category ("NotWorking")] // mark it NotWorking until fixes have landed in svn
\r
1012 public void TypeMapping_IEnumerable_SimpleClass_PrivateCurrent ()
\r
1014 XmlTypeMapping tm = Map (typeof (SimpleClassEnumerablePrivateCurrent));
\r
1015 Assert.AreEqual ("ArrayOfAnyType", tm.ElementName, "#1");
\r
1016 Assert.AreEqual (string.Empty, tm.Namespace, "#2");
\r
1017 Assert.AreEqual ("SimpleClassEnumerablePrivateCurrent", tm.TypeName, "#3");
\r
1018 Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.SimpleClassEnumerablePrivateCurrent", tm.TypeFullName, "#4");
\r
1020 tm = Map (typeof (SimpleClassEnumerablePrivateCurrent[]));
\r
1021 Assert.AreEqual ("ArrayOfArrayOfAnyType", tm.ElementName, "#A1");
\r
1022 Assert.AreEqual (string.Empty, tm.Namespace, "#A2");
\r
1024 Assert.AreEqual ("ArrayOfSimpleClassEnumerablePrivateCurrent", tm.TypeName, "#A3");
\r
1026 Assert.AreEqual ("SimpleClassEnumerablePrivateCurrent[]", tm.TypeName, "#A3");
\r
1028 Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.SimpleClassEnumerablePrivateCurrent[]", tm.TypeFullName, "#A4");
\r
1030 tm = Map (typeof (SimpleClassEnumerablePrivateCurrent[][]));
\r
1031 Assert.AreEqual ("ArrayOfArrayOfArrayOfAnyType", tm.ElementName, "#B1");
\r
1032 Assert.AreEqual (string.Empty, tm.Namespace, "#B2");
\r
1034 Assert.AreEqual ("ArrayOfArrayOfSimpleClassEnumerablePrivateCurrent", tm.TypeName, "#B3");
\r
1036 Assert.AreEqual ("SimpleClassEnumerablePrivateCurrent[][]", tm.TypeName, "#B3");
\r
1038 Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.SimpleClassEnumerablePrivateCurrent[][]", tm.TypeFullName, "#B4");
\r
1040 tm = Map (typeof (SimpleClassEnumerablePrivateCurrent[][][]));
\r
1041 Assert.AreEqual ("ArrayOfArrayOfArrayOfArrayOfAnyType", tm.ElementName, "#C1");
\r
1042 Assert.AreEqual (string.Empty, tm.Namespace, "#C2");
\r
1044 Assert.AreEqual ("ArrayOfArrayOfArrayOfSimpleClassEnumerablePrivateCurrent", tm.TypeName, "#C3");
\r
1046 Assert.AreEqual ("SimpleClassEnumerablePrivateCurrent[][][]", tm.TypeName, "#C3");
\r
1048 Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.SimpleClassEnumerablePrivateCurrent[][][]", tm.TypeFullName, "#C4");
\r
1053 [Category ("NotWorking")] // mark it NotWorking until fixes have landed in svn
\r
1056 [Category ("NotDotNet")] // results in NullReferenceException in .NET 1.1 (SP1)
\r
1058 public void TypeMapping_IEnumerable_SimpleClass_PrivateGetEnumerator ()
\r
1060 XmlTypeMapping tm = Map (typeof (SimpleClassEnumerablePrivateGetEnumerator));
\r
1061 Assert.AreEqual ("ArrayOfAnyType", tm.ElementName, "#1");
\r
1062 Assert.AreEqual (string.Empty, tm.Namespace, "#2");
\r
1063 Assert.AreEqual ("SimpleClassEnumerablePrivateGetEnumerator", tm.TypeName, "#3");
\r
1064 Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.SimpleClassEnumerablePrivateGetEnumerator", tm.TypeFullName, "#4");
\r
1066 tm = Map (typeof (SimpleClassEnumerablePrivateGetEnumerator[]));
\r
1067 Assert.AreEqual ("ArrayOfArrayOfAnyType", tm.ElementName, "#A1");
\r
1068 Assert.AreEqual (string.Empty, tm.Namespace, "#A2");
\r
1070 Assert.AreEqual ("ArrayOfSimpleClassEnumerablePrivateGetEnumerator", tm.TypeName, "#A3");
\r
1072 Assert.AreEqual ("SimpleClassEnumerablePrivateGetEnumerator[]", tm.TypeName, "#A3");
\r
1074 Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.SimpleClassEnumerablePrivateGetEnumerator[]", tm.TypeFullName, "#A4");
\r
1076 tm = Map (typeof (SimpleClassEnumerablePrivateGetEnumerator[][]));
\r
1077 Assert.AreEqual ("ArrayOfArrayOfArrayOfAnyType", tm.ElementName, "#B1");
\r
1078 Assert.AreEqual (string.Empty, tm.Namespace, "#B2");
\r
1080 Assert.AreEqual ("ArrayOfArrayOfSimpleClassEnumerablePrivateGetEnumerator", tm.TypeName, "#B3");
\r
1082 Assert.AreEqual ("SimpleClassEnumerablePrivateGetEnumerator[][]", tm.TypeName, "#B3");
\r
1084 Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.SimpleClassEnumerablePrivateGetEnumerator[][]", tm.TypeFullName, "#B4");
\r
1086 tm = Map (typeof (SimpleClassEnumerablePrivateGetEnumerator[][][]));
\r
1087 Assert.AreEqual ("ArrayOfArrayOfArrayOfArrayOfAnyType", tm.ElementName, "#C1");
\r
1088 Assert.AreEqual (string.Empty, tm.Namespace, "#C2");
\r
1090 Assert.AreEqual ("ArrayOfArrayOfArrayOfSimpleClassEnumerablePrivateGetEnumerator", tm.TypeName, "#C3");
\r
1092 Assert.AreEqual ("SimpleClassEnumerablePrivateGetEnumerator[][][]", tm.TypeName, "#C3");
\r
1094 Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.SimpleClassEnumerablePrivateGetEnumerator[][][]", tm.TypeFullName, "#C4");
\r
1098 [ExpectedException (typeof (InvalidOperationException))]
\r
1099 public void TypeMapping_ICollection_Object_NoMatchingAddMethod ()
\r
1101 Map (typeof (ObjectCollectionNoMatchingAddMethod));
\r
1105 [ExpectedException (typeof (InvalidOperationException))]
\r
1106 public void TypeMapping_ICollection_Object_NoMatchingAddMethod_Array ()
\r
1108 Map (typeof (ObjectCollectionNoMatchingAddMethod[]));
\r
1112 [ExpectedException (typeof (InvalidOperationException))]
\r
1113 public void TypeMapping_ICollection_SimpleClass_NoMatchingAddMethod ()
\r
1115 Map (typeof (SimpleClassCollectionNoMatchingAddMethod));
\r
1119 [ExpectedException (typeof (InvalidOperationException))]
\r
1120 public void TypeMapping_ICollection_SimpleClass_NoMatchingAddMethod_Array ()
\r
1122 Map (typeof (SimpleClassCollectionNoMatchingAddMethod[]));
\r
1127 [Category ("NotWorking")] // mark it NotWorking until fixes have landed in svn
\r
1129 public void TypeMapping_ICollection_SimpleClass ()
\r
1131 XmlTypeMapping tm = Map (typeof (SimpleClassCollection));
\r
1132 Assert.AreEqual ("ArrayOfSimpleClass", tm.ElementName, "#1");
\r
1133 Assert.AreEqual (string.Empty, tm.Namespace, "#2");
\r
1134 Assert.AreEqual ("SimpleClassCollection", tm.TypeName, "#3");
\r
1135 Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.SimpleClassCollection", tm.TypeFullName, "#4");
\r
1137 tm = Map (typeof (SimpleClassCollection[]));
\r
1138 Assert.AreEqual ("ArrayOfArrayOfSimpleClass", tm.ElementName, "#A1");
\r
1139 Assert.AreEqual (string.Empty, tm.Namespace, "#A2");
\r
1141 Assert.AreEqual ("ArrayOfSimpleClassCollection", tm.TypeName, "#A3");
\r
1143 Assert.AreEqual ("SimpleClassCollection[]", tm.TypeName, "#A3");
\r
1145 Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.SimpleClassCollection[]", tm.TypeFullName, "#A4");
\r
1147 tm = Map (typeof (SimpleClassCollection[][]));
\r
1148 Assert.AreEqual ("ArrayOfArrayOfArrayOfSimpleClass", tm.ElementName, "#B1");
\r
1149 Assert.AreEqual (string.Empty, tm.Namespace, "#B2");
\r
1151 Assert.AreEqual ("ArrayOfArrayOfSimpleClassCollection", tm.TypeName, "#B3");
\r
1153 Assert.AreEqual ("SimpleClassCollection[][]", tm.TypeName, "#B3");
\r
1155 Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.SimpleClassCollection[][]", tm.TypeFullName, "#B4");
\r
1157 tm = Map (typeof (SimpleClassCollection[][][]));
\r
1158 Assert.AreEqual ("ArrayOfArrayOfArrayOfArrayOfSimpleClass", tm.ElementName, "#C1");
\r
1159 Assert.AreEqual (string.Empty, tm.Namespace, "#C2");
\r
1161 Assert.AreEqual ("ArrayOfArrayOfArrayOfSimpleClassCollection", tm.TypeName, "#C3");
\r
1163 Assert.AreEqual ("SimpleClassCollection[][][]", tm.TypeName, "#C3");
\r
1165 Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.SimpleClassCollection[][][]", tm.TypeFullName, "#C4");
\r
1170 [Category ("NotWorking")] // mark it NotWorking until fixes have landed in svn
\r
1172 public void TypeMapping_ICollection_Object ()
\r
1174 XmlTypeMapping tm = Map (typeof (ObjectCollection));
\r
1175 Assert.AreEqual ("ArrayOfAnyType", tm.ElementName, "#1");
\r
1176 Assert.AreEqual (string.Empty, tm.Namespace, "#2");
\r
1177 Assert.AreEqual ("ObjectCollection", tm.TypeName, "#3");
\r
1178 Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.ObjectCollection", tm.TypeFullName, "#4");
\r
1180 tm = Map (typeof (ObjectCollection[]));
\r
1181 Assert.AreEqual ("ArrayOfArrayOfAnyType", tm.ElementName, "#A1");
\r
1182 Assert.AreEqual (string.Empty, tm.Namespace, "#A2");
\r
1184 Assert.AreEqual ("ArrayOfObjectCollection", tm.TypeName, "#A3");
\r
1186 Assert.AreEqual ("ObjectCollection[]", tm.TypeName, "#A3");
\r
1188 Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.ObjectCollection[]", tm.TypeFullName, "#A4");
\r
1190 tm = Map (typeof (ObjectCollection[][]));
\r
1191 Assert.AreEqual ("ArrayOfArrayOfArrayOfAnyType", tm.ElementName, "#B1");
\r
1192 Assert.AreEqual (string.Empty, tm.Namespace, "#B2");
\r
1194 Assert.AreEqual ("ArrayOfArrayOfObjectCollection", tm.TypeName, "#B3");
\r
1196 Assert.AreEqual ("ObjectCollection[][]", tm.TypeName, "#B3");
\r
1198 Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.ObjectCollection[][]", tm.TypeFullName, "#B4");
\r
1200 tm = Map (typeof (ObjectCollection[][][]));
\r
1201 Assert.AreEqual ("ArrayOfArrayOfArrayOfArrayOfAnyType", tm.ElementName, "#C1");
\r
1202 Assert.AreEqual (string.Empty, tm.Namespace, "#C2");
\r
1204 Assert.AreEqual ("ArrayOfArrayOfArrayOfObjectCollection", tm.TypeName, "#C3");
\r
1206 Assert.AreEqual ("ObjectCollection[][][]", tm.TypeName, "#C3");
\r
1208 Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.ObjectCollection[][][]", tm.TypeFullName, "#C4");
\r
1212 [ExpectedException (typeof (InvalidOperationException))]
\r
1213 public void TypeMapping_ICollection_Object_NoIntIndexer ()
\r
1215 Map (typeof (ObjectCollectionNoIntIndexer));
\r
1219 [ExpectedException (typeof (InvalidOperationException))]
\r
1220 public void TypeMapping_ICollection_Object_NoIntIndexer_Array ()
\r
1222 Map (typeof (ObjectCollectionNoIntIndexer[]));
\r
1226 [ExpectedException (typeof (InvalidOperationException))]
\r
1227 public void TypeMapping_ICollection_SimpleClass_NoIntIndexer ()
\r
1229 Map (typeof (SimpleClassCollectionNoIntIndexer));
\r
1233 [ExpectedException (typeof (InvalidOperationException))]
\r
1234 public void TypeMapping_ICollection_SimpleClass_NoIntIndexer_Array ()
\r
1236 Map (typeof (SimpleClassCollectionNoIntIndexer[]));
\r
1240 [ExpectedException (typeof (ArgumentNullException))]
\r
1241 public void TypeMapping_Null ()
\r
1243 Map ((Type) null);
\r
1247 [ExpectedException (typeof (NotSupportedException))]
\r
1248 public void TypeMapping_Void ()
\r
1250 Map (typeof (void));
\r
1254 public void TypeMapping_WrongChoices ()
\r
1257 Map (typeof (WrongChoices));
\r
1258 Assert.Fail ("#1");
\r
1259 } catch (InvalidOperationException ex) {
\r
1260 // There was an error reflecting type 'MonoTests.System.Xml.TestClasses.WrongChoices'
\r
1261 Assert.IsNotNull (ex.Message, "#2");
\r
1262 Assert.IsTrue (ex.Message.IndexOf ("'" + typeof (WrongChoices).FullName + "'") != -1, "#3");
\r
1263 Assert.IsNotNull (ex.InnerException, "#4");
\r
1265 // There was an error reflecting field 'MyChoice'
\r
1266 Assert.IsNotNull (ex.InnerException.Message, "#5");
\r
1267 Assert.IsTrue (ex.InnerException.Message.IndexOf ("'MyChoice'") != -1, "#6");
\r
1268 Assert.IsNotNull (ex.InnerException.InnerException, "#7");
\r
1270 // Type MonoTests.System.Xml.TestClasses.ItemChoiceType is missing
\r
1271 // enumeration value 'StrangeOne' for element 'StrangeOne' from
\r
1273 Assert.IsNotNull (ex.InnerException.InnerException.Message, "#8");
\r
1274 Assert.IsTrue (ex.InnerException.InnerException.Message.IndexOf (typeof (ItemChoiceType).FullName) != -1, "#9");
\r
1275 Assert.IsTrue (ex.InnerException.InnerException.Message.IndexOf ("'StrangeOne'") != -1, "#10");
\r
1276 Assert.IsTrue (ex.InnerException.InnerException.Message.IndexOf ("''") != -1, "#11");
\r
1280 [Test] // bug #77591
\r
1281 public void TypeMapping_XmlText_PrimitiveTypes ()
\r
1283 XmlAttributeOverrides overrides = null;
\r
1284 XmlAttributes attrs = null;
\r
1286 overrides = new XmlAttributeOverrides ();
\r
1287 attrs = new XmlAttributes ();
\r
1288 attrs.XmlText = new XmlTextAttribute (typeof (int));
\r
1289 overrides.Add (typeof (Field), "Modifiers", attrs);
\r
1292 Map (typeof (Field), overrides);
\r
1293 Assert.Fail ("#A1");
\r
1294 } catch (InvalidOperationException ex) {
\r
1295 // There was an error reflecting type 'MonoTests.System.Xml.TestClasses.Field'
\r
1296 Assert.IsNotNull (ex.Message, "#A2");
\r
1297 Assert.IsTrue (ex.Message.IndexOf ("'" + typeof (Field).FullName + "'") != -1, "#A3");
\r
1298 Assert.IsNotNull (ex.InnerException, "#A4");
\r
1300 // There was an error reflecting field 'Modifiers'
\r
1301 Assert.IsNotNull (ex.InnerException.Message, "#A5");
\r
1302 Assert.IsTrue (ex.InnerException.Message.IndexOf ("'Modifiers'") != -1, "#A6");
\r
1303 Assert.IsNotNull (ex.InnerException.InnerException, "#A7");
\r
1305 // The type for XmlText may not be specified for primitive types
\r
1306 Assert.IsNotNull (ex.InnerException.InnerException.Message, "#A8");
\r
1307 Assert.IsTrue (ex.InnerException.InnerException.Message.IndexOf ("XmlText") != -1, "#A9");
\r
1310 overrides = new XmlAttributeOverrides ();
\r
1311 attrs = new XmlAttributes ();
\r
1312 attrs.XmlText = new XmlTextAttribute (typeof (int));
\r
1313 overrides.Add (typeof (Field), "Street", attrs);
\r
1316 Map (typeof (Field), overrides);
\r
1317 Assert.Fail ("#B1");
\r
1318 } catch (InvalidOperationException ex) {
\r
1319 // There was an error reflecting type 'MonoTests.System.Xml.TestClasses.Field'
\r
1320 Assert.IsNotNull (ex.Message, "#B2");
\r
1321 Assert.IsTrue (ex.Message.IndexOf ("'" + typeof (Field).FullName + "'") != -1, "#B3");
\r
1322 Assert.IsNotNull (ex.InnerException, "#B4");
\r
1324 // There was an error reflecting field 'Street'
\r
1325 Assert.IsNotNull (ex.InnerException.Message, "#B5");
\r
1326 Assert.IsTrue (ex.InnerException.Message.IndexOf ("'Street'") != -1, "#B6");
\r
1327 Assert.IsNotNull (ex.InnerException.InnerException, "#B7");
\r
1329 // The type for XmlText may not be specified for primitive types
\r
1330 Assert.IsNotNull (ex.InnerException.InnerException.Message, "#B8");
\r
1331 Assert.IsTrue (ex.InnerException.InnerException.Message.IndexOf ("XmlText") != -1, "#B9");
\r
1334 overrides = new XmlAttributeOverrides ();
\r
1335 attrs = new XmlAttributes ();
\r
1336 attrs.XmlText = new XmlTextAttribute (typeof (MapModifiers));
\r
1337 overrides.Add (typeof (Field), "Modifiers", attrs);
\r
1338 Map (typeof (Field), overrides);
\r
1340 overrides = new XmlAttributeOverrides ();
\r
1341 attrs = new XmlAttributes ();
\r
1342 attrs.XmlText = new XmlTextAttribute (typeof (string));
\r
1343 overrides.Add (typeof (Field), "Street", attrs);
\r
1344 Map (typeof (Field), overrides);
\r
1348 [Category ("NotWorking")] // mark it NotWorking until fixes have landed in svn
\r
1349 public void TestImportMembersMapping()
\r
1351 Type type = typeof(SimpleClass);
\r
1352 XmlAttributes attrs = new XmlAttributes();
\r
1353 XmlAttributeOverrides overrides = new XmlAttributeOverrides();
\r
1354 overrides.Add(typeof(SimpleClass), attrs);
\r
1356 XmlReflectionMember[] members = new XmlReflectionMember[0];
\r
1357 XmlMembersMapping mm;
\r
1360 mm = MembersMap(type, overrides, members, true);
\r
1361 Assert.Fail("Should not be able to fetch an empty XmlMembersMapping");
\r
1367 XmlReflectionMember rm = new XmlReflectionMember();
\r
1368 rm.IsReturnValue = false;
\r
1369 rm.MemberName = "something";
\r
1370 rm.MemberType = typeof(string);
\r
1371 members = new XmlReflectionMember[1];
\r
1374 mm = MembersMap(type, overrides, members, false);
\r
1376 Equals(mm.Count, 1);
\r
1378 XmlMemberMapping smm = mm[0];
\r
1379 Assert.IsFalse (smm.Any, "#1");
\r
1380 Assert.AreEqual ("something", smm.ElementName, "#2");
\r
1381 Assert.AreEqual ("something", smm.MemberName, "#3");
\r
1382 Assert.IsNull (smm.Namespace, "#4");
\r
1383 Assert.AreEqual ("System.String", smm.TypeFullName, "#5");
\r
1384 Assert.AreEqual ("string", smm.TypeName, "#6");
\r
1386 Assert.AreEqual (XmlSchemaNamespace, smm.TypeNamespace, "#7");
\r
1388 Assert.IsNull (smm.TypeNamespace, "#7");
\r
1391 rm = new XmlReflectionMember();
\r
1392 rm.IsReturnValue = false;
\r
1393 rm.MemberName = "nothing";
\r
1394 rm.MemberType = typeof(string);
\r
1395 members = new XmlReflectionMember[1];
\r
1398 mm = MembersMap(type, overrides, members, false);
\r
1399 Assert.AreEqual (1, mm.Count, "#8");
\r
1403 public void TestIntTypeMappingWithXmlRootAttribute()
\r
1405 const string TheNamespace = "another:urn";
\r
1406 XmlRootAttribute root = new XmlRootAttribute("price");
\r
1407 root.Namespace = TheNamespace;
\r
1409 XmlTypeMapping tm = Map(typeof(int), root);
\r
1410 Assert.AreEqual ("price", tm.ElementName, "#1");
\r
1411 Assert.AreEqual (TheNamespace, tm.Namespace, "#2");
\r
1412 Assert.AreEqual ("Int32", tm.TypeName, "#3");
\r
1413 Assert.AreEqual ("System.Int32", tm.TypeFullName, "#4");
\r
1417 [ExpectedException (typeof (InvalidOperationException))]
\r
1418 public void TestSerializeWrongChoice ()
\r
1420 new XmlSerializer (typeof(WrongChoices));
\r
1423 public class Employee : IXmlSerializable
\r
1425 private string _firstName;
\r
1426 private string _lastName;
\r
1427 private string _address;
\r
1429 public XmlSchema GetSchema ()
\r
1434 public void WriteXml (XmlWriter writer)
\r
1436 writer.WriteStartElement ("employee", "urn:devx-com");
\r
1437 writer.WriteAttributeString ("firstName", _firstName);
\r
1438 writer.WriteAttributeString ("lastName", _lastName);
\r
1439 writer.WriteAttributeString ("address", _address);
\r
1440 writer.WriteEndElement ();
\r
1443 public void ReadXml (XmlReader reader)
\r
1445 XmlNodeType type = reader.MoveToContent ();
\r
1446 if (type == XmlNodeType.Element && reader.LocalName == "employee") {
\r
1447 _firstName = reader["firstName"];
\r
1448 _lastName = reader["lastName"];
\r
1449 _address = reader["address"];
\r
1454 public class NestedStruct
\r
1456 public TimeSpan Period = TimeSpan.MaxValue;
\r
1459 public class ObjectEnumerable : IEnumerable
\r
1461 public void Add (int value)
\r
1465 public void Add (object value)
\r
1469 public IEnumerator GetEnumerator ()
\r
1471 return new ArrayList ().GetEnumerator ();
\r
1475 public class SimpleClassEnumerable : IEnumerable
\r
1477 public void Add (int value)
\r
1481 public void Add (object value)
\r
1485 IEnumerator IEnumerable.GetEnumerator ()
\r
1487 return GetEnumerator ();
\r
1490 public SimpleClassEnumerator GetEnumerator ()
\r
1492 return new SimpleClassEnumerator (new ArrayList ());
\r
1496 public class SimpleClassEnumerablePrivateGetEnumerator : IEnumerable
\r
1498 public void Add (object value)
\r
1502 IEnumerator IEnumerable.GetEnumerator ()
\r
1504 return new ArrayList ().GetEnumerator ();
\r
1508 public class SimpleClassEnumerablePrivateCurrent : IEnumerable
\r
1510 public void Add (object value)
\r
1514 IEnumerator IEnumerable.GetEnumerator ()
\r
1516 return GetEnumerator ();
\r
1519 public NoCurrentEnumerator GetEnumerator ()
\r
1521 return new NoCurrentEnumerator (new ArrayList ());
\r
1525 // GetEnumerator().Current returns object, but there's no corresponding
\r
1526 // Add (System.Object) method
\r
1527 public class ObjectEnumerableNoMatchingAddMethod : IEnumerable
\r
1529 public void Add (int value)
\r
1533 public IEnumerator GetEnumerator ()
\r
1535 return new ArrayList ().GetEnumerator ();
\r
1539 // GetEnumerator().Current returns SimpleClass, but there's no
\r
1540 // corresponding Add (SimpleClass) method
\r
1541 public class SimpleClassCollectionNoMatchingAddMethod : ICollection
\r
1543 public SimpleClass this[int index]
\r
1547 return (SimpleClass) _list[index];
\r
1553 get { return _list.Count; }
\r
1556 public bool IsSynchronized
\r
1558 get { return _list.IsSynchronized; }
\r
1561 public object SyncRoot
\r
1563 get { return _list.SyncRoot; }
\r
1566 public void CopyTo (Array array, int index)
\r
1568 _list.CopyTo (array, index);
\r
1571 IEnumerator IEnumerable.GetEnumerator ()
\r
1573 return GetEnumerator ();
\r
1576 public SimpleClassEnumerator GetEnumerator ()
\r
1578 return new SimpleClassEnumerator (_list);
\r
1581 private ArrayList _list = new ArrayList ();
\r
1584 // GetEnumerator().Current returns object, but there's no corresponding
\r
1585 // Add (System.Object) method
\r
1586 public class ObjectCollectionNoMatchingAddMethod : ICollection
\r
1588 public object this[int index]
\r
1592 return _list[index];
\r
1598 get { return _list.Count; }
\r
1601 public bool IsSynchronized
\r
1603 get { return _list.IsSynchronized; }
\r
1606 public object SyncRoot
\r
1608 get { return _list.SyncRoot; }
\r
1611 public void CopyTo (Array array, int index)
\r
1613 _list.CopyTo (array, index);
\r
1616 IEnumerator IEnumerable.GetEnumerator ()
\r
1618 return GetEnumerator ();
\r
1621 public IEnumerator GetEnumerator ()
\r
1623 return _list.GetEnumerator ();
\r
1626 private ArrayList _list = new ArrayList ();
\r
1629 // Does not have int indexer.
\r
1630 public class SimpleClassCollectionNoIntIndexer : ICollection
\r
1632 public SimpleClass this[string name]
\r
1636 return new SimpleClass ();
\r
1642 get { return _list.Count; }
\r
1645 public bool IsSynchronized
\r
1647 get { return _list.IsSynchronized; }
\r
1650 public object SyncRoot
\r
1652 get { return _list.SyncRoot; }
\r
1655 public void CopyTo (Array array, int index)
\r
1657 _list.CopyTo (array, index);
\r
1660 IEnumerator IEnumerable.GetEnumerator ()
\r
1662 return GetEnumerator ();
\r
1665 public SimpleClassEnumerator GetEnumerator ()
\r
1667 return new SimpleClassEnumerator (_list);
\r
1670 public void Add (SimpleClass value)
\r
1672 _list.Add (value);
\r
1675 private ArrayList _list = new ArrayList ();
\r
1678 // Does not have int indexer.
\r
1679 public class ObjectCollectionNoIntIndexer : ICollection
\r
1681 public object this[string name]
\r
1685 return new SimpleClass ();
\r
1691 get { return _list.Count; }
\r
1694 public bool IsSynchronized
\r
1696 get { return _list.IsSynchronized; }
\r
1699 public object SyncRoot
\r
1701 get { return _list.SyncRoot; }
\r
1704 public void CopyTo (Array array, int index)
\r
1706 _list.CopyTo (array, index);
\r
1709 public IEnumerator GetEnumerator ()
\r
1711 return _list.GetEnumerator ();
\r
1714 public void Add (object value)
\r
1716 _list.Add (value);
\r
1719 private ArrayList _list = new ArrayList ();
\r
1722 public class SimpleClassCollection : ICollection
\r
1724 public SimpleClass this[int index]
\r
1728 return (SimpleClass) _list[index];
\r
1734 get { return _list.Count; }
\r
1737 public bool IsSynchronized
\r
1739 get { return _list.IsSynchronized; }
\r
1742 public object SyncRoot
\r
1744 get { return _list.SyncRoot; }
\r
1747 public void CopyTo (Array array, int index)
\r
1749 _list.CopyTo (array, index);
\r
1752 IEnumerator IEnumerable.GetEnumerator ()
\r
1754 return GetEnumerator ();
\r
1757 public SimpleClassEnumerator GetEnumerator ()
\r
1759 return new SimpleClassEnumerator (_list);
\r
1762 public void Add (SimpleClass value)
\r
1764 _list.Add (value);
\r
1767 private ArrayList _list = new ArrayList ();
\r
1770 public class ObjectCollection : ICollection
\r
1772 public object this[int name]
\r
1776 return new SimpleClass ();
\r
1782 get { return _list.Count; }
\r
1785 public bool IsSynchronized
\r
1787 get { return _list.IsSynchronized; }
\r
1790 public object SyncRoot
\r
1792 get { return _list.SyncRoot; }
\r
1795 public void CopyTo (Array array, int index)
\r
1797 _list.CopyTo (array, index);
\r
1800 public IEnumerator GetEnumerator ()
\r
1802 return _list.GetEnumerator ();
\r
1805 public void Add (object value)
\r
1807 _list.Add (value);
\r
1810 private ArrayList _list = new ArrayList ();
\r
1813 public class SimpleClassEnumerator : IEnumerator
\r
1815 internal SimpleClassEnumerator (ArrayList arguments)
\r
1817 IEnumerable temp = (IEnumerable) (arguments);
\r
1818 _baseEnumerator = temp.GetEnumerator ();
\r
1820 public SimpleClass Current
\r
1822 get { return (SimpleClass) _baseEnumerator.Current; }
\r
1825 object IEnumerator.Current
\r
1827 get { return _baseEnumerator.Current; }
\r
1830 public bool MoveNext ()
\r
1832 return _baseEnumerator.MoveNext ();
\r
1835 bool IEnumerator.MoveNext ()
\r
1837 return _baseEnumerator.MoveNext ();
\r
1840 public void Reset ()
\r
1842 _baseEnumerator.Reset ();
\r
1845 void IEnumerator.Reset ()
\r
1847 _baseEnumerator.Reset ();
\r
1850 private IEnumerator _baseEnumerator;
\r
1853 public class NoCurrentEnumerator : IEnumerator
\r
1855 internal NoCurrentEnumerator (ArrayList arguments)
\r
1857 IEnumerable temp = (IEnumerable) (arguments);
\r
1858 _baseEnumerator = temp.GetEnumerator ();
\r
1861 object IEnumerator.Current
\r
1863 get { return _baseEnumerator.Current; }
\r
1866 public bool MoveNext ()
\r
1868 return _baseEnumerator.MoveNext ();
\r
1871 bool IEnumerator.MoveNext ()
\r
1873 return _baseEnumerator.MoveNext ();
\r
1876 public void Reset ()
\r
1878 _baseEnumerator.Reset ();
\r
1881 void IEnumerator.Reset ()
\r
1883 _baseEnumerator.Reset ();
\r
1886 private IEnumerator _baseEnumerator;
\r