diff options
author | Jon Skeet <skeet@pobox.com> | 2015-07-23 06:50:23 +0100 |
---|---|---|
committer | Jon Skeet <skeet@pobox.com> | 2015-07-23 06:50:23 +0100 |
commit | bea87743e09b62f58e4cddead09e9170ee7d5d9a (patch) | |
tree | 67df2426209fb564b4a8504fafd1ceaf8481bfdb /csharp/src/Google.Protobuf.Test/Reflection/DescriptorsTest.cs | |
parent | 7b5c3967991b6534f439cb31b0d247501f4a0ef8 (diff) | |
parent | c1c6b2d0d579d863c2ff3709a0053039801f5430 (diff) | |
download | protobuf-bea87743e09b62f58e4cddead09e9170ee7d5d9a.tar.gz protobuf-bea87743e09b62f58e4cddead09e9170ee7d5d9a.tar.bz2 protobuf-bea87743e09b62f58e4cddead09e9170ee7d5d9a.zip |
Merge pull request #634 from jskeet/reflection2
Reflection part 2 - for discussion
Diffstat (limited to 'csharp/src/Google.Protobuf.Test/Reflection/DescriptorsTest.cs')
-rw-r--r-- | csharp/src/Google.Protobuf.Test/Reflection/DescriptorsTest.cs | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/csharp/src/Google.Protobuf.Test/Reflection/DescriptorsTest.cs b/csharp/src/Google.Protobuf.Test/Reflection/DescriptorsTest.cs index 0aff0a6c..5b6dc0fb 100644 --- a/csharp/src/Google.Protobuf.Test/Reflection/DescriptorsTest.cs +++ b/csharp/src/Google.Protobuf.Test/Reflection/DescriptorsTest.cs @@ -33,6 +33,7 @@ using System.Linq; using Google.Protobuf.TestProtos; using NUnit.Framework; +using UnitTest.Issues.TestProtos; namespace Google.Protobuf.Reflection { @@ -102,15 +103,16 @@ namespace Google.Protobuf.Reflection Assert.AreEqual(UnittestProto3.Descriptor, nestedType.File); Assert.AreEqual(messageType, nestedType.ContainingType); - FieldDescriptor field = messageType.Fields[0]; + FieldDescriptor field = messageType.Fields.InDeclarationOrder()[0]; Assert.AreEqual("single_int32", field.Name); Assert.AreEqual(field, messageType.FindDescriptor<FieldDescriptor>("single_int32")); Assert.Null(messageType.FindDescriptor<FieldDescriptor>("no_such_field")); Assert.AreEqual(field, messageType.FindFieldByNumber(1)); Assert.Null(messageType.FindFieldByNumber(571283)); - for (int i = 0; i < messageType.Fields.Count; i++) + var fieldsInDeclarationOrder = messageType.Fields.InDeclarationOrder(); + for (int i = 0; i < fieldsInDeclarationOrder.Count; i++) { - Assert.AreEqual(i, messageType.Fields[i].Index); + Assert.AreEqual(i, fieldsInDeclarationOrder[i].Index); } Assert.AreEqual(nestedType, messageType.NestedTypes[0]); @@ -220,5 +222,19 @@ namespace Google.Protobuf.Reflection CollectionAssert.AreEquivalent(expectedFields, descriptor.Fields); } + + [Test] + public void ConstructionWithoutGeneratedCodeInfo() + { + var data = UnittestIssues.Descriptor.Proto.ToByteArray(); + var newDescriptor = Google.Protobuf.Reflection.FileDescriptor.InternalBuildGeneratedFileFrom(data, new Reflection.FileDescriptor[] { }, null); + + // We should still be able to get at a field... + var messageDescriptor = newDescriptor.FindTypeByName<MessageDescriptor>("ItemField"); + var fieldDescriptor = messageDescriptor.FindFieldByName("item"); + // But there shouldn't be an accessor (or a generated type for the message) + Assert.IsNull(fieldDescriptor.Accessor); + Assert.IsNull(messageDescriptor.GeneratedType); + } } -}
\ No newline at end of file +} |