public void TestFullMessage()
 {
     FormatterAssert(
         TestXmlMessage.CreateBuilder()
         .SetValid(true)
         .SetText("text")
         .AddTextlines("a")
         .AddTextlines("b")
         .AddTextlines("c")
         .SetNumber(0x1010101010)
         .AddNumbers(1)
         .AddNumbers(2)
         .AddNumbers(3)
         .SetChild(TestXmlChild.CreateBuilder().AddOptions(EnumOptions.ONE).SetBinary(ByteString.CopyFrom(new byte[1])))
         .AddChildren(TestXmlMessage.Types.Children.CreateBuilder().AddOptions(EnumOptions.TWO).SetBinary(ByteString.CopyFrom(new byte[2])))
         .AddChildren(TestXmlMessage.Types.Children.CreateBuilder().AddOptions(EnumOptions.THREE).SetBinary(ByteString.CopyFrom(new byte[3])))
         .Build(),
         @"""text"":""text""",
         @"[""a"",""b"",""c""]",
         @"[1,2,3]",
         @"""child"":{",
         @"""children"":[{",
         @"AA==",
         @"AAA=",
         @"AAAA",
         0x1010101010L.ToString()
         );
 }
Example #2
0
        public void TestFullMessageWithRichTypes()
        {
            TestXmlMessage message = TestXmlMessage.CreateBuilder()
                                     .SetValid(true)
                                     .SetText("text")
                                     .AddTextlines("a")
                                     .AddTextlines("b")
                                     .AddTextlines("c")
                                     .SetNumber(0x1010101010)
                                     .AddNumbers(1)
                                     .AddNumbers(2)
                                     .AddNumbers(3)
                                     .SetChild(TestXmlChild.CreateBuilder().AddOptions(EnumOptions.ONE).SetBinary(ByteString.CopyFrom(new byte[1])))
                                     .AddChildren(TestXmlMessage.Types.Children.CreateBuilder().AddOptions(EnumOptions.TWO).SetBinary(ByteString.CopyFrom(new byte[2])))
                                     .AddChildren(TestXmlMessage.Types.Children.CreateBuilder().AddOptions(EnumOptions.THREE).SetBinary(ByteString.CopyFrom(new byte[3])))
                                     .Build();

            StringWriter sw   = new StringWriter();
            XmlWriter    xwtr = XmlWriter.Create(sw, new XmlWriterSettings {
                Indent = true, IndentChars = "  "
            });

            XmlFormatWriter.CreateInstance(xwtr)
            .SetOptions(XmlWriterOptions.OutputNestedArrays | XmlWriterOptions.OutputEnumValues)
            .WriteMessage("root", message);

            string xml = sw.ToString();

            XmlFormatReader rdr = XmlFormatReader.CreateInstance(xml);

            rdr.Options = XmlReaderOptions.ReadNestedArrays;
            TestXmlMessage copy = rdr.Merge(TestXmlMessage.CreateBuilder()).Build();

            Assert.AreEqual(message, copy);
        }
        public void TestPlainMessage()
        {
            TestXmlMessage message = TestXmlMessage.CreateBuilder()
                                     .SetValid(true)
                                     .SetText("text")
                                     .AddTextlines("a")
                                     .AddTextlines("b")
                                     .AddTextlines("c")
                                     .SetNumber(0x1010101010)
                                     .AddNumbers(1)
                                     .AddNumbers(2)
                                     .AddNumbers(3)
                                     .SetChild(TestXmlChild.CreateBuilder()
                                               .AddOptions(EnumOptions.ONE)
                                               .SetBinary(ByteString.CopyFrom(new byte[1])))
                                     .AddChildren(TestXmlMessage.Types.Children.CreateBuilder()
                                                  .AddOptions(EnumOptions.TWO)
                                                  .SetBinary(ByteString.CopyFrom(new byte[2])))
                                     .AddChildren(TestXmlMessage.Types.Children.CreateBuilder()
                                                  .AddOptions(EnumOptions.THREE)
                                                  .SetBinary(ByteString.CopyFrom(new byte[3])))
                                     .Build();

            MemoryStream ms = new MemoryStream();

            new BinaryFormatter().Serialize(ms, message);

            ms.Position = 0;
            TestXmlMessage copy = (TestXmlMessage) new BinaryFormatter().Deserialize(ms);

            Assert.AreEqual(message, copy);
        }
 public void TestEmptyMessage()
 {
     FormatterAssert(
         TestXmlChild.CreateBuilder()
         .Build(),
         @"{}"
         );
 }
 public void TestNestedMessage()
 {
     FormatterAssert(
         TestXmlMessage.CreateBuilder()
         .SetChild(TestXmlChild.CreateBuilder().AddOptions(EnumOptions.TWO).Build())
         .Build(),
         @"{""child"":{""options"":[""TWO""]}}"
         );
 }
 public void TestNestedEmptyMessage()
 {
     FormatterAssert(
         TestXmlMessage.CreateBuilder()
         .SetChild(TestXmlChild.CreateBuilder().Build())
         .Build(),
         @"{""child"":{}}"
         );
 }
 public void TestRepeatedField()
 {
     FormatterAssert(
         TestXmlChild.CreateBuilder()
         .AddOptions(EnumOptions.ONE)
         .AddOptions(EnumOptions.TWO)
         .Build(),
         @"{""options"":[""ONE"",""TWO""]}"
         );
 }
Example #8
0
        public void TestNestedMessage()
        {
            TestXmlMessage message = TestXmlMessage.CreateBuilder()
                                     .SetChild(TestXmlChild.CreateBuilder().AddOptions(EnumOptions.TWO).Build())
                                     .Build();

            StringWriter sw = new StringWriter();

            XmlFormatWriter.CreateInstance(sw).WriteMessage("root", message);

            string          xml  = sw.ToString();
            XmlFormatReader rdr  = XmlFormatReader.CreateInstance(xml);
            TestXmlMessage  copy = rdr.Merge(TestXmlMessage.CreateBuilder()).Build();

            Assert.AreEqual(message, copy);
        }
        public void TestBuilderWithExtensions()
        {
            TestXmlMessage.Builder builder = TestXmlMessage.CreateBuilder()
                                             .SetValid(true)
                                             .SetText("text")
                                             .AddTextlines("a")
                                             .AddTextlines("b")
                                             .AddTextlines("c")
                                             .SetNumber(0x1010101010)
                                             .AddNumbers(1)
                                             .AddNumbers(2)
                                             .AddNumbers(3)
                                             .SetChild(TestXmlChild.CreateBuilder()
                                                       .AddOptions(EnumOptions.ONE)
                                                       .SetBinary(ByteString.CopyFrom(new byte[1])))
                                             .AddChildren(TestXmlMessage.Types.Children.CreateBuilder()
                                                          .AddOptions(EnumOptions.TWO)
                                                          .SetBinary(ByteString.CopyFrom(new byte[2])))
                                             .AddChildren(TestXmlMessage.Types.Children.CreateBuilder()
                                                          .AddOptions(EnumOptions.THREE)
                                                          .SetBinary(ByteString.CopyFrom(new byte[3])))
                                             .SetExtension(UnitTestXmlSerializerTestProtoFile.ExtensionText, " extension text value ! ")
                                             .SetExtension(UnitTestXmlSerializerTestProtoFile.ExtensionMessage, new TestXmlExtension.Builder().SetNumber(42).Build())
                                             .AddExtension(UnitTestXmlSerializerTestProtoFile.ExtensionNumber, 100)
                                             .AddExtension(UnitTestXmlSerializerTestProtoFile.ExtensionNumber, 101)
                                             .AddExtension(UnitTestXmlSerializerTestProtoFile.ExtensionNumber, 102)
                                             .SetExtension(UnitTestXmlSerializerTestProtoFile.ExtensionEnum, EnumOptions.ONE)
            ;

            ExtensionRegistry registry = ExtensionRegistry.CreateInstance();

            UnitTestXmlSerializerTestProtoFile.RegisterAllExtensions(registry);

            MemoryStream ms = new MemoryStream();

            new BinaryFormatter().Serialize(ms, builder);

            ms.Position = 0;
            //you need to provide the extension registry as context to the serializer
            BinaryFormatter bff = new BinaryFormatter(null, new StreamingContext(StreamingContextStates.All, registry));

            TestXmlMessage.Builder copy = (TestXmlMessage.Builder)bff.Deserialize(ms);

            // And all extensions will be defined.
            Assert.AreEqual(builder.Build(), copy.Build());
        }
Example #10
0
        public void TestFullMessageWithUnknownFields()
        {
            TestXmlMessage origial = TestXmlMessage.CreateBuilder()
                                     .SetValid(true)
                                     .SetText("text")
                                     .AddTextlines("a")
                                     .AddTextlines("b")
                                     .AddTextlines("c")
                                     .SetNumber(0x1010101010)
                                     .AddNumbers(1)
                                     .AddNumbers(2)
                                     .AddNumbers(3)
                                     .SetChild(TestXmlChild.CreateBuilder().AddOptions(EnumOptions.ONE).SetBinary(ByteString.CopyFrom(new byte[1])))
                                     .AddChildren(TestXmlMessage.Types.Children.CreateBuilder().AddOptions(EnumOptions.TWO).SetBinary(ByteString.CopyFrom(new byte[2])))
                                     .AddChildren(TestXmlMessage.Types.Children.CreateBuilder().AddOptions(EnumOptions.THREE).SetBinary(ByteString.CopyFrom(new byte[3])))
                                     .Build();
            TestXmlNoFields message = TestXmlNoFields.CreateBuilder().MergeFrom(origial.ToByteArray()).Build();

            Assert.AreEqual(0, message.AllFields.Count);

            StringWriter sw = new StringWriter();

            XmlFormatWriter.CreateInstance(sw)
            .SetOptions(XmlWriterOptions.OutputNestedArrays | XmlWriterOptions.OutputEnumValues)
            .WriteMessage("root", message);

            string xml = sw.ToString();

            using (XmlReader x = XmlReader.Create(new StringReader(xml)))
            {
                x.MoveToContent();
                Assert.AreEqual(XmlNodeType.Element, x.NodeType);
                //should always be empty
                Assert.IsTrue(x.IsEmptyElement ||
                              (x.Read() && x.NodeType == XmlNodeType.EndElement)
                              );
            }

            XmlFormatReader rdr = XmlFormatReader.CreateInstance(xml);

            rdr.Options = XmlReaderOptions.ReadNestedArrays;
            TestXmlMessage copy = rdr.Merge(TestXmlMessage.CreateBuilder()).Build();

            Assert.AreEqual(TestXmlMessage.DefaultInstance, copy);
        }
Example #11
0
        public void TestRepeatedField()
        {
            TestXmlChild message = TestXmlChild.CreateBuilder()
                                   .AddOptions(EnumOptions.ONE)
                                   .AddOptions(EnumOptions.TWO)
                                   .Build();

            //Allow the writer to write the root element
            StringWriter sw = new StringWriter();

            XmlFormatWriter.CreateInstance(sw).WriteMessage("root", message);

            string          xml  = sw.ToString();
            XmlFormatReader rdr  = XmlFormatReader.CreateInstance(xml);
            TestXmlChild    copy = rdr.Merge(TestXmlChild.CreateBuilder()).Build();

            Assert.AreEqual(message, copy);
        }
Example #12
0
        public void TestEmptyMessage()
        {
            TestXmlChild message = TestXmlChild.CreateBuilder()
                                   .Build();

            StringWriter sw = new StringWriter();
            XmlWriter    xw = XmlWriter.Create(sw);

            //When we call message.WriteTo, we are responsible for the root element
            xw.WriteStartElement("root");
            message.WriteTo(XmlFormatWriter.CreateInstance(xw));
            xw.WriteEndElement();
            xw.Flush();

            string          xml  = sw.ToString();
            XmlFormatReader rdr  = XmlFormatReader.CreateInstance(xml);
            TestXmlChild    copy = rdr.Merge(TestXmlChild.CreateBuilder()).Build();

            Assert.AreEqual(message, copy);
        }