3
SÉLjž9 ã @ sæ d Z dZyddlZW n ek
r0 ddlZY nX ddlmZ ddlmZ ddlm Z ddlm
Z
ddlmZ dd lmZ dd
lm
Z
ddlmZ ddlmZ dd
lmZ dZG dd„ dejƒZG dd„ dejƒZedkrâejƒ dS )zàUnittest that directly tests the output of the pure-Python protocol
compiler. See //google/protobuf/internal/reflection_test.py for a test which
further ensures that we can use Python protocol message objects as we expect.
z#robinson@google.com (Will Robinson)é N)Útest_bad_identifiers_pb2)Úunittest_custom_options_pb2)Úunittest_import_pb2)Úunittest_import_public_pb2)Úunittest_mset_pb2)Úunittest_mset_wire_format_pb2)Ú unittest_no_generic_services_pb2)Úunittest_pb2)Úservice)Úsymbol_databasei c @ s¼ e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd d
„ Zdd„ Zd
d„ Z dd„ Z
dd„ Zdd„ Zdd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-S ).Ú
GeneratorTestc C s( d}t j}| j|jj|jj| jƒ d S )NÚoptional_nested_message)r ÚTestAllTypesÚassertEqualÚ
NestedMessageÚ
DESCRIPTORÚfields_by_nameZmessage_type)ÚselfÚ
field_nameZ
proto_type© r ú$/usr/lib/python3.6/generator_test.pyÚtestNestedMessageDescriptor@ s
z)GeneratorTest.testNestedMessageDescriptorc C s� | j dtjƒ | j dtjƒ | j dtjƒ tjƒ }| j d|jƒ | j dtjjƒ | j d|jƒ | j dtjjƒ | j d|jƒ | j dtjjƒ d S )Né é é é é é ) r r ZFOREIGN_FOOZFOREIGN_BARZFOREIGN_BAZr ÚFOOZBARZBAZ)r Úprotor r r Ú testEnumsG s zGeneratorTest.testEnumsc sÎ t jƒ }dd„ ‰ ‡ fdd„}| j||jƒƒ | j|jdkƒ | j||jƒƒ | j|jdk ƒ | jˆ |jƒƒ | j||jƒƒ | j|jdkƒ | j||jƒƒ | j|jdk ƒ | jˆ |jƒƒ | j d|j
ƒ d S )Nc S s | | kS )Nr )Úvalr r r Úisnan\ s z5GeneratorTest.testExtremeDefaultValues..isnanc s ˆ | ƒ oˆ | d ƒS )Nr r )r! )r" r r Úisinf_ s z5GeneratorTest.testExtremeDefaultValues..isinfr z? ? ?? ?? ??? ??/ ??-)r ZTestExtremeDefaultValuesÚ
assertTrueZ
inf_doubleZneg_inf_doubleZ
nan_doubleZ inf_floatZ
neg_inf_floatZ nan_floatr Zcpp_trigraph)r Úmessager# r )r" r ÚtestExtremeDefaultValuesW s z&GeneratorTest.testExtremeDefaultValuesc s> t jj}dddddœ‰ t‡ fdd„|jD ƒƒ}| jˆ |ƒ d S )NFT)Zoptional_int32Zrepeated_int32r
Z
default_int32c s" g | ]}|j ˆ kr|j |jf‘qS r )ÚnameZhas_default_value)Ú.0Úf)Úexpected_has_default_by_namer r ú
{ s z6GeneratorTest.testHasDefaultValues..)r r r ÚdictÚfieldsr )r ÚdescZhas_default_by_namer )r* r ÚtestHasDefaultValuesp s
z"GeneratorTest.testHasDefaultValuesc C s. | j tjjtjjƒ | j tjjjtjjƒ d S )N)r r Úoptional_int32_extensionÚcontaining_typeÚTestAllExtensionsr ÚTestRequiredÚsingle)r r r r Ú'testContainingTypeBehaviorForExtensions€ s
z5GeneratorTest.testContainingTypeBehaviorForExtensionsc C s* | j tjjd ƒ | j tjjjtjjƒ d S )N)r r r0 Zextension_scoper3 r4 r )r r r r ÚtestExtensionScope† s
z GeneratorTest.testExtensionScopec C sB | j tjjƒ | j tjjjƒ tjj}|jd }| j |j ƒ d S )NÚa)r$ r r0 Zis_extensionr3 r4 r r )r Zmessage_descriptorZnon_extension_descriptorr r r ÚtestIsExtensionŒ s
zGeneratorTest.testIsExtensionc C s t jƒ }| j|jjƒ jƒ d S )N)r ZTestMessageSetr$ r Ú
GetOptionsZmessage_set_wire_format)r r r r r ÚtestOptions” s zGeneratorTest.testOptionsc C s* t jƒ }|jjd jƒ }| j|d k ƒ d S )NZAnEnum)r ZTestMessageWithCustomOptionsr Úenum_types_by_namer9 r$ )r r Zenum_optionsr r r ÚtestMessageWithCustomOptions˜ s z*GeneratorTest.testMessageWithCustomOptionsc C s\ | j ttjjjƒttjjjtjjjtjjjgƒƒ | j tj jjg ƒ | j tjjjjg ƒ d S )N)
r Úsetr r r Znested_typesr Ú
OptionalGroupÚ
RepeatedGroupÚTestEmptyMessage)r r r r ÚtestNestedTypesŸ s zGeneratorTest.testNestedTypesc C st | j tjjjd kƒ | j tjjjd kƒ | jtjjjjtjjƒ | jtjjjjtjjƒ | jtjjjjtjjƒ d S )N) r$ r r@ r r1 r r r r? )r r r r ÚtestContainingType« s
z GeneratorTest.testContainingTypec C s* | j tjjd kƒ | jtjjtjjƒ d S )N)r$ r Ú_FOREIGNENUMr1 r Ú_TESTALLTYPES_NESTEDENUMr r )r r r r Ú"testContainingTypeInEnumDescriptorº s
z0GeneratorTest.testContainingTypeInEnumDescriptorc C s| | j tjjjjdƒ tjjj}| j |jjdƒ | j tjjjjdƒ | j tj jjdƒ | j tj
jjdƒ | j tjjjdƒ d S )NÚprotobuf_unittestZprotobuf_unittest_import)r r r r ÚfileÚpackager r Z
ImportMessagerC rD Z_IMPORTENUM)r r. r r r ÚtestPackage¿ s
zGeneratorTest.testPackagec C sJ | j tjjjg ƒ | j tjjjdtfgƒ | j tjjjdddtfgƒ d S ) Nr é* é+ é/ é” i )rJ rK )rL rM )r r r r Zextension_rangesr2 Ú
MAX_EXTENSIONZTestMultipleExtensionRanges)r r r r ÚtestExtensionRangeÒ s z GeneratorTest.testExtensionRangec C sr | j tjjdƒ | j tjjdƒ | jtjjd kƒ | j tjjtjgƒ | j tjjt jgƒ | j tjj
t jgƒ d S )Nzgoogle/protobuf/unittest.protorF )r r r r' rH ÚassertFalseZ
serialized_pbZdependenciesr r Zpublic_dependencies)r r r r ÚtestFileDescriptorÜ s
z GeneratorTest.testFileDescriptorc C sR | j ttdƒƒ | j ttdƒƒ | j ttdƒƒ ttdƒrN| jttjtjƒƒ d S )NZTestMessager Ztest_extensionÚTestService)r$ Úhasattrr rP Ú
issubclassrR r
ZService)r r r r ÚtestNoGenericServicesç s
z#GeneratorTest.testNoGenericServicesc C s6 t j}| jt j|jt jj ƒ | jt jj|jkƒ d S )N)r r r Z
_TESTALLTYPESZmessage_types_by_namer' rP Z_TESTALLTYPES_NESTEDMESSAGE)r Ú file_typer r r ÚtestMessageTypesByNameò s z$GeneratorTest.testMessageTypesByNamec C s" t j}| jt j|jt jj ƒ d S )N)r r r rC r; r' )r rV r r r ÚtestEnumTypesByNameþ s z!GeneratorTest.testEnumTypesByNamec C s" t j}| jt j|jt jj ƒ d S )N)r r r Zmy_extension_stringZextensions_by_namer' )r rV r r r ÚtestExtensionsByName s z"GeneratorTest.testExtensionsByNamec C sD t jƒ }| jd|jjƒ tjƒ }| jd|jƒ | jtjtjkƒ d S )Nr ) r r r Zoptional_public_import_messageÚer ZPublicImportMessager$ r )r Zall_type_protoZpublic_import_protor r r ÚtestPublicImports
s zGeneratorTest.testPublicImportsc C s\ t jƒ }| j|jt j dƒ | j|jt j dƒ | j|jt j dƒ | j|jt j dƒ d S )NZfooZbarZbazZqux)r ZTestBadIdentifiersr Z
Extensionsr% Z
descriptorZ
reflectionr
)r r% r r r ÚtestBadIdentifiers s z GeneratorTest.testBadIdentifiersc C sæ t jj}| jdt|jƒƒ | jd|jd jƒ | jd|jd jƒ | j||jd j ƒ | j|jd |j
d ƒ tddddgƒ}| j|tdd „ |jd jD ƒƒƒ x@|j
jƒ D ]2\}}||krÒ| j|jd |jƒ q¬| j|jƒ q¬W d S )
Nr Zoneof_fieldr Zoneof_uint32Zoneof_nested_messageZoneof_stringZoneof_bytesc S s g | ]
}|j ‘qS r )r' )r( Zfieldr r r r+ - s z+GeneratorTest.testOneof..)r r r r ÚlenZoneofsr' ÚindexZassertIsr1 Zoneofs_by_namer= r- r ÚitemsZcontaining_oneofZassertIsNone)r r. Znested_namesr Z
field_descr r r Ú testOneof" s
zGeneratorTest.testOneofN)Ú__name__Ú
__module__Ú__qualname__r r r&