| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264 | 
							- using System;
 
- using System.Collections.Generic;
 
- using System.IO;
 
- using System.Text;
 
- using Google.ProtocolBuffers.Serialization;
 
- using Google.ProtocolBuffers.Serialization.Http;
 
- using Google.ProtocolBuffers.TestProtos;
 
- using NUnit.Framework;
 
- namespace Google.ProtocolBuffers
 
- {
 
-     [TestFixture]
 
-     public class TestMimeMessageFormats
 
-     {
 
-         // There is a whole host of various json mime types in use around the net, this is the set we accept...
 
-         readonly IEnumerable<string> JsonTypes = new string[] { "application/json", "application/x-json", "application/x-javascript", "text/javascript", "text/x-javascript", "text/x-json", "text/json" };
 
-         readonly IEnumerable<string> XmlTypes = new string[] { "text/xml", "application/xml" };
 
-         readonly IEnumerable<string> ProtobufTypes = new string[] { "application/binary", "application/x-protobuf", "application/vnd.google.protobuf" };
 
-         [Test]
 
-         public void TestReadJsonMimeTypes()
 
-         {
 
-             foreach (string type in JsonTypes)
 
-             {
 
-                 Assert.IsTrue(
 
-                     MessageFormatFactory.CreateInputStream(new MessageFormatOptions(), type, Stream.Null)
 
-                     is JsonFormatReader);
 
-             }
 
-             Assert.IsTrue(
 
-                 MessageFormatFactory.CreateInputStream(new MessageFormatOptions() { DefaultContentType = "application/json" }, null, Stream.Null)
 
-                 is JsonFormatReader);
 
-         }
 
-         [Test]
 
-         public void TestWriteJsonMimeTypes()
 
-         {
 
-             foreach (string type in JsonTypes)
 
-             {
 
-                 Assert.IsTrue(
 
-                     MessageFormatFactory.CreateOutputStream(new MessageFormatOptions(), type, Stream.Null)
 
-                     is JsonFormatWriter);
 
-             }
 
-             Assert.IsTrue(
 
-                 MessageFormatFactory.CreateOutputStream(new MessageFormatOptions() { DefaultContentType = "application/json" }, null, Stream.Null)
 
-                 is JsonFormatWriter);
 
-         }
 
-         [Test]
 
-         public void TestReadXmlMimeTypes()
 
-         {
 
-             foreach (string type in XmlTypes)
 
-             {
 
-                 Assert.IsTrue(
 
-                     MessageFormatFactory.CreateInputStream(new MessageFormatOptions(), type, Stream.Null)
 
-                     is XmlFormatReader);
 
-             }
 
-             Assert.IsTrue(
 
-                 MessageFormatFactory.CreateInputStream(new MessageFormatOptions() { DefaultContentType = "application/xml" }, null, Stream.Null)
 
-                 is XmlFormatReader);
 
-         }
 
-         [Test]
 
-         public void TestWriteXmlMimeTypes()
 
-         {
 
-             foreach (string type in XmlTypes)
 
-             {
 
-                 Assert.IsTrue(
 
-                     MessageFormatFactory.CreateOutputStream(new MessageFormatOptions(), type, Stream.Null)
 
-                     is XmlFormatWriter);
 
-             }
 
-             Assert.IsTrue(
 
-                 MessageFormatFactory.CreateOutputStream(new MessageFormatOptions() { DefaultContentType = "application/xml" }, null, Stream.Null)
 
-                 is XmlFormatWriter);
 
-         }
 
-         [Test]
 
-         public void TestReadProtoMimeTypes()
 
-         {
 
-             foreach (string type in ProtobufTypes)
 
-             {
 
-                 Assert.IsTrue(
 
-                     MessageFormatFactory.CreateInputStream(new MessageFormatOptions(), type, Stream.Null)
 
-                     is CodedInputStream);
 
-             }
 
-             Assert.IsTrue(
 
-                 MessageFormatFactory.CreateInputStream(new MessageFormatOptions() { DefaultContentType = "application/vnd.google.protobuf" }, null, Stream.Null)
 
-                 is CodedInputStream);
 
-         }
 
-         [Test]
 
-         public void TestWriteProtoMimeTypes()
 
-         {
 
-             foreach (string type in ProtobufTypes)
 
-             {
 
-                 Assert.IsTrue(
 
-                     MessageFormatFactory.CreateOutputStream(new MessageFormatOptions(), type, Stream.Null)
 
-                     is CodedOutputStream);
 
-             }
 
-             Assert.IsTrue(
 
-                 MessageFormatFactory.CreateOutputStream(new MessageFormatOptions() { DefaultContentType = "application/vnd.google.protobuf" }, null, Stream.Null)
 
-                 is CodedOutputStream);
 
-         }
 
-         [Test]
 
-         public void TestMergeFromJsonType()
 
-         {
 
-             TestXmlMessage msg = Extensions.MergeFrom(new TestXmlMessage.Builder(),
 
-                 new MessageFormatOptions(), "application/json", new MemoryStream(Encoding.ASCII.GetBytes(
 
-                     Extensions.ToJson(TestXmlMessage.CreateBuilder().SetText("a").SetNumber(1).Build())
 
-                     )))
 
-                 .Build();
 
-             Assert.AreEqual("a", msg.Text);
 
-             Assert.AreEqual(1, msg.Number);
 
-         }
 
-         [Test]
 
-         public void TestMergeFromXmlType()
 
-         {
 
-             TestXmlMessage msg = Extensions.MergeFrom(new TestXmlMessage.Builder(),
 
-                 new MessageFormatOptions(), "application/xml", new MemoryStream(Encoding.ASCII.GetBytes(
 
-                     Extensions.ToXml(TestXmlMessage.CreateBuilder().SetText("a").SetNumber(1).Build())
 
-                     )))
 
-                 .Build();
 
-             Assert.AreEqual("a", msg.Text);
 
-             Assert.AreEqual(1, msg.Number);
 
-         }
 
-         [Test]
 
-         public void TestMergeFromProtoType()
 
-         {
 
-             TestXmlMessage msg = Extensions.MergeFrom(new TestXmlMessage.Builder(),
 
-                 new MessageFormatOptions(), "application/vnd.google.protobuf", new MemoryStream(
 
-                     TestXmlMessage.CreateBuilder().SetText("a").SetNumber(1).Build().ToByteArray()
 
-                     ))
 
-                 .Build();
 
-             Assert.AreEqual("a", msg.Text);
 
-             Assert.AreEqual(1, msg.Number);
 
-         }
 
-         [Test]
 
-         public void TestWriteToJsonType()
 
-         {
 
-             MemoryStream ms = new MemoryStream();
 
-             Extensions.WriteTo(TestXmlMessage.CreateBuilder().SetText("a").SetNumber(1).Build(),
 
-                 new MessageFormatOptions(), "application/json", ms);
 
-             Assert.AreEqual(@"{""text"":""a"",""number"":1}", Encoding.UTF8.GetString(ms.ToArray()));
 
-         }
 
-         [Test]
 
-         public void TestWriteToXmlType()
 
-         {
 
-             MemoryStream ms = new MemoryStream();
 
-             Extensions.WriteTo(TestXmlMessage.CreateBuilder().SetText("a").SetNumber(1).Build(),
 
-                 new MessageFormatOptions(), "application/xml", ms);
 
-             Assert.AreEqual("<root><text>a</text><number>1</number></root>", Encoding.UTF8.GetString(ms.ToArray()));
 
-         }
 
-         [Test]
 
-         public void TestWriteToProtoType()
 
-         {
 
-             MemoryStream ms = new MemoryStream();
 
-             Extensions.WriteTo(TestXmlMessage.CreateBuilder().SetText("a").SetNumber(1).Build(),
 
-                 new MessageFormatOptions(), "application/vnd.google.protobuf", ms);
 
-             byte[] bytes = TestXmlMessage.CreateBuilder().SetText("a").SetNumber(1).Build().ToByteArray();
 
-             Assert.AreEqual(bytes, ms.ToArray());
 
-         }
 
-         [Test]
 
-         public void TestXmlReaderOptions()
 
-         {
 
-             MemoryStream ms = new MemoryStream();
 
-             XmlFormatWriter.CreateInstance(ms)
 
-                 .SetOptions(XmlWriterOptions.OutputNestedArrays)
 
-                 .WriteMessage("my-root-node", TestXmlMessage.CreateBuilder().SetText("a").AddNumbers(1).AddNumbers(2).Build());
 
-             ms.Position = 0;
 
-             MessageFormatOptions options = new MessageFormatOptions()
 
-             {
 
-                 XmlReaderOptions = XmlReaderOptions.ReadNestedArrays,
 
-                 XmlReaderRootElementName = "my-root-node"
 
-             };
 
-             TestXmlMessage msg = Extensions.MergeFrom(new TestXmlMessage.Builder(),
 
-                 options, "application/xml", ms)
 
-                 .Build();
 
-             Assert.AreEqual("a", msg.Text);
 
-             Assert.AreEqual(1, msg.NumbersList[0]);
 
-             Assert.AreEqual(2, msg.NumbersList[1]);
 
-         }
 
-         [Test]
 
-         public void TestXmlWriterOptions()
 
-         {
 
-             TestXmlMessage message = TestXmlMessage.CreateBuilder().SetText("a").AddNumbers(1).AddNumbers(2).Build();
 
-             MessageFormatOptions options = new MessageFormatOptions()
 
-             {
 
-                 XmlWriterOptions = XmlWriterOptions.OutputNestedArrays,
 
-                 XmlWriterRootElementName = "root-node"
 
-             };
 
-             MemoryStream ms = new MemoryStream();
 
-             Extensions.WriteTo(message, options, "application/xml", ms);
 
-             ms.Position = 0;
 
-             
 
-             TestXmlMessage.Builder builder = TestXmlMessage.CreateBuilder();
 
-             XmlFormatReader.CreateInstance(ms)
 
-                 .SetOptions(XmlReaderOptions.ReadNestedArrays)
 
-                 .Merge("root-node", builder);
 
-             Assert.AreEqual("a", builder.Text);
 
-             Assert.AreEqual(1, builder.NumbersList[0]);
 
-             Assert.AreEqual(2, builder.NumbersList[1]);
 
-         }
 
-         [Test]
 
-         public void TestJsonFormatted()
 
-         {
 
-             MemoryStream ms = new MemoryStream();
 
-             Extensions.WriteTo(TestXmlMessage.CreateBuilder().SetText("a").SetNumber(1).Build(),
 
-                 new MessageFormatOptions() { FormattedOutput = true }, "application/json", ms);
 
-             Assert.AreEqual("{\r\n    \"text\": \"a\",\r\n    \"number\": 1\r\n}", Encoding.UTF8.GetString(ms.ToArray()));
 
-         }
 
-         [Test]
 
-         public void TestXmlFormatted()
 
-         {
 
-             MemoryStream ms = new MemoryStream();
 
-             Extensions.WriteTo(TestXmlMessage.CreateBuilder().SetText("a").SetNumber(1).Build(),
 
-                 new MessageFormatOptions() { FormattedOutput = true }, "application/xml", ms);
 
-             Assert.AreEqual("<root>\r\n    <text>a</text>\r\n    <number>1</number>\r\n</root>", Encoding.UTF8.GetString(ms.ToArray()));
 
-         }
 
-         [Test]
 
-         public void TestReadCustomMimeTypes()
 
-         {
 
-             var options = new MessageFormatOptions();
 
-             //Remove existing mime-type mappings
 
-             options.MimeInputTypes.Clear();
 
-             //Add our own
 
-             options.MimeInputTypes.Add("-custom-XML-mime-type-", XmlFormatReader.CreateInstance);
 
-             Assert.AreEqual(1, options.MimeInputTypes.Count);
 
-             Stream xmlStream = new MemoryStream(Encoding.ASCII.GetBytes(
 
-                 Extensions.ToXml(TestXmlMessage.CreateBuilder().SetText("a").SetNumber(1).Build())
 
-                 ));
 
-             TestXmlMessage msg = Extensions.MergeFrom(new TestXmlMessage.Builder(),
 
-                 options, "-custom-XML-mime-type-", xmlStream)
 
-                 .Build();
 
-             Assert.AreEqual("a", msg.Text);
 
-             Assert.AreEqual(1, msg.Number);
 
-         }
 
-         [Test]
 
-         public void TestWriteToCustomType()
 
-         {
 
-             var options = new MessageFormatOptions();
 
-             //Remove existing mime-type mappings
 
-             options.MimeOutputTypes.Clear();
 
-             //Add our own
 
-             options.MimeOutputTypes.Add("-custom-XML-mime-type-", XmlFormatWriter.CreateInstance);
 
-             
 
-             Assert.AreEqual(1, options.MimeOutputTypes.Count);
 
-             MemoryStream ms = new MemoryStream();
 
-             Extensions.WriteTo(TestXmlMessage.CreateBuilder().SetText("a").SetNumber(1).Build(),
 
-                 options, "-custom-XML-mime-type-", ms);
 
-             Assert.AreEqual("<root><text>a</text><number>1</number></root>", Encoding.UTF8.GetString(ms.ToArray()));
 
-         }
 
-     }
 
- }
 
 
  |