diff options
Diffstat (limited to 'src/ProtocolBuffers.Test/DynamicMessageTest.cs')
-rw-r--r-- | src/ProtocolBuffers.Test/DynamicMessageTest.cs | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/ProtocolBuffers.Test/DynamicMessageTest.cs b/src/ProtocolBuffers.Test/DynamicMessageTest.cs index 89193ad2..edcce38e 100644 --- a/src/ProtocolBuffers.Test/DynamicMessageTest.cs +++ b/src/ProtocolBuffers.Test/DynamicMessageTest.cs @@ -1,3 +1,4 @@ +using System.Collections.Generic; using Google.ProtocolBuffers.TestProtos; // Protocol Buffers - Google's data interchange format // Copyright 2008 Google Inc. All rights reserved. @@ -173,5 +174,26 @@ namespace Google.ProtocolBuffers { DynamicMessage copy = DynamicMessage.CreateBuilder(message).Build(); reflectionTester.AssertAllFieldsSetViaReflection(copy); } + + [Test] + public void ToBuilder() { + DynamicMessage.Builder builder = + DynamicMessage.CreateBuilder(TestAllTypes.Descriptor); + reflectionTester.SetAllFieldsViaReflection(builder); + int unknownFieldNum = 9; + ulong unknownFieldVal = 90; + builder.SetUnknownFields(UnknownFieldSet.CreateBuilder() + .AddField(unknownFieldNum, + UnknownField.CreateBuilder().AddVarint(unknownFieldVal).Build()) + .Build()); + DynamicMessage message = builder.Build(); + + DynamicMessage derived = message.ToBuilder().Build(); + reflectionTester.AssertAllFieldsSetViaReflection(derived); + + IList<ulong> values = derived.UnknownFields.FieldDictionary[unknownFieldNum].VarintList; + Assert.AreEqual(1, values.Count); + Assert.AreEqual(unknownFieldVal, values[0]); + } } } |