diff options
author | Jon Skeet <jonskeet@google.com> | 2017-07-03 07:40:45 +0100 |
---|---|---|
committer | Jon Skeet <skeet@pobox.com> | 2017-07-03 12:16:40 +0100 |
commit | 62d7fe569717b6da39401a94b22adf73466e1f2d (patch) | |
tree | 32bb4a4eafed76078bf99779da67f91ab936144e /csharp/src/Google.Protobuf.Test/WellKnownTypes | |
parent | ecca6ea95d56a6f70ff7b223ec3f904758acc8b1 (diff) | |
download | protobuf-62d7fe569717b6da39401a94b22adf73466e1f2d.tar.gz protobuf-62d7fe569717b6da39401a94b22adf73466e1f2d.tar.bz2 protobuf-62d7fe569717b6da39401a94b22adf73466e1f2d.zip |
Make Any easier to work with in C#
- Add a TryUnpack method which doesn't throw if the type is wrong
- Make GetTypeName public for easier determination of the message type
Fixes #3294.
Diffstat (limited to 'csharp/src/Google.Protobuf.Test/WellKnownTypes')
-rw-r--r-- | csharp/src/Google.Protobuf.Test/WellKnownTypes/AnyTest.cs | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/csharp/src/Google.Protobuf.Test/WellKnownTypes/AnyTest.cs b/csharp/src/Google.Protobuf.Test/WellKnownTypes/AnyTest.cs index 4aecc998..a3edd595 100644 --- a/csharp/src/Google.Protobuf.Test/WellKnownTypes/AnyTest.cs +++ b/csharp/src/Google.Protobuf.Test/WellKnownTypes/AnyTest.cs @@ -91,6 +91,24 @@ namespace Google.Protobuf.WellKnownTypes } [Test] + public void TryUnpack_WrongType() + { + var message = SampleMessages.CreateFullTestAllTypes(); + var any = Any.Pack(message); + Assert.False(any.TryUnpack(out TestOneof unpacked)); + Assert.Null(unpacked); + } + + [Test] + public void TryUnpack_RightType() + { + var message = SampleMessages.CreateFullTestAllTypes(); + var any = Any.Pack(message); + Assert.IsTrue(any.TryUnpack(out TestAllTypes unpacked)); + Assert.AreEqual(message, unpacked); + } + + [Test] public void ToString_WithValues() { var message = SampleMessages.CreateFullTestAllTypes(); @@ -100,6 +118,16 @@ namespace Google.Protobuf.WellKnownTypes } [Test] + [TestCase("proto://foo.bar", "foo.bar")] + [TestCase("/foo/bar/baz", "baz")] + [TestCase("foobar", "")] + public void GetTypeName(string typeUrl, string expectedTypeName) + { + var any = new Any { TypeUrl = typeUrl }; + Assert.AreEqual(expectedTypeName, Any.GetTypeName(typeUrl)); + } + + [Test] public void ToString_Empty() { var any = new Any(); |