diff options
author | Jon Skeet <jonskeet@google.com> | 2015-08-06 11:40:43 +0100 |
---|---|---|
committer | Jon Skeet <jonskeet@google.com> | 2015-08-06 11:40:43 +0100 |
commit | 5bdc57292f2a21706ff1dab21652fb8e1f058eb7 (patch) | |
tree | c313720a0b955c6d24f68a3a3d770c0a3eb0f556 /csharp/src/Google.Protobuf.Test/WellKnownTypes | |
parent | e7f88ff1294ada0fca19334ed2c844cdb98ea2f6 (diff) | |
download | protobuf-5bdc57292f2a21706ff1dab21652fb8e1f058eb7.tar.gz protobuf-5bdc57292f2a21706ff1dab21652fb8e1f058eb7.tar.bz2 protobuf-5bdc57292f2a21706ff1dab21652fb8e1f058eb7.zip |
Generated code for previous commit.
Diffstat (limited to 'csharp/src/Google.Protobuf.Test/WellKnownTypes')
-rw-r--r-- | csharp/src/Google.Protobuf.Test/WellKnownTypes/WrappersTest.cs | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/csharp/src/Google.Protobuf.Test/WellKnownTypes/WrappersTest.cs b/csharp/src/Google.Protobuf.Test/WellKnownTypes/WrappersTest.cs index d2a07057..fbc0ff07 100644 --- a/csharp/src/Google.Protobuf.Test/WellKnownTypes/WrappersTest.cs +++ b/csharp/src/Google.Protobuf.Test/WellKnownTypes/WrappersTest.cs @@ -322,5 +322,28 @@ namespace Google.Protobuf.WellKnownTypes // A normal implementation would have 0 now, as the explicit default would have been overwritten the 5. Assert.AreEqual(5, message.Int32Field); } + + [Test] + public void UnknownFieldInWrapper() + { + var stream = new MemoryStream(); + var output = new CodedOutputStream(stream); + var wrapperTag = WireFormat.MakeTag(TestWellKnownTypes.Int32FieldFieldNumber, WireFormat.WireType.LengthDelimited); + var unknownTag = WireFormat.MakeTag(15, WireFormat.WireType.Varint); + var valueTag = WireFormat.MakeTag(Int32Value.ValueFieldNumber, WireFormat.WireType.Varint); + + output.WriteTag(wrapperTag); + output.WriteLength(4); // unknownTag + value 5 + valueType + value 6, each 1 byte + output.WriteTag(unknownTag); + output.WriteInt32((int) valueTag); // Sneakily "pretend" it's a tag when it's really a value + output.WriteTag(valueTag); + output.WriteInt32(6); + + output.Flush(); + stream.Position = 0; + + var message = TestWellKnownTypes.Parser.ParseFrom(stream); + Assert.AreEqual(6, message.Int32Field); + } } } |