XmlCompatibilityTests.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. using System.IO;
  2. using System.Xml;
  3. using Google.ProtocolBuffers.Serialization;
  4. using Google.ProtocolBuffers.TestProtos;
  5. using NUnit.Framework;
  6. namespace Google.ProtocolBuffers.Compatibility
  7. {
  8. [TestFixture]
  9. public class XmlCompatibilityTests : CompatibilityTests
  10. {
  11. protected override object SerializeMessage<TMessage, TBuilder>(TMessage message)
  12. {
  13. StringWriter text = new StringWriter();
  14. XmlFormatWriter writer = XmlFormatWriter.CreateInstance(text);
  15. writer.WriteMessage("root", message);
  16. return text.ToString();
  17. }
  18. protected override TBuilder DeserializeMessage<TMessage, TBuilder>(object message, TBuilder builder, ExtensionRegistry registry)
  19. {
  20. XmlFormatReader reader = XmlFormatReader.CreateInstance((string)message);
  21. return reader.Merge("root", builder, registry);
  22. }
  23. }
  24. [TestFixture]
  25. public class XmlCompatibilityFormattedTests : CompatibilityTests
  26. {
  27. protected override object SerializeMessage<TMessage, TBuilder>(TMessage message)
  28. {
  29. StringWriter text = new StringWriter();
  30. XmlWriter xwtr = XmlWriter.Create(text, new XmlWriterSettings { Indent = true, IndentChars = " " });
  31. XmlFormatWriter writer = XmlFormatWriter.CreateInstance(xwtr).SetOptions(XmlWriterOptions.OutputNestedArrays);
  32. writer.WriteMessage("root", message);
  33. return text.ToString();
  34. }
  35. protected override TBuilder DeserializeMessage<TMessage, TBuilder>(object message, TBuilder builder, ExtensionRegistry registry)
  36. {
  37. XmlFormatReader reader = XmlFormatReader.CreateInstance((string)message).SetOptions(XmlReaderOptions.ReadNestedArrays);
  38. return reader.Merge("root", builder, registry);
  39. }
  40. }
  41. }