aboutsummaryrefslogtreecommitdiff
path: root/csharp/src/Google.Protobuf.Test/Reflection/DescriptorsTest.cs
diff options
context:
space:
mode:
authorJon Skeet <skeet@pobox.com>2015-07-23 06:50:23 +0100
committerJon Skeet <skeet@pobox.com>2015-07-23 06:50:23 +0100
commitbea87743e09b62f58e4cddead09e9170ee7d5d9a (patch)
tree67df2426209fb564b4a8504fafd1ceaf8481bfdb /csharp/src/Google.Protobuf.Test/Reflection/DescriptorsTest.cs
parent7b5c3967991b6534f439cb31b0d247501f4a0ef8 (diff)
parentc1c6b2d0d579d863c2ff3709a0053039801f5430 (diff)
downloadprotobuf-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.cs24
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
+}