diff options
author | Jon Skeet <jonskeet@google.com> | 2015-07-10 14:04:53 +0100 |
---|---|---|
committer | Jon Skeet <jonskeet@google.com> | 2015-07-10 14:04:53 +0100 |
commit | ef3464dff648362683a75ddf593c9d47ec3c33ce (patch) | |
tree | 7ab7c866fbbe912249c9011c923fcfe0e1b890eb /csharp/src/ProtocolBuffers.Test | |
parent | 5b9288e47d7add219717d472aa95a5cfe1141ac9 (diff) | |
download | protobuf-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.cs | 20 |
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);
+ }
}
}
|