using System;
using System.Collections.Generic;
using System.IO;
using System.Runtime.Serialization;
using System.Xml;
using System.Text;
using NUnit.Framework;
namespace MonoTests.System.Runtime.Serialization
{
[TestFixture]
public class Bug3258Test
{
[Test]
public void TestSerializeNullDateTimeOffsetNullable ()
{
// Create the writer object.
StringBuilder stringBuilder = new StringBuilder ();
DateTimeOffset? dto = null;
DataContractSerializer ser = new DataContractSerializer (typeof (DateTimeOffset?));
using (var xw = XmlDictionaryWriter.CreateDictionaryWriter (XmlWriter.Create (new StringWriter (stringBuilder))))
{
ser.WriteObject (xw, dto);
}
string actualXml = stringBuilder.ToString ();
string expectedXml = "";
Assert.AreEqual (expectedXml, actualXml, "#1 Null DateTimeOffset? serialization error");
using (var xr = XmlDictionaryReader.CreateDictionaryReader (XmlReader.Create (new StringReader (actualXml))))
{
DateTimeOffset? actualDto = (DateTimeOffset?)ser.ReadObject (xr, true);
Assert.AreEqual (dto, actualDto, "#2 Null DateTimeOffset? deserialization error");
Assert.IsNull (actualDto, "#3 Null DateTimeOffset? deserialization error");
}
}
[Test]
public void TestSerializeDateTimeOffsetNullable ()
{
// Create the writer object.
StringBuilder stringBuilder = new StringBuilder ();
DateTimeOffset? dto = new DateTimeOffset (2012, 05, 04, 02, 34, 00, new TimeSpan (-2, 0, 0));;
DataContractSerializer ser = new DataContractSerializer (typeof (DateTimeOffset?));
using (var xw = XmlDictionaryWriter.CreateDictionaryWriter (XmlWriter.Create (new StringWriter (stringBuilder))))
{
ser.WriteObject (xw, dto);
}
string actualXml = stringBuilder.ToString ();
string expectedXml = "2012-05-04T04:34:00Z-120";
Assert.AreEqual (expectedXml, actualXml, "#1 Nullable DateTimeOffset serialization error");
using (var xr = XmlDictionaryReader.CreateDictionaryReader(XmlReader.Create (new StringReader (actualXml))))
{
DateTimeOffset? actualDto = (DateTimeOffset?)ser.ReadObject (xr, true);
Assert.AreEqual (dto, actualDto, "#2 Nullable DateTimeOffset deserialization error");
}
}
}
}