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 OneofProperties() { // Switch the oneof case between each of the different options, and check everything behaves // as expected in each case. var message = new TestAllTypes(); Assert.AreEqual("", message.OneofString); Assert.AreEqual(0, message.OneofUint32); Assert.AreEqual(ByteString.Empty, message.OneofBytes); Assert.IsNull(message.OneofNestedMessage); Assert.AreEqual(TestAllTypes.OneofFieldOneofCase.None, message.OneofFieldCase); message.OneofString = "sample"; Assert.AreEqual("sample", message.OneofString); Assert.AreEqual(0, message.OneofUint32); Assert.AreEqual(ByteString.Empty, message.OneofBytes); Assert.IsNull(message.OneofNestedMessage); Assert.AreEqual(TestAllTypes.OneofFieldOneofCase.OneofString, message.OneofFieldCase); var bytes = ByteString.CopyFrom(1, 2, 3); message.OneofBytes = bytes; Assert.AreEqual("", message.OneofString); Assert.AreEqual(0, message.OneofUint32); Assert.AreEqual(bytes, message.OneofBytes); Assert.IsNull(message.OneofNestedMessage); Assert.AreEqual(TestAllTypes.OneofFieldOneofCase.OneofBytes, message.OneofFieldCase); message.OneofUint32 = 20; Assert.AreEqual("", message.OneofString); Assert.AreEqual(20, message.OneofUint32); Assert.AreEqual(ByteString.Empty, message.OneofBytes); Assert.IsNull(message.OneofNestedMessage); Assert.AreEqual(TestAllTypes.OneofFieldOneofCase.OneofUint32, message.OneofFieldCase); var nestedMessage = new TestAllTypes.Types.NestedMessage { Bb = 25 }; message.OneofNestedMessage = nestedMessage; Assert.AreEqual("", message.OneofString); Assert.AreEqual(0, message.OneofUint32); Assert.AreEqual(ByteString.Empty, message.OneofBytes); Assert.AreEqual(nestedMessage, message.OneofNestedMessage); Assert.AreEqual(TestAllTypes.OneofFieldOneofCase.OneofNestedMessage, message.OneofFieldCase); message.ClearOneofField(); Assert.AreEqual("", message.OneofString); Assert.AreEqual(0, message.OneofUint32); Assert.AreEqual(ByteString.Empty, message.OneofBytes); Assert.IsNull(message.OneofNestedMessage); Assert.AreEqual(TestAllTypes.OneofFieldOneofCase.None, message.OneofFieldCase); }
public void OneofProperties() { // Switch the oneof case between each of the different options, and check everything behaves // as expected in each case. var message = new TestAllTypes(); Assert.AreEqual("", message.OneofString); Assert.AreEqual(0, message.OneofUint32); Assert.AreEqual(ByteString.Empty, message.OneofBytes); Assert.IsNull(message.OneofNestedMessage); Assert.AreEqual(TestAllTypes.OneofFieldOneofCase.None, message.OneofFieldCase); message.OneofString = "sample"; Assert.AreEqual("sample", message.OneofString); Assert.AreEqual(0, message.OneofUint32); Assert.AreEqual(ByteString.Empty, message.OneofBytes); Assert.IsNull(message.OneofNestedMessage); Assert.AreEqual(TestAllTypes.OneofFieldOneofCase.OneofString, message.OneofFieldCase); var bytes = ByteString.CopyFrom(1, 2, 3); message.OneofBytes = bytes; Assert.AreEqual("", message.OneofString); Assert.AreEqual(0, message.OneofUint32); Assert.AreEqual(bytes, message.OneofBytes); Assert.IsNull(message.OneofNestedMessage); Assert.AreEqual(TestAllTypes.OneofFieldOneofCase.OneofBytes, message.OneofFieldCase); message.OneofUint32 = 20; Assert.AreEqual("", message.OneofString); Assert.AreEqual(20, message.OneofUint32); Assert.AreEqual(ByteString.Empty, message.OneofBytes); Assert.IsNull(message.OneofNestedMessage); Assert.AreEqual(TestAllTypes.OneofFieldOneofCase.OneofUint32, message.OneofFieldCase); var nestedMessage = new TestAllTypes.Types.NestedMessage { Bb = 25 }; message.OneofNestedMessage = nestedMessage; Assert.AreEqual("", message.OneofString); Assert.AreEqual(0, message.OneofUint32); Assert.AreEqual(ByteString.Empty, message.OneofBytes); Assert.AreEqual(nestedMessage, message.OneofNestedMessage); Assert.AreEqual(TestAllTypes.OneofFieldOneofCase.OneofNestedMessage, message.OneofFieldCase); message.ClearOneofField(); Assert.AreEqual("", message.OneofString); Assert.AreEqual(0, message.OneofUint32); Assert.AreEqual(ByteString.Empty, message.OneofBytes); Assert.IsNull(message.OneofNestedMessage); Assert.AreEqual(TestAllTypes.OneofFieldOneofCase.None, message.OneofFieldCase); }