Merge pull request #1410 from alesliehughes/master
[mono.git] / mcs / class / System.Runtime.Serialization / Test / System.Runtime.Serialization / Bug242Test.cs
1
2 using System;
3 using System.Collections.Generic;
4 using System.IO;
5 using System.Runtime.Serialization;
6 using System.ServiceModel;
7 using System.ServiceModel.Channels;
8 using System.ServiceModel.Description;
9 using System.Xml;
10 using System.Linq;
11 using System.Text;
12 using System.ServiceModel.Dispatcher;
13
14 using NUnit.Framework;
15
16 namespace MonoTests.System.Runtime.Serialization
17 {
18     public class DataItemTest242
19     {
20         public string Name { get; set; }
21     }
22
23     public class DataTest242
24     {
25         public DataItemTest242[] DataArray { get; set; }
26         public IList<DataItemTest242> DataIList { get; set; }
27         public List<DataItemTest242> DataList { get; set; }
28         public ICollection<DataItemTest242> DataICollection { get; set; }
29         public IEnumerable<DataItemTest242> DataIEnumerable { get; set; }
30     }
31     
32     [TestFixture]
33     public class Bug242Test
34     {
35         [Test]
36         public void TestMixListArraySerialize()
37         {
38             var dataItems  = new[] { new DataItemTest242 () { Name = "aaaaa" }, 
39                                      new DataItemTest242 () { Name = "bbbbb" } };
40
41             var data = new DataTest242 ()
42             {
43                 DataArray       = dataItems,
44                 DataIList       = dataItems.ToList (),
45                 DataList        = dataItems.ToList (),
46                 DataICollection = dataItems.ToList (),
47                 DataIEnumerable = dataItems.ToList ()
48             };
49
50             // Serialize
51             string xml;
52
53             using (var stream = new MemoryStream ())
54             {
55                 var serializer = new DataContractSerializer (typeof (DataTest242));
56                 serializer.WriteObject (stream, data);
57                 xml = Encoding.UTF8.GetString (stream.ToArray ());
58             }
59
60             // Deserialize
61             DataTest242 clonedData;
62             using (var reader = XmlDictionaryReader.CreateTextReader (Encoding.UTF8.GetBytes (xml), new XmlDictionaryReaderQuotas ()))
63             {
64                 var serializer = new DataContractSerializer (typeof (DataTest242));
65                 clonedData     = (DataTest242)serializer.ReadObject (reader);
66             }
67
68             // ensure resulting object is populated
69             Assert.AreEqual (clonedData.DataArray.Length , data.DataArray.Length,"#1 clonedData.DataArray.Length" );
70             Assert.AreEqual (clonedData.DataList.Count, data.DataList.Count,"#2 clonedData.DataList.Count" );
71             Assert.AreEqual (clonedData.DataIList.Count, data.DataIList.Count,"#3 clonedData.DataIList.Count" );
72             Assert.AreEqual (clonedData.DataICollection.Count, data.DataICollection.Count,"#4 clonedData.DataICollection.Count" );
73             Assert.AreEqual (clonedData.DataIEnumerable.Count (), data.DataIEnumerable.Count (),"#5 clonedData.DataIEnumerable.Count()" );
74         }
75     }
76 }