public void ConstructorKnownTypesNull ()
{
// null knownTypes is allowed. Though the property is filled.
- Assert.IsNotNull (new DataContractSerializer (typeof (Sample1), null).KnownTypes, "#1");
+ Assert.IsNotNull (new DataContractSerializer (typeof (Sample1), (IEnumerable<Type>)null).KnownTypes, "#1");
Assert.IsNotNull (new DataContractSerializer (typeof (Sample1), "Foo", String.Empty, null).KnownTypes, "#2");
Assert.IsNotNull (new DataContractSerializer (typeof (Sample1), new XmlDictionary ().Add ("Foo"), XmlDictionaryString.Empty, null).KnownTypes, "#3");
}
ser.WriteObject (sw, 1);
string expected = "<int xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">1</int>";
byte[] buf = sw.ToArray ();
- Assert.AreEqual (expected, Encoding.UTF8.GetString (buf, 0, buf.Length));
+ // Skip the utf8 bom
+ Assert.AreEqual (expected, Encoding.UTF8.GetString (buf, 3, buf.Length - 3));
}
[Test]
Assert.AreEqual (4, el.SelectNodes ("a:int", nsmgr).Count, "#4");
}
+ [Test]
+ public void SerializeArrayOfAnyTypeGuid ()
+ {
+ DataContractSerializer ser = new DataContractSerializer (typeof(object[]));
+ StringWriter sw = new StringWriter ();
+ using (XmlWriter w = XmlWriter.Create (sw, settings)) {
+ ser.WriteObject (w, new object[] { Guid.Empty });
+ }
+
+ XmlComparer.AssertAreEqual (
+ "<ArrayOfanyType xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\"><anyType xmlns:d2p1=\"http://schemas.microsoft.com/2003/10/Serialization/\" i:type=\"d2p1:guid\">00000000-0000-0000-0000-000000000000</anyType></ArrayOfanyType>",
+ sw.ToString ());
+ }
+
+ [Test]
+ public void SerializeArrayOfAnyTypeChar ()
+ {
+ DataContractSerializer ser = new DataContractSerializer (typeof(object[]));
+ StringWriter sw = new StringWriter ();
+ using (XmlWriter w = XmlWriter.Create (sw, settings)) {
+ ser.WriteObject (w, new object[] { new char () });
+ }
+
+ XmlComparer.AssertAreEqual (
+ "<ArrayOfanyType xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\"><anyType xmlns:d2p1=\"http://schemas.microsoft.com/2003/10/Serialization/\" i:type=\"d2p1:char\">0</anyType></ArrayOfanyType>",
+ sw.ToString ());
+ }
+
[Test]
public void DeserializeEnum ()
{
var ds = new DataContractSerializer (typeof (DateTimeOffset));
var sw = new StringWriter ();
string xml = "<DateTimeOffset xmlns:i='http://www.w3.org/2001/XMLSchema-instance' xmlns='http://schemas.datacontract.org/2004/07/System'><DateTime>2011-03-01T02:05:06.078Z</DateTime><OffsetMinutes>120</OffsetMinutes></DateTimeOffset>".Replace ('\'', '"');
+
var v = new DateTimeOffset (new DateTime (2011, 3, 1, 4, 5, 6, 78), TimeSpan.FromMinutes (120));
using (var xw = XmlWriter.Create (sw, settings)) {
ds.WriteObject (xw, v);
Assert.AreEqual (xml, sw.ToString (), "#1");
Assert.AreEqual (v, ds.ReadObject (XmlReader.Create (new StringReader (sw.ToString ()))), "#2");
}
+
+ [Test]
+ public void DateTimeOffsetNullableSerialization ()
+ {
+ var ds = new DataContractSerializer (typeof (DateTimeOffset?));
+ var sw = new StringWriter ();
+ string xml = "<DateTimeOffset xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://schemas.datacontract.org/2004/07/System\"><DateTime>2012-05-04T00:34:00Z</DateTime><OffsetMinutes>120</OffsetMinutes></DateTimeOffset>";
+
+ var v = new DateTimeOffset (new DateTime (2012, 05, 04, 02, 34, 0), TimeSpan.FromMinutes (120));
+ using (var xw = XmlWriter.Create (sw, settings)) {
+ ds.WriteObject (xw, v);
+ }
+ Assert.AreEqual (xml, sw.ToString (), "#1");
+ Assert.AreEqual (v, ds.ReadObject (XmlReader.Create (new StringReader (sw.ToString ()))), "#2");
+ }
[Test]
public void XmlDocumentSupport ()
string xml = "<ArrayOfguid xmlns:i='http://www.w3.org/2001/XMLSchema-instance' xmlns='http://schemas.microsoft.com/2003/10/Serialization/Arrays'><guid>00000000-0000-0000-0000-000000000000</guid></ArrayOfguid>".Replace ('\'', '"');
Assert.AreEqual (xml, sw.ToString (), "#1");
}
+
+ // bug #7957
+ [Test]
+ public void DeserializeEmptyDictionary ()
+ {
+ string whatItGets = "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
+ + "<MyData xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://sickhead.com/types/Example\">"
+ + "<Data xmlns:b=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\"/>"
+ + "<FirstId>b8a7eb6f-f593-4668-8178-07be9f7266d1</FirstId>"
+ + "<SecondId>ID-GOES-HERE</SecondId>"
+ + "</MyData>";
+ var serializer = new DataContractSerializer (typeof (MyData));
+ using (var stream = new MemoryStream (Encoding.UTF8.GetBytes (whatItGets)))
+ {
+ var data = serializer.ReadObject (stream);
+ }
+ }
}
[DataContract]
}
}
+// bug #7957
+[DataContract(Namespace = "http://sickhead.com/types/Example")]
+public class MyData
+{
+ public MyData()
+ {
+ Data = new Dictionary<int, byte[]> ();
+ }
+
+ [DataMember]
+ public Guid FirstId { get; set; }
+
+ [DataMember]
+ public string SecondId { get; set; }
+
+ [DataMember]
+ public Dictionary<int, byte[]> Data { get; set; }
+}
+
#endregion