public void TestMessageMissingExtensions()
        {
            TestXmlMessage original = TestXmlMessage.CreateBuilder()
                                      .SetValid(true)
                                      .SetText("text")
                                      .SetExtension(UnittestExtrasXmltest.ExtensionText, " extension text value ! ")
                                      .SetExtension(UnittestExtrasXmltest.ExtensionMessage, new TestXmlExtension.Builder().SetNumber(42).Build())
                                      .AddExtension(UnittestExtrasXmltest.ExtensionNumber, 100)
                                      .AddExtension(UnittestExtrasXmltest.ExtensionNumber, 101)
                                      .AddExtension(UnittestExtrasXmltest.ExtensionNumber, 102)
                                      .SetExtension(UnittestExtrasXmltest.ExtensionEnum, EnumOptions.ONE)
                                      .Build();

            TestXmlMessage message = original.ToBuilder()
                                     .ClearExtension(UnittestExtrasXmltest.ExtensionText)
                                     .ClearExtension(UnittestExtrasXmltest.ExtensionMessage)
                                     .ClearExtension(UnittestExtrasXmltest.ExtensionNumber)
                                     .ClearExtension(UnittestExtrasXmltest.ExtensionEnum)
                                     .Build();

            JsonFormatWriter writer = JsonFormatWriter.CreateInstance();

            writer.WriteMessage(original);
            Content = writer.ToString();

            IMessageLite copy = JsonFormatReader.CreateInstance(Content)
                                .Merge(message.CreateBuilderForType()).Build();

            Assert.AreNotEqual(original, message);
            Assert.AreNotEqual(original, copy);
            Assert.AreEqual(message, copy);
        }
        public void TestNestedMessageArray()
        {
            JsonFormatWriter writer = JsonFormatWriter.CreateInstance();

            using (writer.StartArray())
            {
                using (writer.StartArray())
                {
                    writer.WriteMessage(TestXmlMessage.CreateBuilder().SetNumber(1).AddTextlines("a").Build());
                    writer.WriteMessage(TestXmlMessage.CreateBuilder().SetNumber(2).AddTextlines("b").Build());
                }
                using (writer.StartArray())
                    writer.WriteMessage(TestXmlMessage.CreateBuilder().SetNumber(3).AddTextlines("c").Build());
            }
            string           json   = writer.ToString();
            JsonFormatReader reader = JsonFormatReader.CreateInstance(json);

            TestXmlMessage.Builder builder = TestXmlMessage.CreateBuilder();
            int ordinal = 0;

            foreach (JsonFormatReader r in reader.EnumerateArray())
            {
                foreach (JsonFormatReader r2 in r.EnumerateArray())
                {
                    r2.Merge(builder);
                    Assert.AreEqual(++ordinal, builder.Number);
                }
            }
            Assert.AreEqual(3, ordinal);
            Assert.AreEqual(3, builder.TextlinesCount);
        }
Example #3
0
        /// <summary>
        /// Serializes the message to JSON text.  This is a trivial wrapper
        /// around Serialization.JsonFormatWriter.WriteMessage.
        /// </summary>
        public static string ToJson(
#if !NOEXTENSIONS
            this
#endif
            IMessageLite message)
        {
            JsonFormatWriter w = JsonFormatWriter.CreateInstance();

            w.WriteMessage(message);
            return(w.ToString());
        }