aboutsummaryrefslogtreecommitdiff
path: root/csharp/src/ProtocolBuffers.Test
diff options
context:
space:
mode:
authorJon Skeet <jonskeet@google.com>2015-07-10 14:04:53 +0100
committerJon Skeet <jonskeet@google.com>2015-07-10 14:04:53 +0100
commitef3464dff648362683a75ddf593c9d47ec3c33ce (patch)
tree7ab7c866fbbe912249c9011c923fcfe0e1b890eb /csharp/src/ProtocolBuffers.Test
parent5b9288e47d7add219717d472aa95a5cfe1141ac9 (diff)
downloadprotobuf-ef3464dff648362683a75ddf593c9d47ec3c33ce.tar.gz
protobuf-ef3464dff648362683a75ddf593c9d47ec3c33ce.tar.bz2
protobuf-ef3464dff648362683a75ddf593c9d47ec3c33ce.zip
Oneof reflection support. (Generated code changes in next commit.)
Diffstat (limited to 'csharp/src/ProtocolBuffers.Test')
-rw-r--r--csharp/src/ProtocolBuffers.Test/GeneratedMessageTest.cs20
1 files changed, 20 insertions, 0 deletions
diff --git a/csharp/src/ProtocolBuffers.Test/GeneratedMessageTest.cs b/csharp/src/ProtocolBuffers.Test/GeneratedMessageTest.cs
index 8cee9820..28c2195f 100644
--- a/csharp/src/ProtocolBuffers.Test/GeneratedMessageTest.cs
+++ b/csharp/src/ProtocolBuffers.Test/GeneratedMessageTest.cs
@@ -734,5 +734,25 @@ namespace Google.Protobuf
var message = SampleMessages.CreateFullTestAllTypes();
Assert.Throws<InvalidCastException>(() => message.Fields[TestAllTypes.SingleBoolFieldNumber].GetValue(new TestMap()));
}
+
+ [Test]
+ public void Reflection_Oneof()
+ {
+ var message = new TestAllTypes();
+ var fields = message.Fields;
+ Assert.AreEqual(1, fields.Oneofs.Count);
+ var oneof = fields.Oneofs[0];
+ Assert.AreEqual("oneof_field", oneof.Descriptor.Name);
+ Assert.IsNull(oneof.GetCaseFieldDescriptor(message));
+
+ message.OneofString = "foo";
+ Assert.AreSame(fields[TestAllTypes.OneofStringFieldNumber].Descriptor, oneof.GetCaseFieldDescriptor(message));
+
+ message.OneofUint32 = 10;
+ Assert.AreSame(fields[TestAllTypes.OneofUint32FieldNumber].Descriptor, oneof.GetCaseFieldDescriptor(message));
+
+ oneof.Clear(message);
+ Assert.AreEqual(TestAllTypes.OneofFieldOneofCase.None, message.OneofFieldCase);
+ }
}
}