public void TestFieldDescriptor( FileDescriptor unitTestProto3Descriptor, MessageDescriptor testAllTypesDescriptor, MessageDescriptor foreignMessageDescriptor, MessageDescriptor importMessageDescriptor) { FieldDescriptor primitiveField = testAllTypesDescriptor.FindDescriptor <FieldDescriptor>("single_int32"); FieldDescriptor enumField = testAllTypesDescriptor.FindDescriptor <FieldDescriptor>("single_nested_enum"); FieldDescriptor foreignMessageField = testAllTypesDescriptor.FindDescriptor <FieldDescriptor>("single_foreign_message"); FieldDescriptor importMessageField = testAllTypesDescriptor.FindDescriptor <FieldDescriptor>("single_import_message"); Assert.AreEqual("single_int32", primitiveField.Name); Assert.AreEqual("protobuf_unittest3.TestAllTypes.single_int32", primitiveField.FullName); Assert.AreEqual(1, primitiveField.FieldNumber); Assert.AreEqual(testAllTypesDescriptor, primitiveField.ContainingType); Assert.AreEqual(unitTestProto3Descriptor, primitiveField.File); Assert.AreEqual(FieldType.Int32, primitiveField.FieldType); Assert.IsNull(primitiveField.Proto.Options); Assert.AreEqual("single_nested_enum", enumField.Name); Assert.AreEqual(FieldType.Enum, enumField.FieldType); Assert.AreEqual(testAllTypesDescriptor.EnumTypes[0], enumField.EnumType); Assert.AreEqual("single_foreign_message", foreignMessageField.Name); Assert.AreEqual(FieldType.Message, foreignMessageField.FieldType); Assert.AreEqual(foreignMessageDescriptor, foreignMessageField.MessageType); Assert.AreEqual("single_import_message", importMessageField.Name); Assert.AreEqual(FieldType.Message, importMessageField.FieldType); Assert.AreEqual(importMessageDescriptor, importMessageField.MessageType); }
public void TestFieldDescriptor( FileDescriptor unitTestProto3Descriptor, MessageDescriptor testAllTypesDescriptor, MessageDescriptor foreignMessageDescriptor, MessageDescriptor importMessageDescriptor) { FieldDescriptor primitiveField = testAllTypesDescriptor.FindDescriptor <FieldDescriptor>("single_int32"); FieldDescriptor enumField = testAllTypesDescriptor.FindDescriptor <FieldDescriptor>("single_nested_enum"); FieldDescriptor foreignMessageField = testAllTypesDescriptor.FindDescriptor <FieldDescriptor>("single_foreign_message"); FieldDescriptor importMessageField = testAllTypesDescriptor.FindDescriptor <FieldDescriptor>("single_import_message"); FieldDescriptor fieldInOneof = testAllTypesDescriptor.FindDescriptor <FieldDescriptor>("oneof_string"); Assert.AreEqual("single_int32", primitiveField.Name); Assert.AreEqual("protobuf_unittest3.TestAllTypes.single_int32", primitiveField.FullName); Assert.AreEqual(1, primitiveField.FieldNumber); Assert.AreEqual(testAllTypesDescriptor, primitiveField.ContainingType); Assert.AreEqual(unitTestProto3Descriptor, primitiveField.File); Assert.AreEqual(FieldType.Int32, primitiveField.FieldType); Assert.IsNull(primitiveField.Proto.Options); Assert.AreEqual("single_nested_enum", enumField.Name); Assert.AreEqual(FieldType.Enum, enumField.FieldType); Assert.AreEqual(testAllTypesDescriptor.EnumTypes[0], enumField.EnumType); Assert.AreEqual("single_foreign_message", foreignMessageField.Name); Assert.AreEqual(FieldType.Message, foreignMessageField.FieldType); Assert.AreEqual(foreignMessageDescriptor, foreignMessageField.MessageType); Assert.AreEqual("single_import_message", importMessageField.Name); Assert.AreEqual(FieldType.Message, importMessageField.FieldType); Assert.AreEqual(importMessageDescriptor, importMessageField.MessageType); // For a field in a regular onoef, ContainingOneof and RealContainingOneof should be the same. Assert.AreEqual("oneof_field", fieldInOneof.ContainingOneof.Name); Assert.AreSame(fieldInOneof.ContainingOneof, fieldInOneof.RealContainingOneof); TestDescriptorToProto(primitiveField.ToProto, primitiveField.Proto); TestDescriptorToProto(enumField.ToProto, enumField.Proto); TestDescriptorToProto(foreignMessageField.ToProto, foreignMessageField.Proto); TestDescriptorToProto(fieldInOneof.ToProto, fieldInOneof.Proto); }
public void FieldDescriptor() { MessageDescriptor messageType = TestAllTypes.Descriptor; FieldDescriptor primitiveField = messageType.FindDescriptor <FieldDescriptor>("single_int32"); FieldDescriptor enumField = messageType.FindDescriptor <FieldDescriptor>("single_nested_enum"); FieldDescriptor messageField = messageType.FindDescriptor <FieldDescriptor>("single_foreign_message"); Assert.AreEqual("single_int32", primitiveField.Name); Assert.AreEqual("protobuf_unittest.TestAllTypes.single_int32", primitiveField.FullName); Assert.AreEqual(1, primitiveField.FieldNumber); Assert.AreEqual(messageType, primitiveField.ContainingType); Assert.AreEqual(UnittestProto3.Descriptor, primitiveField.File); Assert.AreEqual(FieldType.Int32, primitiveField.FieldType); Assert.IsNull(primitiveField.Proto.Options); Assert.AreEqual("single_nested_enum", enumField.Name); Assert.AreEqual(FieldType.Enum, enumField.FieldType); // Assert.AreEqual(TestAllTypes.Types.NestedEnum.DescriptorProtoFile, enumField.EnumType); Assert.AreEqual("single_foreign_message", messageField.Name); Assert.AreEqual(FieldType.Message, messageField.FieldType); Assert.AreEqual(ForeignMessage.Descriptor, messageField.MessageType); }
public void MessageDescriptor() { MessageDescriptor messageType = TestAllTypes.Descriptor; MessageDescriptor nestedType = TestAllTypes.Types.NestedMessage.Descriptor; Assert.AreEqual("TestAllTypes", messageType.Name); Assert.AreEqual("protobuf_unittest3.TestAllTypes", messageType.FullName); Assert.AreEqual(UnittestProto3Reflection.Descriptor, messageType.File); Assert.IsNull(messageType.ContainingType); Assert.IsNull(messageType.Proto.Options); Assert.AreEqual("TestAllTypes", messageType.Name); Assert.AreEqual("NestedMessage", nestedType.Name); Assert.AreEqual("protobuf_unittest3.TestAllTypes.NestedMessage", nestedType.FullName); Assert.AreEqual(UnittestProto3Reflection.Descriptor, nestedType.File); Assert.AreEqual(messageType, nestedType.ContainingType); 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)); var fieldsInDeclarationOrder = messageType.Fields.InDeclarationOrder(); for (int i = 0; i < fieldsInDeclarationOrder.Count; i++) { Assert.AreEqual(i, fieldsInDeclarationOrder[i].Index); } Assert.AreEqual(nestedType, messageType.NestedTypes[0]); Assert.AreEqual(nestedType, messageType.FindDescriptor <MessageDescriptor>("NestedMessage")); Assert.Null(messageType.FindDescriptor <MessageDescriptor>("NoSuchType")); for (int i = 0; i < messageType.NestedTypes.Count; i++) { Assert.AreEqual(i, messageType.NestedTypes[i].Index); } Assert.AreEqual(messageType.EnumTypes[0], messageType.FindDescriptor <EnumDescriptor>("NestedEnum")); Assert.Null(messageType.FindDescriptor <EnumDescriptor>("NoSuchType")); for (int i = 0; i < messageType.EnumTypes.Count; i++) { Assert.AreEqual(i, messageType.EnumTypes[i].Index); } TestDescriptorToProto(messageType.ToProto, messageType.Proto); }