Advertisement
Guest User

Untitled

a guest
Mar 6th, 2015
197
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.20 KB | None | 0 0
  1. using System;
  2. using System.IO;
  3. using System.Runtime.Serialization;
  4. using System.Xml;
  5. using FluentAssertions;
  6. using Microsoft.VisualStudio.TestTools.UnitTesting;
  7.  
  8. namespace UnitTests
  9. {
  10. [TestClass]
  11. public class EnumSerizalizationTests
  12. {
  13. [TestMethod]
  14. public void SerializingAndDesrializingAFlaggedEnumShouldResultInSameEnumValues()
  15. {
  16. //Arrange
  17. var orgObject = new TestClass { Value = TestEnum.TestValue1 | TestEnum.TestValue2 };
  18. //Act
  19. var temp = DataContractSerializeObject(orgObject);
  20. var newObject = DataContractDeSerializeObject<TestClass>(temp);
  21.  
  22. //Assert
  23. newObject.ShouldBeEquivalentTo(orgObject, "Roundtripping serialization should result in same value");
  24. }
  25.  
  26. public string DataContractSerializeObject<T>(T objectToSerialize)
  27. {
  28. using (var output = new StringWriter())
  29. {
  30. using (var writer = new XmlTextWriter(output) {Formatting = Formatting.Indented})
  31. {
  32. new DataContractSerializer(typeof (T)).WriteObject(writer, objectToSerialize);
  33. return output.GetStringBuilder().ToString();
  34. }
  35. }
  36. }
  37.  
  38. public T DataContractDeSerializeObject<T>(string stringToDeSerialize)
  39. {
  40. DataContractSerializer ser = new DataContractSerializer(typeof(T));
  41. T result;
  42. using (StringReader stringReader = new StringReader(stringToDeSerialize))
  43. {
  44. using (XmlReader xmlReader = XmlReader.Create(stringReader))
  45. {
  46. result = (T)ser.ReadObject(xmlReader);
  47. }
  48. }
  49. return result;
  50. }
  51.  
  52. }
  53.  
  54. [DataContract]
  55. [KnownType(typeof(Diciplines))]
  56. public class TestClass
  57. {
  58. [DataMember]
  59. public TestEnum Value { get; set; }
  60. }
  61.  
  62. [Flags]
  63. [DataContract]
  64. public enum TestEnum
  65. {
  66. [EnumMember(Value = "Test value one")]
  67. TestValue1 = 1,
  68. [EnumMember(Value = "Test value two")]
  69. TestValue2 = 2,
  70. [EnumMember]
  71. TestValue3 = 4,
  72. [EnumMember]
  73. TestValue4 = 8,
  74. }
  75.  
  76.  
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement