public void RoundTrip_ExtensionGroups() { var message = new TestAllExtensions(); message.SetExtension(UnittestExtensions.OptionalGroupExtension, new OptionalGroup_extension { A = 10 }); message.GetOrInitializeExtension(UnittestExtensions.RepeatedGroupExtension).AddRange(new[] { new RepeatedGroup_extension { A = 10 }, new RepeatedGroup_extension { A = 20 }, new RepeatedGroup_extension { A = 30 } }); MessageParsingHelpers.AssertRoundtrip( TestAllExtensions.Parser.WithExtensionRegistry(new ExtensionRegistry() { UnittestExtensions.OptionalGroupExtension, UnittestExtensions.RepeatedGroupExtension }), message); }
public void GetSingle() { var extensionValue = new TestAllTypes.Types.NestedMessage() { Bb = 42 }; var untypedExtension = new Extension <TestAllExtensions, object>(OptionalNestedMessageExtension.FieldNumber, codec: null); var wrongTypedExtension = new Extension <TestAllExtensions, TestAllTypes>(OptionalNestedMessageExtension.FieldNumber, codec: null); var message = new TestAllExtensions(); var value1 = message.GetExtension(untypedExtension); Assert.IsNull(value1); message.SetExtension(OptionalNestedMessageExtension, extensionValue); var value2 = message.GetExtension(untypedExtension); Assert.IsNotNull(value2); var valueBytes = ((IMessage)value2).ToByteArray(); var parsedValue = TestProtos.Proto2.TestAllTypes.Types.NestedMessage.Parser.ParseFrom(valueBytes); Assert.AreEqual(extensionValue, parsedValue); var ex = Assert.Throws <InvalidOperationException>(() => message.GetExtension(wrongTypedExtension)); var expectedMessage = "The stored extension value has a type of 'Google.Protobuf.TestProtos.Proto2.TestAllTypes+Types+NestedMessage, Google.Protobuf.Test.TestProtos, Version=1.0.0.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604'. " + "This a different from the requested type of 'Google.Protobuf.TestProtos.Proto2.TestAllTypes, Google.Protobuf.Test.TestProtos, Version=1.0.0.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604'."; Assert.AreEqual(expectedMessage, ex.Message); }
public void RoundTrip_ExtensionGroups() { var message = new TestAllExtensions(); message.SetExtension(UnittestExtensions.OptionalGroupExtension, new OptionalGroup_extension { A = 10 }); message.GetOrInitializeExtension(UnittestExtensions.RepeatedGroupExtension).AddRange(new[] { new RepeatedGroup_extension { A = 10 }, new RepeatedGroup_extension { A = 20 }, new RepeatedGroup_extension { A = 30 } }); byte[] bytes = message.ToByteArray(); TestAllExtensions extendable_parsed = TestAllExtensions.Parser.WithExtensionRegistry(new ExtensionRegistry() { UnittestExtensions.OptionalGroupExtension, UnittestExtensions.RepeatedGroupExtension }).ParseFrom(bytes); Assert.AreEqual(message, extendable_parsed); }
public void TestHashCode() { var message = new TestAllExtensions(); var hashCode = message.GetHashCode(); message.SetExtension(OptionalBoolExtension, true); Assert.AreNotEqual(hashCode, message.GetHashCode()); }
public void TestClone() { var message = new TestAllExtensions(); message.SetExtension(OptionalBoolExtension, true); var other = message.Clone(); Assert.AreEqual(message, other); Assert.AreEqual(message.CalculateSize(), message.CalculateSize()); }
public void RequiredFieldsInExtensions() { var message = new TestAllExtensions(); Assert.True(message.IsInitialized()); message.SetExtension(TestRequired.Extensions.Single, new TestRequired()); Assert.False(message.IsInitialized()); var extensionMessage = message.GetExtension(TestRequired.Extensions.Single); extensionMessage.A = 1; extensionMessage.B = 2; extensionMessage.C = 3; Assert.True(message.IsInitialized()); message.GetOrInitializeExtension(TestRequired.Extensions.Multi); Assert.True(message.IsInitialized()); message.GetExtension(TestRequired.Extensions.Multi).Add(new TestRequired()); Assert.False(message.IsInitialized()); extensionMessage = message.GetExtension(TestRequired.Extensions.Multi)[0]; extensionMessage.A = 1; extensionMessage.B = 2; extensionMessage.C = 3; Assert.True(message.IsInitialized()); message.SetExtension(UnittestExtensions.OptionalBoolExtension, true); Assert.True(message.IsInitialized()); message.GetOrInitializeExtension(UnittestExtensions.RepeatedBoolExtension).Add(true); Assert.True(message.IsInitialized()); }
public void RoundTrip_ParseUsingCodedInput() { var message = new TestAllExtensions(); message.SetExtension(UnittestExtensions.OptionalBoolExtension, true); byte[] bytes = message.ToByteArray(); using CodedInputStream input = new CodedInputStream(bytes); var parsed = TestAllExtensions.Parser.WithExtensionRegistry(new ExtensionRegistry() { UnittestExtensions.OptionalBoolExtension }).ParseFrom(input); Assert.AreEqual(message, parsed); }
public void TestMergeMessage() { var message = new TestAllExtensions(); message.SetExtension(OptionalBoolExtension, true); var other = new TestAllExtensions(); Assert.AreNotEqual(message, other); Assert.AreNotEqual(message.CalculateSize(), other.CalculateSize()); other.MergeFrom(message); Assert.AreEqual(message, other); Assert.AreEqual(message.CalculateSize(), other.CalculateSize()); }
public void TestMergeCodedInput() { var message = new TestAllExtensions(); message.SetExtension(OptionalBoolExtension, true); var serialized = message.ToByteArray(); var other = TestAllExtensions.Parser .WithExtensionRegistry(new ExtensionRegistry() { OptionalBoolExtension }) .ParseFrom(serialized); Assert.AreEqual(message, other); Assert.AreEqual(message.CalculateSize(), other.CalculateSize()); }
public void TestDefaultValueRoundTrip() { var message = new TestAllExtensions(); message.SetExtension(OptionalBoolExtension, false); Assert.IsFalse(message.GetExtension(OptionalBoolExtension)); Assert.IsTrue(message.HasExtension(OptionalBoolExtension)); var bytes = message.ToByteArray(); var registry = new ExtensionRegistry { OptionalBoolExtension }; var parsed = TestAllExtensions.Parser.WithExtensionRegistry(registry).ParseFrom(bytes); Assert.IsFalse(parsed.GetExtension(OptionalBoolExtension)); Assert.IsTrue(parsed.HasExtension(OptionalBoolExtension)); }
public void TestMergeCodedInput() { var message = new TestAllExtensions(); message.SetExtension(OptionalBoolExtension, true); var serialized = message.ToByteArray(); MessageParsingHelpers.AssertReadingMessage( TestAllExtensions.Parser.WithExtensionRegistry(new ExtensionRegistry() { OptionalBoolExtension }), serialized, other => { Assert.AreEqual(message, other); Assert.AreEqual(message.CalculateSize(), other.CalculateSize()); }); }
public void TryMergeFieldFrom_CodedInputStream() { var message = new TestAllExtensions(); message.SetExtension(OptionalStringExtension, "abcd"); var input = new CodedInputStream(message.ToByteArray()); input.ExtensionRegistry = new ExtensionRegistry { OptionalStringExtension }; input.ReadTag(); // TryMergeFieldFrom expects that a tag was just read and will inspect the LastTag value ExtensionSet <TestAllExtensions> extensionSet = null; // test the legacy overload of TryMergeFieldFrom that takes a CodedInputStream Assert.IsTrue(ExtensionSet.TryMergeFieldFrom(ref extensionSet, input)); Assert.AreEqual("abcd", ExtensionSet.Get(ref extensionSet, OptionalStringExtension)); }