public void ParseMessageSet() { ExtensionRegistry extensionRegistry = ExtensionRegistry.CreateInstance(); extensionRegistry.Add(TestMessageSetExtension1.MessageSetExtension); extensionRegistry.Add(TestMessageSetExtension2.MessageSetExtension); // Set up a RawMessageSet with two known messages and an unknown one. RawMessageSet raw = RawMessageSet.CreateBuilder() .AddItem( RawMessageSet.Types.Item.CreateBuilder() .SetTypeId(TypeId1) .SetMessage( TestMessageSetExtension1.CreateBuilder() .SetI(123) .Build().ToByteString()) .Build()) .AddItem( RawMessageSet.Types.Item.CreateBuilder() .SetTypeId(TypeId2) .SetMessage( TestMessageSetExtension2.CreateBuilder() .SetStr("foo") .Build().ToByteString()) .Build()) .AddItem( RawMessageSet.Types.Item.CreateBuilder() .SetTypeId(UnknownTypeId) .SetMessage(ByteString.CopyFromUtf8("bar")) .Build()) .Build(); ByteString data = raw.ToByteString(); // Parse as a TestMessageSet and check the contents. TestMessageSet messageSet = TestMessageSet.ParseFrom(data, extensionRegistry); Assert.AreEqual(123, messageSet.GetExtension(TestMessageSetExtension1.MessageSetExtension).I); Assert.AreEqual("foo", messageSet.GetExtension(TestMessageSetExtension2.MessageSetExtension).Str); // Check for unknown field with type LENGTH_DELIMITED, // number UNKNOWN_TYPE_ID, and contents "bar". UnknownFieldSet unknownFields = messageSet.UnknownFields; Assert.AreEqual(1, unknownFields.FieldDictionary.Count); Assert.IsTrue(unknownFields.HasField(UnknownTypeId)); UnknownField field = unknownFields[UnknownTypeId]; Assert.AreEqual(1, field.LengthDelimitedList.Count); Assert.AreEqual("bar", field.LengthDelimitedList[0].ToStringUtf8()); }
public void PrintMessageSet() { TestMessageSet messageSet = TestMessageSet.CreateBuilder() .SetExtension( TestMessageSetExtension1.MessageSetExtension, TestMessageSetExtension1.CreateBuilder().SetI(123).Build()) .SetExtension( TestMessageSetExtension2.MessageSetExtension, TestMessageSetExtension2.CreateBuilder().SetStr("foo").Build()) .Build(); Assert.AreEqual(MessageSetText, messageSet.ToString()); }
public void SerializeMessageSet() { // Set up a TestMessageSet with two known messages and an unknown one. TestMessageSet messageSet = TestMessageSet.CreateBuilder() .SetExtension( TestMessageSetExtension1.MessageSetExtension, TestMessageSetExtension1.CreateBuilder().SetI(123).Build()) .SetExtension( TestMessageSetExtension2.MessageSetExtension, TestMessageSetExtension2.CreateBuilder().SetStr("foo").Build()) .SetUnknownFields( UnknownFieldSet.CreateBuilder() .AddField(UnknownTypeId, UnknownField.CreateBuilder() .AddLengthDelimited(ByteString.CopyFromUtf8("bar")) .Build()) .Build()) .Build(); ByteString data = messageSet.ToByteString(); // Parse back using RawMessageSet and check the contents. RawMessageSet raw = RawMessageSet.ParseFrom(data); Assert.AreEqual(0, raw.UnknownFields.FieldDictionary.Count); Assert.AreEqual(3, raw.ItemCount); Assert.AreEqual(TypeId1, raw.ItemList[0].TypeId); Assert.AreEqual(TypeId2, raw.ItemList[1].TypeId); Assert.AreEqual(UnknownTypeId, raw.ItemList[2].TypeId); TestMessageSetExtension1 message1 = TestMessageSetExtension1.ParseFrom(raw.GetItem(0).Message.ToByteArray()); Assert.AreEqual(123, message1.I); TestMessageSetExtension2 message2 = TestMessageSetExtension2.ParseFrom(raw.GetItem(1).Message.ToByteArray()); Assert.AreEqual("foo", message2.Str); Assert.AreEqual("bar", raw.GetItem(2).Message.ToStringUtf8()); }