public void deserialize() { Assert.Throws<ArgumentNullException>(() => XmlExtensions.Deserialize<object>(null)); Assert.Throws<InvalidOperationException>(() => new StringReader(string.Empty).XmlReader(true).Deserialize<object>()); var serialized = Guid.NewGuid().ToString(); var xml = new StringWriter().Do(writer => { new XmlSerializer(serialized.GetType()).Serialize(writer, serialized); return writer.ToString(); }); var xmlReader = new StringReader(xml); using (var reader = new StringReader(xml).XmlReader(true)) { var deserialized = reader.Deserialize(serialized.GetType()); Assert.False(ReferenceEquals(serialized, deserialized)); Assert.Equal(serialized, deserialized); } xmlReader.ReadToEnd(); xmlReader.Close(); xmlReader = new StringReader(xml); using (var reader = xmlReader.XmlReader(true)) { var deserialized = reader.Deserialize(serialized.GetType()); Assert.False(ReferenceEquals(serialized, deserialized)); Assert.Equal(serialized, deserialized); Assert.False(reader.Read()); Assert.Equal(-1, xmlReader.Read()); } Assert.Equal(serialized, new StringReader(xml).XmlReader(true).Deserialize<string>()); }