o
    ˷e2;                     @   s   d Z dZddlZddlmZ ddlmZ ddlmZ ddlmZ ddlm	Z	 dd	lm
Z
 dd
lmZ ddlmZ ddlmZ ddlmZ dZG dd dejZG dd dejZedkrbe  dS dS )zUnittest 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 Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/S )0GeneratorTestc                 C   s(   d}t j}| |jj|jj| j d S )Noptional_nested_message)r	   TestAllTypesassertEqualNestedMessage
DESCRIPTORfields_by_namemessage_type)self
field_name
proto_type r   ^/var/www/ideatree/venv/lib/python3.10/site-packages/google/protobuf/internal/generator_test.pytestNestedMessageDescriptor<   s   z)GeneratorTest.testNestedMessageDescriptorc                 C   s   |  dtj |  dtj |  dtj t }|  d|j |  dtjj |  d|j |  dtjj |  d|j |  dtjj d S )N                  )	r   r	   FOREIGN_FOOFOREIGN_BARFOREIGN_BAZr   FOOBARBAZr   protor   r   r   	testEnumsC   s   zGeneratorTest.testEnumsc                    s   t  }dd   fdd}| ||j | |jdk | ||j | |jdk  |  |j | ||j | |jdk | ||j | |jdk  |  |j | 	d|j
 d S )Nc                 S   s   | | kS Nr   valr   r   r   isnanX   s   z5GeneratorTest.testExtremeDefaultValues.<locals>.isnanc                    s    |  o
 | d S Nr   r   r*   r,   r   r   isinf[   s   z5GeneratorTest.testExtremeDefaultValues.<locals>.isinfr   z? ? ?? ?? ??? ??/ ??-)r	   TestExtremeDefaultValues
assertTrue
inf_doubleneg_inf_double
nan_double	inf_floatneg_inf_float	nan_floatr   cpp_trigraph)r   messager/   r   r.   r   testExtremeDefaultValuesS   s   z&GeneratorTest.testExtremeDefaultValuesc                    s>   t jj}ddddd t fdd|jD }|  | d S )NFT)optional_int32repeated_int32r   default_int32c                    s"   g | ]}|j  v r|j |jfqS r   )namehas_default_value).0fexpected_has_default_by_namer   r   
<listcomp>w   s
    

z6GeneratorTest.testHasDefaultValues.<locals>.<listcomp>)r	   r   r   dictfieldsr   )r   deschas_default_by_namer   rB   r   testHasDefaultValuesl   s   
z"GeneratorTest.testHasDefaultValuesc                 C   s.   |  tjjtjj |  tjjjtjj d S r)   )r   r	   optional_int32_extensioncontaining_typeTestAllExtensionsr   TestRequiredsingler   r   r   r   'testContainingTypeBehaviorForExtensions|   s   
z5GeneratorTest.testContainingTypeBehaviorForExtensionsc                 C   s*   |  tjjd  |  tjjjtjj d S r)   )r   r	   rJ   extension_scoperM   rN   r   rO   r   r   r   testExtensionScope   s   
z GeneratorTest.testExtensionScopec                 C   sB   |  tjj |  tjjj tjj}|jd }|  |j  d S )Na)r1   r	   rJ   is_extensionrM   rN   r   r   )r   message_descriptornon_extension_descriptorr   r   r   testIsExtension   s
   
zGeneratorTest.testIsExtensionc                 C   s   t  }| |j j d S r)   )r   TestMessageSetr1   r   
GetOptionsmessage_set_wire_formatr&   r   r   r   testOptions   s   zGeneratorTest.testOptionsc                 C   s*   t  }|jjd  }| |d u d S )NAnEnum)r   TestMessageWithCustomOptionsr   enum_types_by_namerY   r1   )r   r'   enum_optionsr   r   r   testMessageWithCustomOptions   s   z*GeneratorTest.testMessageWithCustomOptionsc                 C   s\   |  ttjjjttjjjtjjjtjjjg |  tj	jjg  |  tjjjjg  d S r)   )
r   setr	   r   r   nested_typesr   OptionalGroupRepeatedGroupTestEmptyMessagerO   r   r   r   testNestedTypes   s   zGeneratorTest.testNestedTypesc                 C   st   |  tjjjd u  |  tjjjd u  | tjjjjtjj | tjjjjtjj | tjjjjtjj d S r)   )	r1   r	   re   r   rK   r   r   r   rd   rO   r   r   r   testContainingType   s$   


z GeneratorTest.testContainingTypec                 C   s*   |  tjjd u  | tjjtjj d S r)   )r1   r	   _FOREIGNENUMrK   r   _TESTALLTYPES_NESTEDENUMr   r   rO   r   r   r   "testContainingTypeInEnumDescriptor   s   
z0GeneratorTest.testContainingTypeInEnumDescriptorc                 C   s|   |  tjjjjd tjjj}|  |jjd |  tjjjjd |  tj	jjd |  tj
jjd |  tjjjd d S )Nprotobuf_unittestprotobuf_unittest_import)r   r	   r   r   filepackager   r   ImportMessagerh   ri   _IMPORTENUM)r   rG   r   r   r   testPackage   s*   



zGeneratorTest.testPackagec                 C   sJ   |  tjjjg  |  tjjjdtfg |  tjjjdddtfg d S )Nr   )*   +   )i/  i  i   )r   r	   r   r   extension_rangesrL   MAX_EXTENSIONTestMultipleExtensionRangesrO   r   r   r   testExtensionRange   s   
z GeneratorTest.testExtensionRangec                 C   sr   |  tjjd |  tjjd | tjjd u  |  tjjtjg |  tjjt	jg |  tjj
t	jg d S )Ngoogle/protobuf/unittest.protork   )r   r	   r   r>   rn   assertFalseserialized_pbdependenciesr   r   public_dependenciesrO   r   r   r   testFileDescriptor   s   



z GeneratorTest.testFileDescriptorc                 C   sV   |  ttd |  ttd |  ttd ttdr)| ttjtj d S d S )NTestMessager#   test_extensionTestService)r1   hasattrr   ry   
issubclassr   r
   ServicerO   r   r   r   testNoGenericServices   s   


z#GeneratorTest.testNoGenericServicesc                 C   s6   t j}| t j|jt jj  | t jj|jv  d S r)   )r	   r   r   _TESTALLTYPESmessage_types_by_namer>   ry   _TESTALLTYPES_NESTEDMESSAGEr   	file_typer   r   r   testMessageTypesByName   s   z$GeneratorTest.testMessageTypesByNamec                 C   "   t j}| t j|jt jj  d S r)   )r	   r   r   rh   r^   r>   r   r   r   r   testEnumTypesByName   
   z!GeneratorTest.testEnumTypesByNamec                 C   r   r)   )r	   r   r   my_extension_stringextensions_by_namer>   r   r   r   r   testExtensionsByName   r   z"GeneratorTest.testExtensionsByNamec                 C   sD   t  }| d|jj t }| d|j | tjtju  d S r-   )	r	   r   r   optional_public_import_messageer   PublicImportMessager1   r   )r   all_type_protopublic_import_protor   r   r   testPublicImports  s   
zGeneratorTest.testPublicImportsc                 C   s\   t  }| |jt j d | |jt j d | |jt j d | |jt j d d S )Nfoobarbazqux)r   TestBadIdentifiersr   
Extensionsr9   
descriptor
reflectionr
   )r   r9   r   r   r   testBadIdentifiers  s   z GeneratorTest.testBadIdentifiersc                 C   s   t jj}| dt|j | d|jd j | d|jd j | ||jd j	 | |jd |j
d  tg d}| |tdd |jd jD  |j D ]\}}||v rf| |jd |j qS| |j qSd S )Nr   oneof_fieldr   )oneof_uint32oneof_nested_messageoneof_stringoneof_bytesc                 S   s   g | ]}|j qS r   )r>   )r@   fieldr   r   r   rD   )  s    z+GeneratorTest.testOneof.<locals>.<listcomp>)r	   r   r   r   lenoneofsr>   indexassertIsrK   oneofs_by_namera   rF   r   itemscontaining_oneofassertIsNone)r   rG   nested_namesr   
field_descr   r   r   	testOneof  s    zGeneratorTest.testOneofc                 C   s\   |  dtjtj |  dtjtj |  dtjtj |  dtjtj d S )NFOO1BAR1)r   r	   TestEnumWithDupValueNamer   FOO2r   BAR2rO   r   r   r   testEnumWithDupValue0  s   z"GeneratorTest.testEnumWithDupValueN)__name__
__module____qualname__r   r(   r:   rI   rP   rR   rW   r[   r`   rf   rg   rj   rq   rw   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   :   s0    
r   c                   @   s(   e Zd ZdZdd Zdd Zdd ZdS )	SymbolDatabaseRegistrationTestz?Checks that messages, enums and files are correctly registered.c                 C   s   |  tjt d |  tjjt d | t t d W d    n1 s0w   Y  |  tjj	t d |  tjj
t d d S )Nzprotobuf_unittest.TestAllTypesz,protobuf_unittest.TestAllTypes.NestedMessagezprotobuf_unittest.NestedMessagez,protobuf_unittest.TestAllTypes.OptionalGroupz,protobuf_unittest.TestAllTypes.RepeatedGroup)r   r	   r   r   Default	GetSymbolr   assertRaisesKeyErrorrc   rd   rO   r   r   r   testGetSymbol>  s4   z,SymbolDatabaseRegistrationTest.testGetSymbolc                 C   s8   |  dt jdj |  dt jdj d S )Nzprotobuf_unittest.ForeignEnumz)protobuf_unittest.TestAllTypes.NestedEnum)r   r   r   poolFindEnumTypeByName	full_namerO   r   r   r   r(   Q  s   

z(SymbolDatabaseRegistrationTest.testEnumsc                 C   s   |  dt jdj d S )Nrx   )r   r   r   r   FindFileByNamer>   rO   r   r   r   testFindFileByName[  s   
z1SymbolDatabaseRegistrationTest.testFindFileByNameN)r   r   r   __doc__r   r(   r   r   r   r   r   r   ;  s
    
r   __main__)r   
__author__unittestgoogle.protobuf.internalr   google.protobufr   r   r   r   r   r   r	   r
   r   ru   TestCaser   r   r   mainr   r   r   r   <module>   s*   "  &