@ -71,7 +71,6 @@ namespace Google.Protobuf.Reflection
private void TestFileDescriptor ( FileDescriptor file , FileDescriptor importedFile , FileDescriptor importedPublicFile )
{
Assert . AreEqual ( "unittest_proto3.proto" , file . Name ) ;
Assert . AreEqual ( "protobuf_unittest3" , file . Package ) ;
@ -214,29 +213,61 @@ namespace Google.Protobuf.Reflection
}
[Test]
public void FieldDescriptor ( )
public void FieldDescriptor_GeneratedCode ( )
{
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" ) ;
TestFieldDescriptor ( UnittestProto3Reflection . Descriptor , TestAllTypes . Descriptor , ForeignMessage . Descriptor , ImportMessage . Descriptor ) ;
}
[Test]
public void FieldDescriptor_BuildFromByteStrings ( )
{
// The descriptors have to be supplied in an order such that all the
// dependencies come before the descriptors depending on them.
var descriptorData = new List < ByteString >
{
UnittestImportPublicProto3Reflection . Descriptor . Proto . ToByteString ( ) ,
UnittestImportProto3Reflection . Descriptor . Proto . ToByteString ( ) ,
UnittestProto3Reflection . Descriptor . Proto . ToByteString ( )
} ;
var converted = FileDescriptor . BuildFromByteStrings ( descriptorData ) ;
TestFieldDescriptor (
converted [ 2 ] ,
converted [ 2 ] . FindTypeByName < MessageDescriptor > ( "TestAllTypes" ) ,
converted [ 2 ] . FindTypeByName < MessageDescriptor > ( "ForeignMessage" ) ,
converted [ 1 ] . FindTypeByName < MessageDescriptor > ( "ImportMessage" ) ) ;
}
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 ( messageType , primitiveField . ContainingType ) ;
Assert . AreEqual ( UnittestProto3Reflection . Descriptor , primitiveField . File ) ;
Assert . AreEqual ( testAllTypesDescriptor , 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 ( messageType . EnumTypes [ 0 ] , enumField . EnumType ) ;
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_foreign_message" , messageField . Name ) ;
Assert . AreEqual ( FieldType . Message , messageField . FieldType ) ;
Assert . AreEqual ( ForeignMessage . Descriptor , messageField . MessageType ) ;
Assert . AreEqual ( "single_import _message" , i mportM essageField. Name ) ;
Assert . AreEqual ( FieldType . Message , i mportM essageField. FieldType ) ;
Assert . AreEqual ( importMessage Descriptor, i mportM essageField. MessageType ) ;
}
[Test]