2 // XmlObjectSerializerTest.cs
5 // Atsushi Enomoto <atsushi@ximian.com>
6 // Ankit Jain <JAnkit@novell.com>
8 // Copyright (C) 2005 Novell, Inc. http://www.novell.com
11 // Permission is hereby granted, free of charge, to any person obtaining
12 // a copy of this software and associated documentation files (the
13 // "Software"), to deal in the Software without restriction, including
14 // without limitation the rights to use, copy, modify, merge, publish,
15 // distribute, sublicense, and/or sell copies of the Software, and to
16 // permit persons to whom the Software is furnished to do so, subject to
17 // the following conditions:
19 // The above copyright notice and this permission notice shall be
20 // included in all copies or substantial portions of the Software.
22 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
23 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
25 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
26 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
27 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
28 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
32 // This test code contains tests for both DataContractSerializer and
33 // NetDataContractSerializer. The code could be mostly common.
37 using System.Collections.Generic;
38 using System.Collections.ObjectModel;
41 using System.Runtime.Serialization;
44 using NUnit.Framework;
45 using System.Xml.Serialization;
46 using System.Xml.Schema;
48 namespace MonoTests.System.Runtime.Serialization
51 public class DataContractSerializerTest
53 static readonly XmlWriterSettings settings;
55 static DataContractSerializerTest ()
57 settings = new XmlWriterSettings ();
58 settings.OmitXmlDeclaration = true;
65 public string Member1;
69 [ExpectedException (typeof (ArgumentNullException))]
70 public void ConstructorTypeNull ()
72 new DataContractSerializer (null);
76 public void ConstructorKnownTypesNull ()
78 // null knownTypes is allowed.
79 new DataContractSerializer (typeof (Sample1), null);
80 new DataContractSerializer (typeof (Sample1), "Foo", String.Empty, null);
81 new DataContractSerializer (typeof (Sample1), new XmlDictionary ().Add ("Foo"), XmlDictionaryString.Empty, null);
85 [ExpectedException (typeof (ArgumentNullException))]
86 public void ConstructorNameNull ()
88 new DataContractSerializer (typeof (Sample1), null, String.Empty);
92 [ExpectedException (typeof (ArgumentNullException))]
93 public void ConstructorNamespaceNull ()
95 new DataContractSerializer (typeof (Sample1), "foo", null);
99 [ExpectedException (typeof (ArgumentOutOfRangeException))]
100 public void ConstructorNegativeMaxObjects ()
102 new DataContractSerializer (typeof (Sample1), null,
103 -1, false, false, null);
107 public void ConstructorMisc ()
109 new DataContractSerializer (typeof (GlobalSample1));
113 public void WriteObjectContent ()
115 StringWriter sw = new StringWriter ();
116 using (XmlWriter xw = XmlWriter.Create (sw, settings)) {
117 DataContractSerializer ser =
118 new DataContractSerializer (typeof (string));
119 xw.WriteStartElement ("my-element");
120 ser.WriteObjectContent (xw, "TEST STRING");
121 xw.WriteEndElement ();
123 Assert.AreEqual ("<my-element>TEST STRING</my-element>",
128 public void WriteObjectToStream ()
130 DataContractSerializer ser =
131 new DataContractSerializer (typeof (int));
132 MemoryStream sw = new MemoryStream ();
133 ser.WriteObject (sw, 1);
134 string expected = "<int xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">1</int>";
135 byte[] buf = sw.ToArray ();
136 Assert.AreEqual (expected, Encoding.UTF8.GetString (buf, 0, buf.Length));
140 public void ReadObjectFromStream ()
142 DataContractSerializer ser =
143 new DataContractSerializer (typeof (int));
144 string expected = "<int xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">1</int>";
145 byte[] buf = Encoding.UTF8.GetBytes (expected);
146 MemoryStream sw = new MemoryStream (buf);
147 object res = ser.ReadObject (sw);
148 Assert.AreEqual (1, res);
154 public void SerializeInt ()
156 DataContractSerializer ser =
157 new DataContractSerializer (typeof (int));
158 SerializeInt (ser, "<int xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">1</int>");
163 [Category ("NotWorking")]
164 public void NetSerializeInt ()
166 NetDataContractSerializer ser =
167 new NetDataContractSerializer ();
168 // z:Assembly="0" ???
169 SerializeInt (ser, String.Format ("<int z:Type=\"System.Int32\" z:Assembly=\"0\" xmlns:z=\"http://schemas.microsoft.com/2003/10/Serialization/\" xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">1</int>", typeof (int).Assembly.FullName));
172 void SerializeInt (XmlObjectSerializer ser, string expected)
174 StringWriter sw = new StringWriter ();
175 using (XmlWriter w = XmlWriter.Create (sw, settings)) {
176 ser.WriteObject (w, 1);
178 Assert.AreEqual (expected, sw.ToString ());
181 // pass typeof(DCEmpty), serialize int
184 public void SerializeIntForDCEmpty ()
186 DataContractSerializer ser =
187 new DataContractSerializer (typeof (DCEmpty));
189 SerializeIntForDCEmpty (ser, "<DCEmpty xmlns:d1p1=\"http://www.w3.org/2001/XMLSchema\" i:type=\"d1p1:int\" xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://schemas.datacontract.org/2004/07/MonoTests.System.Runtime.Serialization\">1</DCEmpty>");
192 void SerializeIntForDCEmpty (XmlObjectSerializer ser, string expected)
194 StringWriter sw = new StringWriter ();
195 using (XmlWriter w = XmlWriter.Create (sw, settings)) {
196 ser.WriteObject (w, 1);
198 XmlComparer.AssertAreEqual (expected, sw.ToString ());
204 public void SerializeEmptyClass ()
206 DataContractSerializer ser =
207 new DataContractSerializer (typeof (DCEmpty));
208 SerializeEmptyClass (ser, "<DCEmpty xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://schemas.datacontract.org/2004/07/MonoTests.System.Runtime.Serialization\" />");
212 [Category ("NotWorking")]
213 public void NetSerializeEmptyClass ()
215 NetDataContractSerializer ser =
216 new NetDataContractSerializer ();
217 SerializeEmptyClass (ser, String.Format ("<DCEmpty xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\" z:Id=\"1\" z:Type=\"MonoTests.System.Runtime.Serialization.DCEmpty\" z:Assembly=\"{0}\" xmlns:z=\"http://schemas.microsoft.com/2003/10/Serialization/\" xmlns=\"http://schemas.datacontract.org/2004/07/MonoTests.System.Runtime.Serialization\" />", this.GetType ().Assembly.FullName));
220 void SerializeEmptyClass (XmlObjectSerializer ser, string expected)
222 StringWriter sw = new StringWriter ();
223 using (XmlWriter w = XmlWriter.Create (sw, settings)) {
224 ser.WriteObject (w, new DCEmpty ());
226 Assert.AreEqual (expected, sw.ToString ());
229 // string (primitive)
232 public void SerializePrimitiveString ()
234 XmlObjectSerializer ser =
235 new DataContractSerializer (typeof (string));
236 SerializePrimitiveString (ser, "<string xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">TEST</string>");
240 [Category ("NotWorking")]
241 public void NetSerializePrimitiveString ()
243 XmlObjectSerializer ser = new NetDataContractSerializer ();
244 SerializePrimitiveString (ser, "<string z:Type=\"System.String\" z:Assembly=\"0\" xmlns:z=\"http://schemas.microsoft.com/2003/10/Serialization/\" xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">TEST</string>");
247 void SerializePrimitiveString (XmlObjectSerializer ser, string expected)
249 StringWriter sw = new StringWriter ();
250 using (XmlWriter w = XmlWriter.Create (sw, settings)) {
251 ser.WriteObject (w, "TEST");
253 Assert.AreEqual (expected, sw.ToString ());
256 // QName (primitive but ...)
259 [Ignore ("These tests would not make any sense right now since it's populated prefix is not testable.")]
260 public void SerializePrimitiveQName ()
262 XmlObjectSerializer ser =
263 new DataContractSerializer (typeof (XmlQualifiedName));
264 SerializePrimitiveQName (ser, "<z:QName xmlns:d7=\"urn:foo\" xmlns:z=\"http://schemas.microsoft.com/2003/10/Serialization/\">d7:foo</z:QName>");
268 [Ignore ("These tests would not make any sense right now since it's populated prefix is not testable.")]
269 public void NetSerializePrimitiveQName ()
271 XmlObjectSerializer ser = new NetDataContractSerializer ();
272 SerializePrimitiveQName (ser, "<z:QName z:Type=\"System.Xml.XmlQualifiedName\" z:Assembly=\"System.Xml, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" xmlns:d7=\"urn:foo\" xmlns:z=\"http://schemas.microsoft.com/2003/10/Serialization/\">d7:foo</z:QName>");
275 void SerializePrimitiveQName (XmlObjectSerializer ser, string expected)
277 StringWriter sw = new StringWriter ();
278 using (XmlWriter w = XmlWriter.Create (sw, settings)) {
279 ser.WriteObject (w, new XmlQualifiedName ("foo", "urn:foo"));
281 Assert.AreEqual (expected, sw.ToString ());
287 public void SerializeSimpleClass1 ()
289 DataContractSerializer ser =
290 new DataContractSerializer (typeof (DCSimple1));
291 SerializeSimpleClass1 (ser, "<DCSimple1 xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://schemas.datacontract.org/2004/07/MonoTests.System.Runtime.Serialization\"><Foo>TEST</Foo></DCSimple1>");
295 public void SerializeSimpleXml ()
297 DataContractSerializer ser =
298 new DataContractSerializer (typeof (SimpleXml));
299 SerializeSimpleClass1 (ser, @"<simple i:type=""d1p1:DCSimple1"" xmlns:d1p1=""http://schemas.datacontract.org/2004/07/MonoTests.System.Runtime.Serialization"" xmlns:i=""http://www.w3.org/2001/XMLSchema-instance""><d1p1:Foo>TEST</d1p1:Foo></simple>");
303 [Category ("NotWorking")]
304 public void NetSerializeSimpleClass1 ()
306 NetDataContractSerializer ser =
307 new NetDataContractSerializer ();
308 SerializeSimpleClass1 (ser, String.Format ("<DCSimple1 xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\" z:Id=\"1\" z:Type=\"MonoTests.System.Runtime.Serialization.DCSimple1\" z:Assembly=\"{0}\" xmlns:z=\"http://schemas.microsoft.com/2003/10/Serialization/\" xmlns=\"http://schemas.datacontract.org/2004/07/MonoTests.System.Runtime.Serialization\"><Foo z:Id=\"2\">TEST</Foo></DCSimple1>", this.GetType ().Assembly.FullName));
311 void SerializeSimpleClass1 (XmlObjectSerializer ser, string expected)
313 StringWriter sw = new StringWriter ();
314 using (XmlWriter w = XmlWriter.Create (sw, settings)) {
315 ser.WriteObject (w, new DCSimple1 ());
317 Console.WriteLine(sw.ToString());
318 Assert.AreEqual (expected, sw.ToString ());
324 // NonDC is not a DataContract type.
325 public void SerializeNonDCOnlyCtor ()
327 DataContractSerializer ser = new DataContractSerializer (typeof (NonDC));
331 [ExpectedException (typeof (InvalidDataContractException))]
332 // NonDC is not a DataContract type.
333 public void SerializeNonDC ()
335 DataContractSerializer ser = new DataContractSerializer (typeof (NonDC));
336 using (XmlWriter w = XmlWriter.Create (TextWriter.Null, settings)) {
337 ser.WriteObject (w, new NonDC ());
344 [ExpectedException (typeof (InvalidDataContractException))]
345 // DCHasNonDC itself is a DataContract type whose field is
346 // marked as DataMember but its type is not DataContract.
347 public void SerializeDCHasNonDC ()
349 DataContractSerializer ser = new DataContractSerializer (typeof (DCHasNonDC));
350 using (XmlWriter w = XmlWriter.Create (TextWriter.Null, settings)) {
351 ser.WriteObject (w, new DCHasNonDC ());
358 // DCHasSerializable itself is DataContract and has a field
359 // whose type is not contract but serializable.
360 public void SerializeSimpleSerializable1 ()
362 DataContractSerializer ser = new DataContractSerializer (typeof (DCHasSerializable));
363 StringWriter sw = new StringWriter ();
364 using (XmlWriter w = XmlWriter.Create (sw, settings)) {
365 ser.WriteObject (w, new DCHasSerializable ());
367 Assert.AreEqual ("<DCHasSerializable xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://schemas.datacontract.org/2004/07/MonoTests.System.Runtime.Serialization\"><Ser><Doh>doh!</Doh></Ser></DCHasSerializable>", sw.ToString ());
371 public void SerializeDCWithName ()
373 DataContractSerializer ser = new DataContractSerializer (typeof (DCWithName));
374 StringWriter sw = new StringWriter ();
375 using (XmlWriter w = XmlWriter.Create (sw, settings)) {
376 ser.WriteObject (w, new DCWithName ());
378 Assert.AreEqual ("<Foo xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://schemas.datacontract.org/2004/07/MonoTests.System.Runtime.Serialization\"><FooMember>value</FooMember></Foo>", sw.ToString ());
382 public void SerializeDCWithEmptyName1 ()
384 DataContractSerializer ser = new DataContractSerializer (typeof (DCWithEmptyName));
385 StringWriter sw = new StringWriter ();
386 DCWithEmptyName dc = new DCWithEmptyName ();
387 using (XmlWriter w = XmlWriter.Create (sw, settings)) {
389 ser.WriteObject (w, dc);
390 } catch (InvalidDataContractException) {
394 Assert.Fail ("Expected InvalidDataContractException");
398 [Category ("NotWorking")]
399 public void SerializeDCWithEmptyName2 ()
401 DataContractSerializer ser = new DataContractSerializer (typeof (DCWithName));
402 StringWriter sw = new StringWriter ();
404 /* DataContractAttribute.Name == "", not valid */
405 DCWithEmptyName dc = new DCWithEmptyName ();
406 using (XmlWriter w = XmlWriter.Create (sw, settings)) {
408 ser.WriteObject (w, dc);
409 } catch (InvalidDataContractException) {
413 Assert.Fail ("Expected InvalidDataContractException");
417 [Category ("NotWorking")]
418 public void SerializeDCWithNullName ()
420 DataContractSerializer ser = new DataContractSerializer (typeof (DCWithNullName));
421 StringWriter sw = new StringWriter ();
422 using (XmlWriter w = XmlWriter.Create (sw, settings)) {
424 /* DataContractAttribute.Name == "", not valid */
425 ser.WriteObject (w, new DCWithNullName ());
426 } catch (InvalidDataContractException) {
430 Assert.Fail ("Expected InvalidDataContractException");
434 public void SerializeDCWithEmptyNamespace1 ()
436 DataContractSerializer ser = new DataContractSerializer (typeof (DCWithEmptyNamespace));
437 StringWriter sw = new StringWriter ();
438 using (XmlWriter w = XmlWriter.Create (sw, settings)) {
439 ser.WriteObject (w, new DCWithEmptyNamespace ());
446 public void SerializeWrappedClass ()
448 DataContractSerializer ser =
449 new DataContractSerializer (typeof (Wrapper.DCWrapped));
450 SerializeWrappedClass (ser, "<Wrapper.DCWrapped xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://schemas.datacontract.org/2004/07/MonoTests.System.Runtime.Serialization\" />");
454 [Category ("NotWorking")]
455 public void NetSerializeWrappedClass ()
457 NetDataContractSerializer ser =
458 new NetDataContractSerializer ();
459 SerializeWrappedClass (ser, String.Format ("<Wrapper.DCWrapped xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\" z:Id=\"1\" z:Type=\"MonoTests.System.Runtime.Serialization.Wrapper+DCWrapped\" z:Assembly=\"{0}\" xmlns:z=\"http://schemas.microsoft.com/2003/10/Serialization/\" xmlns=\"http://schemas.datacontract.org/2004/07/MonoTests.System.Runtime.Serialization\" />", this.GetType ().Assembly.FullName));
462 void SerializeWrappedClass (XmlObjectSerializer ser, string expected)
464 StringWriter sw = new StringWriter ();
465 using (XmlWriter w = XmlWriter.Create (sw, settings)) {
466 ser.WriteObject (w, new Wrapper.DCWrapped ());
468 Assert.AreEqual (expected, sw.ToString ());
471 // CollectionContainer : Items must have a setter.
473 [ExpectedException (typeof (InvalidDataContractException))]
474 [Category ("NotWorking")]
475 public void SerializeReadOnlyCollectionMember ()
477 DataContractSerializer ser =
478 new DataContractSerializer (typeof (CollectionContainer));
479 StringWriter sw = new StringWriter ();
480 using (XmlWriter w = XmlWriter.Create (sw, settings)) {
481 ser.WriteObject (w, null);
485 // DataCollectionContainer : Items must have a setter.
487 [ExpectedException (typeof (InvalidDataContractException))]
488 [Category ("NotWorking")]
489 public void SerializeReadOnlyDataCollectionMember ()
491 DataContractSerializer ser =
492 new DataContractSerializer (typeof (DataCollectionContainer));
493 StringWriter sw = new StringWriter ();
494 using (XmlWriter w = XmlWriter.Create (sw, settings)) {
495 ser.WriteObject (w, null);
500 public void SerializeGuid ()
502 DataContractSerializer ser = new DataContractSerializer (typeof (Guid));
503 StringWriter sw = new StringWriter ();
504 using (XmlWriter w = XmlWriter.Create (sw, settings)) {
505 ser.WriteObject (w, Guid.Empty);
508 "<guid xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">00000000-0000-0000-0000-000000000000</guid>",
513 public void SerializeEnum ()
515 DataContractSerializer ser = new DataContractSerializer (typeof (Colors));
516 StringWriter sw = new StringWriter ();
517 using (XmlWriter w = XmlWriter.Create (sw, settings)) {
518 ser.WriteObject (w, new Colors ());
522 @"<Colors xmlns=""http://schemas.datacontract.org/2004/07/MonoTests.System.Runtime.Serialization"">Red</Colors>",
527 public void SerializeEnum2 ()
529 DataContractSerializer ser = new DataContractSerializer (typeof (Colors));
530 StringWriter sw = new StringWriter ();
531 using (XmlWriter w = XmlWriter.Create (sw, settings)) {
532 ser.WriteObject (w, 0);
535 XmlComparer.AssertAreEqual (
536 @"<Colors xmlns:d1p1=""http://www.w3.org/2001/XMLSchema"" i:type=""d1p1:int"" xmlns:i=""http://www.w3.org/2001/XMLSchema-instance"" xmlns=""http://schemas.datacontract.org/2004/07/MonoTests.System.Runtime.Serialization"">0</Colors>",
541 public void SerializeEnumWithDC ()
543 DataContractSerializer ser = new DataContractSerializer (typeof (ColorsWithDC));
544 StringWriter sw = new StringWriter ();
545 using (XmlWriter w = XmlWriter.Create (sw, settings)) {
546 ser.WriteObject (w, new ColorsWithDC ());
550 @"<_ColorsWithDC xmlns=""http://schemas.datacontract.org/2004/07/MonoTests.System.Runtime.Serialization"">_Red</_ColorsWithDC>",
555 public void SerializeEnumWithNoDC ()
557 DataContractSerializer ser = new DataContractSerializer (typeof (ColorsEnumMemberNoDC));
558 StringWriter sw = new StringWriter ();
559 using (XmlWriter w = XmlWriter.Create (sw, settings)) {
560 ser.WriteObject (w, new ColorsEnumMemberNoDC ());
564 @"<ColorsEnumMemberNoDC xmlns=""http://schemas.datacontract.org/2004/07/MonoTests.System.Runtime.Serialization"">Red</ColorsEnumMemberNoDC>",
569 public void SerializeEnumWithDC2 ()
571 DataContractSerializer ser = new DataContractSerializer (typeof (ColorsWithDC));
572 StringWriter sw = new StringWriter ();
573 using (XmlWriter w = XmlWriter.Create (sw, settings)) {
574 ser.WriteObject (w, 3);
577 XmlComparer.AssertAreEqual (
578 @"<_ColorsWithDC xmlns:d1p1=""http://www.w3.org/2001/XMLSchema"" i:type=""d1p1:int"" xmlns:i=""http://www.w3.org/2001/XMLSchema-instance"" xmlns=""http://schemas.datacontract.org/2004/07/MonoTests.System.Runtime.Serialization"">3</_ColorsWithDC>",
583 [ExpectedException (typeof (SerializationException))]
584 public void SerializeEnumWithDCInvalid ()
586 DataContractSerializer ser = new DataContractSerializer (typeof (ColorsWithDC));
587 StringWriter sw = new StringWriter ();
588 ColorsWithDC cdc = ColorsWithDC.Blue;
589 using (XmlWriter w = XmlWriter.Create (sw, settings)) {
590 ser.WriteObject (w, cdc);
595 public void SerializeDCWithEnum ()
597 DataContractSerializer ser = new DataContractSerializer (typeof (DCWithEnum));
598 StringWriter sw = new StringWriter ();
599 using (XmlWriter w = XmlWriter.Create (sw, settings)) {
600 ser.WriteObject (w, new DCWithEnum ());
604 @"<DCWithEnum xmlns:i=""http://www.w3.org/2001/XMLSchema-instance"" xmlns=""http://schemas.datacontract.org/2004/07/MonoTests.System.Runtime.Serialization""><_colors>Red</_colors></DCWithEnum>",
609 public void SerializeDCWithTwoEnums ()
611 DataContractSerializer ser = new DataContractSerializer (typeof (DCWithTwoEnums));
612 StringWriter sw = new StringWriter ();
613 using (XmlWriter w = XmlWriter.Create (sw, settings)) {
614 DCWithTwoEnums e = new DCWithTwoEnums ();
615 e.colors = Colors.Blue;
616 e.colors2 = Colors.Green;
617 ser.WriteObject (w, e);
621 @"<DCWithTwoEnums xmlns:i=""http://www.w3.org/2001/XMLSchema-instance"" xmlns=""http://schemas.datacontract.org/2004/07/MonoTests.System.Runtime.Serialization""><colors>Blue</colors><colors2>Green</colors2></DCWithTwoEnums>",
626 public void SerializeNestingDC2 ()
628 DataContractSerializer ser = new DataContractSerializer (typeof (NestingDC2));
629 StringWriter sw = new StringWriter ();
630 using (XmlWriter w = XmlWriter.Create (sw, settings)) {
631 NestingDC2 e = new NestingDC2 ();
632 e.Field = new NestedDC2 ("Something");
633 ser.WriteObject (w, e);
637 @"<NestingDC2 xmlns:i=""http://www.w3.org/2001/XMLSchema-instance"" xmlns=""test2""><Field xmlns:d2p1=""test1""><d2p1:Name>Something</d2p1:Name></Field></NestingDC2>",
642 public void SerializeNestingDC ()
644 DataContractSerializer ser = new DataContractSerializer (typeof (NestingDC));
645 StringWriter sw = new StringWriter ();
646 using (XmlWriter w = XmlWriter.Create (sw, settings)) {
647 NestingDC e = new NestingDC ();
648 e.Field1 = new NestedDC ("test1");
649 e.Field2 = new NestedDC ("test2");
650 ser.WriteObject (w, e);
654 @"<NestingDC xmlns:i=""http://www.w3.org/2001/XMLSchema-instance"" xmlns=""http://schemas.datacontract.org/2004/07/MonoTests.System.Runtime.Serialization""><Field1><Name>test1</Name></Field1><Field2><Name>test2</Name></Field2></NestingDC>",
656 sw = new StringWriter ();
657 using (XmlWriter w = XmlWriter.Create (sw, settings)) {
658 NestingDC e = new NestingDC ();
659 ser.WriteObject (w, e);
663 @"<NestingDC xmlns:i=""http://www.w3.org/2001/XMLSchema-instance"" xmlns=""http://schemas.datacontract.org/2004/07/MonoTests.System.Runtime.Serialization""><Field1 i:nil=""true"" /><Field2 i:nil=""true"" /></NestingDC>",
668 public void SerializeDerivedDC ()
670 DataContractSerializer ser = new DataContractSerializer (typeof (DerivedDC));
671 StringWriter sw = new StringWriter ();
672 using (XmlWriter w = XmlWriter.Create (sw, settings)) {
673 DerivedDC e = new DerivedDC ();
674 ser.WriteObject (w, e);
678 @"<DerivedDC xmlns:i=""http://www.w3.org/2001/XMLSchema-instance"" xmlns=""Derived""><baseVal xmlns=""Base"">0</baseVal><derivedVal>0</derivedVal></DerivedDC>",
683 public void SerializerDCArray ()
685 DataContractSerializer ser = new DataContractSerializer (typeof (DCWithEnum []));
686 StringWriter sw = new StringWriter ();
687 DCWithEnum [] arr = new DCWithEnum [2];
688 arr [0] = new DCWithEnum (); arr [0].colors = Colors.Red;
689 arr [1] = new DCWithEnum (); arr [1].colors = Colors.Green;
690 using (XmlWriter w = XmlWriter.Create (sw, settings)) {
691 ser.WriteObject (w, arr);
694 XmlComparer.AssertAreEqual (
695 @"<ArrayOfDCWithEnum xmlns:i=""http://www.w3.org/2001/XMLSchema-instance"" xmlns=""http://schemas.datacontract.org/2004/07/MonoTests.System.Runtime.Serialization""><DCWithEnum><_colors>Red</_colors></DCWithEnum><DCWithEnum><_colors>Green</_colors></DCWithEnum></ArrayOfDCWithEnum>",
700 public void SerializerDCArray2 ()
702 List<Type> known = new List<Type> ();
703 known.Add (typeof (DCWithEnum));
704 known.Add (typeof (DCSimple1));
705 DataContractSerializer ser = new DataContractSerializer (typeof (object []), known);
706 StringWriter sw = new StringWriter ();
707 object [] arr = new object [2];
708 arr [0] = new DCWithEnum (); ((DCWithEnum)arr [0]).colors = Colors.Red;
709 arr [1] = new DCSimple1 (); ((DCSimple1) arr [1]).Foo = "hello";
711 using (XmlWriter w = XmlWriter.Create (sw, settings)) {
712 ser.WriteObject (w, arr);
715 XmlComparer.AssertAreEqual (
716 @"<ArrayOfanyType xmlns:i=""http://www.w3.org/2001/XMLSchema-instance"" xmlns=""http://schemas.microsoft.com/2003/10/Serialization/Arrays""><anyType xmlns:d2p1=""http://schemas.datacontract.org/2004/07/MonoTests.System.Runtime.Serialization"" i:type=""d2p1:DCWithEnum""><d2p1:_colors>Red</d2p1:_colors></anyType><anyType xmlns:d2p1=""http://schemas.datacontract.org/2004/07/MonoTests.System.Runtime.Serialization"" i:type=""d2p1:DCSimple1""><d2p1:Foo>hello</d2p1:Foo></anyType></ArrayOfanyType>",
721 public void SerializerDCArray3 ()
723 DataContractSerializer ser = new DataContractSerializer (typeof (int []));
724 StringWriter sw = new StringWriter ();
725 int [] arr = new int [2];
726 arr [0] = 1; arr [1] = 2;
728 using (XmlWriter w = XmlWriter.Create (sw, settings)) {
729 ser.WriteObject (w, arr);
732 XmlComparer.AssertAreEqual (
733 @"<ArrayOfint xmlns:i=""http://www.w3.org/2001/XMLSchema-instance"" xmlns=""http://schemas.microsoft.com/2003/10/Serialization/Arrays""><int>1</int><int>2</int></ArrayOfint>",
738 public void SerializeNonDCArray ()
740 DataContractSerializer ser = new DataContractSerializer (typeof (SerializeNonDCArrayType));
741 StringWriter sw = new StringWriter ();
742 using (XmlWriter xw = XmlWriter.Create (sw, settings)) {
743 ser.WriteObject (xw, new SerializeNonDCArrayType ());
745 Assert.AreEqual (@"<SerializeNonDCArrayType xmlns:i=""http://www.w3.org/2001/XMLSchema-instance"" xmlns=""http://schemas.datacontract.org/2004/07/MonoTests.System.Runtime.Serialization""><IPAddresses xmlns:d2p1=""http://schemas.datacontract.org/2004/07/System.Net"" /></SerializeNonDCArrayType>",
750 public void SerializeNonDCArrayItems ()
752 DataContractSerializer ser = new DataContractSerializer (typeof (SerializeNonDCArrayType));
753 StringWriter sw = new StringWriter ();
754 using (XmlWriter xw = XmlWriter.Create (sw, settings)) {
755 SerializeNonDCArrayType obj = new SerializeNonDCArrayType ();
756 obj.IPAddresses = new IPAddress [] {new IPAddress (new byte [] {1, 2, 3, 4})};
757 ser.WriteObject (xw, obj);
760 XmlDocument doc = new XmlDocument ();
761 doc.LoadXml (sw.ToString ());
762 XmlNamespaceManager nsmgr = new XmlNamespaceManager (doc.NameTable);
763 nsmgr.AddNamespace ("s", "http://schemas.datacontract.org/2004/07/MonoTests.System.Runtime.Serialization");
764 nsmgr.AddNamespace ("n", "http://schemas.datacontract.org/2004/07/System.Net");
765 nsmgr.AddNamespace ("a", "http://schemas.microsoft.com/2003/10/Serialization/Arrays");
767 Assert.AreEqual (1, doc.SelectNodes ("/s:SerializeNonDCArrayType/s:IPAddresses/n:IPAddress", nsmgr).Count, "#1");
768 Assert.AreEqual ("67305985", doc.SelectSingleNode ("/s:SerializeNonDCArrayType/s:IPAddresses/n:IPAddress/n:m_Address", nsmgr).InnerText, "#2");
769 XmlElement el = doc.SelectSingleNode ("/s:SerializeNonDCArrayType/s:IPAddresses/n:IPAddress/n:m_Numbers", nsmgr) as XmlElement;
770 Assert.IsNotNull (el, "#3");
771 Assert.AreEqual (8, el.SelectNodes ("a:unsignedShort", nsmgr).Count, "#4");
775 public void DeserializeEnum ()
777 Colors c = Deserialize<Colors> (
778 @"<Colors xmlns=""http://schemas.datacontract.org/2004/07/MonoTests.System.Runtime.Serialization"">Red</Colors>");
780 Assert.AreEqual (Colors.Red, c, "#de2");
784 public void DeserializeEnum2 ()
786 Colors c = Deserialize<Colors> (
787 @"<Colors xmlns:d1p1=""http://www.w3.org/2001/XMLSchema"" i:type=""d1p1:int"" xmlns:i=""http://www.w3.org/2001/XMLSchema-instance"" xmlns=""http://schemas.datacontract.org/2004/07/MonoTests.System.Runtime.Serialization"">1</Colors>",
790 Assert.AreEqual (Colors.Green, c, "#de4");
794 [ExpectedException (typeof (SerializationException))]
795 public void DeserializeEnumInvalid1 ()
797 Deserialize<Colors> (
798 @"<Colors xmlns=""http://schemas.datacontract.org/2004/07/MonoTests.System.Runtime.Serialization""></Colors>");
802 [ExpectedException (typeof (SerializationException))]
803 public void DeserializeEnumInvalid2 ()
805 Deserialize<Colors> (
806 @"<Colors xmlns=""http://schemas.datacontract.org/2004/07/MonoTests.System.Runtime.Serialization""/>");
810 [ExpectedException (typeof (SerializationException))]
811 public void DeserializeEnumInvalid3 ()
813 //"red" instead of "Red"
814 Deserialize<Colors> (
815 @"<Colors xmlns=""http://schemas.datacontract.org/2004/07/MonoTests.System.Runtime.Serialization"">red</Colors>");
819 public void DeserializeEnumWithDC ()
821 ColorsWithDC cdc = Deserialize<ColorsWithDC> (
822 @"<_ColorsWithDC xmlns=""http://schemas.datacontract.org/2004/07/MonoTests.System.Runtime.Serialization"">_Red</_ColorsWithDC>");
824 Assert.AreEqual (ColorsWithDC.Red, cdc, "#de6");
828 [ExpectedException (typeof (SerializationException))]
829 public void DeserializeEnumWithDCInvalid ()
831 Deserialize<ColorsWithDC> (
832 @"<_ColorsWithDC xmlns=""http://schemas.datacontract.org/2004/07/MonoTests.System.Runtime.Serialization"">NonExistant</_ColorsWithDC>");
836 public void DeserializeDCWithEnum ()
838 DCWithEnum dc = Deserialize<DCWithEnum> (
839 @"<DCWithEnum xmlns:i=""http://www.w3.org/2001/XMLSchema-instance"" xmlns=""http://schemas.datacontract.org/2004/07/MonoTests.System.Runtime.Serialization""><_colors>Red</_colors></DCWithEnum>");
841 Assert.AreEqual (Colors.Red, dc.colors, "#de8");
845 public void DeserializeNestingDC ()
847 NestingDC dc = Deserialize<NestingDC> (
848 @"<NestingDC xmlns:i=""http://www.w3.org/2001/XMLSchema-instance"" xmlns=""http://schemas.datacontract.org/2004/07/MonoTests.System.Runtime.Serialization""><Field1><Name>test1</Name></Field1><Field2><Name>test2</Name></Field2></NestingDC>");
850 Assert.IsNotNull (dc.Field1, "#N1: Field1 should not be null.");
851 Assert.IsNotNull (dc.Field2, "#N2: Field2 should not be null.");
852 Assert.AreEqual ("test1", dc.Field1.Name, "#1");
853 Assert.AreEqual ("test2", dc.Field2.Name, "#2");
857 public void DeserializeNestingDC2 ()
859 NestingDC2 dc = Deserialize<NestingDC2> (
860 @"<NestingDC2 xmlns:i=""http://www.w3.org/2001/XMLSchema-instance"" xmlns=""test2""><Field xmlns:d2p1=""test1""><d2p1:Name>Something</d2p1:Name></Field></NestingDC2>");
862 Assert.IsNotNull (dc.Field, "#N1: Field should not be null.");
863 Assert.AreEqual ("Something", dc.Field.Name, "#N2");
867 public void DeserializeDerivedDC ()
869 DerivedDC dc = Deserialize<DerivedDC> (
870 @"<DerivedDC xmlns:i=""http://www.w3.org/2001/XMLSchema-instance"" xmlns=""Derived""><baseVal xmlns=""Base"">1</baseVal><derivedVal>2</derivedVal></DerivedDC>");
872 Assert.AreEqual (1, dc.baseVal, "#N1");
873 Assert.AreEqual (2, dc.derivedVal, "#N2");
877 public void DeserializeTwice ()
880 @"<any><_ColorsWithDC xmlns=""http://schemas.datacontract.org/2004/07/MonoTests.System.Runtime.Serialization"">_Red</_ColorsWithDC> <_ColorsWithDC xmlns=""http://schemas.datacontract.org/2004/07/MonoTests.System.Runtime.Serialization"">_Red</_ColorsWithDC></any>";
881 DataContractSerializer ser = new DataContractSerializer (typeof (ColorsWithDC));
882 XmlReader xr = XmlReader.Create (new StringReader (xml), new XmlReaderSettings ());
883 xr.ReadStartElement ();
884 object o = ser.ReadObject (xr);
885 Assert.AreEqual (typeof (ColorsWithDC), o.GetType (), "#de5");
886 ColorsWithDC cdc = (ColorsWithDC) o;
887 Assert.AreEqual (ColorsWithDC.Red, o, "#de6");
889 o = ser.ReadObject (xr);
890 Assert.AreEqual (typeof (ColorsWithDC), o.GetType (), "#de5");
891 cdc = (ColorsWithDC) o;
892 Assert.AreEqual (ColorsWithDC.Red, o, "#de6");
893 Assert.AreEqual (XmlNodeType.EndElement, xr.NodeType, "#de6");
894 Assert.AreEqual ("any", xr.LocalName, "#de6");
895 xr.ReadEndElement ();
900 public void DeserializeEmptyNestingDC ()
902 NestingDC dc = Deserialize<NestingDC> (
903 @"<NestingDC xmlns:i=""http://www.w3.org/2001/XMLSchema-instance"" xmlns=""http://schemas.datacontract.org/2004/07/MonoTests.System.Runtime.Serialization""></NestingDC>");
905 Assert.IsNotNull (dc, "#A0: The object should not be null.");
906 Assert.IsNull (dc.Field1, "#A1: Field1 should be null.");
907 Assert.IsNull (dc.Field2, "#A2: Field2 should be null.");
909 dc = Deserialize<NestingDC> (
910 @"<NestingDC xmlns:i=""http://www.w3.org/2001/XMLSchema-instance"" xmlns=""http://schemas.datacontract.org/2004/07/MonoTests.System.Runtime.Serialization""/>");
912 Assert.IsNotNull (dc, "#B0: The object should not be null.");
913 Assert.IsNull (dc.Field1, "#B1: Field1 should be null.");
914 Assert.IsNull (dc.Field2, "#B2: Field2 should be null.");
916 dc = Deserialize<NestingDC> (
917 @"<NestingDC xmlns:i=""http://www.w3.org/2001/XMLSchema-instance"" xmlns=""http://schemas.datacontract.org/2004/07/MonoTests.System.Runtime.Serialization""><Field1 i:nil=""true"" /><Field2 i:nil=""true"" /></NestingDC>");
919 Assert.IsNotNull (dc, "#B0: The object should not be null.");
920 Assert.IsNull (dc.Field1, "#B1: Field1 should be null.");
921 Assert.IsNull (dc.Field2, "#B2: Field2 should be null.");
925 [ExpectedException (typeof (SerializationException))]
926 public void DeserializeEmptyDCWithTwoEnums ()
928 Deserialize<DCWithTwoEnums> (
929 @"<DCWithTwoEnums xmlns:i=""http://www.w3.org/2001/XMLSchema-instance"" xmlns=""http://schemas.datacontract.org/2004/07/MonoTests.System.Runtime.Serialization""><colors i:nil=""true""/><colors2 i:nil=""true""/></DCWithTwoEnums>");
933 [Category ("NotWorking")]
934 public void DeserializeDCWithNullableEnum ()
936 DCWithNullableEnum dc = Deserialize<DCWithNullableEnum> (
937 @"<DCWithNullableEnum xmlns:i=""http://www.w3.org/2001/XMLSchema-instance"" xmlns=""http://schemas.datacontract.org/2004/07/MonoTests.System.Runtime.Serialization""><colors i:nil=""true""/></DCWithNullableEnum>");
939 Assert.IsNull (dc.colors, "#B1: Field should be null.");
943 public void DeserializeDCWithTwoEnums ()
945 DCWithTwoEnums dc = Deserialize<DCWithTwoEnums> (
946 @"<DCWithTwoEnums xmlns:i=""http://www.w3.org/2001/XMLSchema-instance"" xmlns=""http://schemas.datacontract.org/2004/07/MonoTests.System.Runtime.Serialization""><colors>Blue</colors><colors2>Green</colors2></DCWithTwoEnums>");
948 Assert.AreEqual (Colors.Blue, dc.colors, "#0");
949 Assert.AreEqual (Colors.Green, dc.colors2, "#1");
953 public void DeserializerDCArray ()
955 DCWithEnum [] dcArray = Deserialize<DCWithEnum []> (
956 @"<ArrayOfDCWithEnum xmlns:i=""http://www.w3.org/2001/XMLSchema-instance"" xmlns=""http://schemas.datacontract.org/2004/07/MonoTests.System.Runtime.Serialization""><DCWithEnum><_colors>Red</_colors></DCWithEnum><DCWithEnum><_colors>Green</_colors></DCWithEnum></ArrayOfDCWithEnum>");
958 Assert.AreEqual (2, dcArray.Length, "#N1");
959 Assert.AreEqual (Colors.Red, dcArray [0].colors, "#N2");
960 Assert.AreEqual (Colors.Green, dcArray [1].colors, "#N3");
964 public void DeserializerDCArray2 ()
967 @"<ArrayOfanyType xmlns:i=""http://www.w3.org/2001/XMLSchema-instance"" xmlns=""http://schemas.microsoft.com/2003/10/Serialization/Arrays""><anyType xmlns:d2p1=""http://schemas.datacontract.org/2004/07/MonoTests.System.Runtime.Serialization"" i:type=""d2p1:DCWithEnum""><d2p1:_colors>Red</d2p1:_colors></anyType><anyType xmlns:d2p1=""http://schemas.datacontract.org/2004/07/MonoTests.System.Runtime.Serialization"" i:type=""d2p1:DCSimple1""><d2p1:Foo>hello</d2p1:Foo></anyType></ArrayOfanyType>";
969 List<Type> known = new List<Type> ();
970 known.Add (typeof (DCWithEnum));
971 known.Add (typeof (DCSimple1));
972 DataContractSerializer ser = new DataContractSerializer (typeof (object []), known);
973 XmlReader xr = XmlReader.Create (new StringReader (xml));
975 object [] dc = (object []) ser.ReadObject (xr);
976 Assert.AreEqual (2, dc.Length, "#N1");
977 Assert.AreEqual (typeof (DCWithEnum), dc [0].GetType (), "#N2");
978 DCWithEnum dc0 = (DCWithEnum) dc [0];
979 Assert.AreEqual (Colors.Red, dc0.colors, "#N3");
980 Assert.AreEqual (typeof (DCSimple1), dc [1].GetType (), "#N4");
981 DCSimple1 dc1 = (DCSimple1) dc [1];
982 Assert.AreEqual ("hello", dc1.Foo, "#N4");
986 public void DeserializerDCArray3 ()
988 int [] intArray = Deserialize<int []> (
989 @"<ArrayOfint xmlns:i=""http://www.w3.org/2001/XMLSchema-instance"" xmlns=""http://schemas.microsoft.com/2003/10/Serialization/Arrays""><int>1</int><int>2</int></ArrayOfint>");
991 Assert.AreEqual (2, intArray.Length, "#N0");
992 Assert.AreEqual (1, intArray [0], "#N1");
993 Assert.AreEqual (2, intArray [1], "#N2");
997 public void ReadObjectNoVerifyObjectName ()
999 string xml = @"<any><Member1 xmlns=""http://schemas.datacontract.org/2004/07/MonoTests.System.Runtime.Serialization1"">bar1</Member1><Member1 xmlns=""http://schemas.datacontract.org/2004/07/MonoTests.System.Runtime.Serialization2"">bar2</Member1><Member1 xmlns=""http://schemas.datacontract.org/2004/07/MonoTests.System.Runtime.Serialization"">bar</Member1></any>";
1000 VerifyObjectNameTestData res = (VerifyObjectNameTestData)new DataContractSerializer (typeof (VerifyObjectNameTestData))
1001 .ReadObject (XmlReader.Create (new StringReader (xml)), false);
1002 Assert.AreEqual ("bar", res.GetMember());
1006 public void ReadObjectVerifyObjectName ()
1008 string xml = @"<VerifyObjectNameTestData xmlns=""http://schemas.datacontract.org/2004/07/MonoTests.System.Runtime.Serialization""><Member1>bar</Member1></VerifyObjectNameTestData>";
1009 VerifyObjectNameTestData res = (VerifyObjectNameTestData)new DataContractSerializer (typeof (VerifyObjectNameTestData))
1010 .ReadObject (XmlReader.Create (new StringReader (xml)));
1011 Assert.AreEqual ("bar", res.GetMember());
1015 [ExpectedException (typeof (SerializationException))]
1016 public void ReadObjectWrongNamespace ()
1018 string xml = @"<VerifyObjectNameTestData xmlns=""http://schemas.datacontract.org/2004/07/MonoTests.System.Runtime.Serialization2""><Member1>bar</Member1></VerifyObjectNameTestData>";
1019 new DataContractSerializer (typeof (VerifyObjectNameTestData))
1020 .ReadObject (XmlReader.Create (new StringReader (xml)));
1024 public void ReferenceSerialization ()
1026 var dc = new DataContractSerializer (typeof (ReferenceWrapper));
1027 var t = new ReferenceType ();
1028 StringWriter sw = new StringWriter ();
1029 using (var xw = XmlWriter.Create (sw)) {
1030 xw.WriteStartElement ("z", "root", "http://schemas.microsoft.com/2003/10/Serialization/");
1031 dc.WriteObject (xw, new ReferenceWrapper () {T = t, T2 = t});
1032 xw.WriteEndElement ();
1034 string xml = @"<?xml version='1.0' encoding='utf-16'?><z:root xmlns:z='http://schemas.microsoft.com/2003/10/Serialization/'><ReferenceWrapper xmlns:i='http://www.w3.org/2001/XMLSchema-instance' xmlns='http://schemas.datacontract.org/2004/07/MonoTests.System.Runtime.Serialization'><T z:Id='i1'><F>x</F></T><T2 z:Ref='i1' /></ReferenceWrapper></z:root>";
1035 Assert.AreEqual (xml.Replace ('\'', '"'), sw.ToString (), "#1");
1038 using (XmlReader r = XmlReader.Create (new StringReader (xml)))
1040 r.ReadStartElement ();
1041 w = (ReferenceWrapper) dc.ReadObject (r);
1042 r.ReadEndElement ();
1044 Assert.AreEqual (w.T, w.T2, "#2");
1047 private T Deserialize<T> (string xml)
1049 return Deserialize<T> (xml, typeof (T));
1052 private T Deserialize<T> (string xml, Type runtimeType)
1054 DataContractSerializer ser = new DataContractSerializer (typeof (T));
1055 XmlReader xr = XmlReader.Create (new StringReader (xml), new XmlReaderSettings ());
1056 object o = ser.ReadObject (xr);
1057 Assert.AreEqual (runtimeType, o.GetType (), "#DS0");
1062 public enum Colors {
1066 [DataContract (Name = "_ColorsWithDC")]
1067 public enum ColorsWithDC {
1069 [EnumMember (Value = "_Red")]
1077 public enum ColorsEnumMemberNoDC {
1078 [EnumMember (Value = "_Red")]
1086 public class DCWithEnum {
1087 [DataMember (Name = "_colors")]
1088 public Colors colors;
1092 public class DCWithTwoEnums {
1094 public Colors colors;
1096 public Colors colors2;
1100 public class DCWithNullableEnum {
1102 public Colors? colors;
1106 [DataContract (Namespace = "Base")]
1107 public class BaseDC {
1112 [DataContract (Namespace = "Derived")]
1113 public class DerivedDC : BaseDC {
1115 public int derivedVal;
1119 public class NestedDC {
1120 public NestedDC (string name) { this.Name = name; }
1127 public class NestingDC {
1129 public NestedDC Field1;
1131 public NestedDC Field2;
1134 [DataContract (Namespace = "test1")]
1135 public class NestedDC2 {
1136 public NestedDC2 (string name) { this.Name = name; }
1142 [DataContract (Namespace = "test2")]
1143 public class NestingDC2 {
1145 public NestedDC2 Field;
1149 public class DCEmpty
1151 // serializer doesn't touch it.
1152 public string Foo = "TEST";
1156 public class DCSimple1
1159 public string Foo = "TEST";
1163 public class DCHasNonDC
1166 public NonDC Hoge= new NonDC ();
1171 public string Whee = "whee!";
1175 public class DCHasSerializable
1178 public SimpleSer1 Ser = new SimpleSer1 ();
1181 [DataContract (Name = "Foo")]
1182 public class DCWithName
1184 [DataMember (Name = "FooMember")]
1185 public string DMWithName = "value";
1188 [DataContract (Name = "")]
1189 public class DCWithEmptyName
1193 [DataContract (Name = null)]
1194 public class DCWithNullName
1198 [DataContract (Namespace = "")]
1199 public class DCWithEmptyNamespace
1204 public class SimpleSer1
1206 public string Doh = "doh!";
1209 public class Wrapper
1212 public class DCWrapped
1218 public class CollectionContainer
1220 Collection<string> items = new Collection<string> ();
1223 public Collection<string> Items {
1224 get { return items; }
1228 [CollectionDataContract]
1229 public class DataCollection<T> : Collection<T>
1234 public class DataCollectionContainer
1236 DataCollection<string> items = new DataCollection<string> ();
1239 public DataCollection<string> Items {
1240 get { return items; }
1245 class SerializeNonDCArrayType
1248 public IPAddress [] IPAddresses = new IPAddress [0];
1252 public class VerifyObjectNameTestData
1255 string Member1 = "foo";
1257 public string GetMember() { return Member1; }
1260 [XmlRoot(ElementName = "simple", Namespace = "")]
1261 public class SimpleXml : IXmlSerializable
1263 void IXmlSerializable.ReadXml (XmlReader reader)
1267 void IXmlSerializable.WriteXml (XmlWriter writer)
1271 XmlSchema IXmlSerializable.GetSchema ()
1279 public class ReferenceWrapper
1281 [DataMember (Order = 1)]
1282 public ReferenceType T;
1284 [DataMember (Order = 2)]
1285 public ReferenceType T2;
1288 [DataContract (IsReference = true)]
1289 public class ReferenceType
1292 public string F = "x";