Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.IO;
- using System.Runtime.Serialization;
- using System.Xml;
- using FluentAssertions;
- using Microsoft.VisualStudio.TestTools.UnitTesting;
- namespace UnitTests
- {
- [TestClass]
- public class EnumSerizalizationTests
- {
- [TestMethod]
- public void SerializingAndDesrializingAFlaggedEnumShouldResultInSameEnumValues()
- {
- //Arrange
- var orgObject = new TestClass { Value = TestEnum.TestValue1 | TestEnum.TestValue2 };
- //Act
- var temp = DataContractSerializeObject(orgObject);
- var newObject = DataContractDeSerializeObject<TestClass>(temp);
- //Assert
- newObject.ShouldBeEquivalentTo(orgObject, "Roundtripping serialization should result in same value");
- }
- public string DataContractSerializeObject<T>(T objectToSerialize)
- {
- using (var output = new StringWriter())
- {
- using (var writer = new XmlTextWriter(output) {Formatting = Formatting.Indented})
- {
- new DataContractSerializer(typeof (T)).WriteObject(writer, objectToSerialize);
- return output.GetStringBuilder().ToString();
- }
- }
- }
- public T DataContractDeSerializeObject<T>(string stringToDeSerialize)
- {
- DataContractSerializer ser = new DataContractSerializer(typeof(T));
- T result;
- using (StringReader stringReader = new StringReader(stringToDeSerialize))
- {
- using (XmlReader xmlReader = XmlReader.Create(stringReader))
- {
- result = (T)ser.ReadObject(xmlReader);
- }
- }
- return result;
- }
- }
- [DataContract]
- [KnownType(typeof(Diciplines))]
- public class TestClass
- {
- [DataMember]
- public TestEnum Value { get; set; }
- }
- [Flags]
- [DataContract]
- public enum TestEnum
- {
- [EnumMember(Value = "Test value one")]
- TestValue1 = 1,
- [EnumMember(Value = "Test value two")]
- TestValue2 = 2,
- [EnumMember]
- TestValue3 = 4,
- [EnumMember]
- TestValue4 = 8,
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement