<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
3
h9                 @   s   d Z dZyddlZW n ek
r0   ddlZY nX 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rej  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-S ).GeneratorTestc             C   s(   d}t j}| j|jj|jj| j d S )Noptional_nested_message)r	   TestAllTypesassertEqualNestedMessage
DESCRIPTORfields_by_nameZmessage_type)self
field_nameZ
proto_type r   $/usr/lib/python3.6/generator_test.pytestNestedMessageDescriptor@   s
    z)GeneratorTest.testNestedMessageDescriptorc             C   s   | j dtj | j dtj | j dtj tj }| j d|j | j dtjj | j d|j | j dtjj | j d|j | j dtjj d S )N                  )	r   r	   ZFOREIGN_FOOZFOREIGN_BARZFOREIGN_BAZr   FOOZBARZBAZ)r   protor   r   r   	testEnumsG   s    zGeneratorTest.testEnumsc                s   t j }dd   fdd}| j||j | j|jdk | j||j | j|jdk  | j |j | j||j | j|jdk | j||j | j|jdk  | j |j | j	d|j
 d S )Nc             S   s   | | kS )Nr   )valr   r   r   isnan\   s    z5GeneratorTest.testExtremeDefaultValues.<locals>.isnanc                s    |  o | d S )Nr   r   )r!   )r"   r   r   isinf_   s    z5GeneratorTest.testExtremeDefaultValues.<locals>.isinfr   z? ? ?? ?? ??? ??/ ??-)r	   ZTestExtremeDefaultValues
assertTrueZ
inf_doubleZneg_inf_doubleZ
nan_doubleZ	inf_floatZneg_inf_floatZ	nan_floatr   Zcpp_trigraph)r   messager#   r   )r"   r   testExtremeDefaultValuesW   s    z&GeneratorTest.testExtremeDefaultValuesc                s>   t jj}ddddd t fdd|jD }| j | d S )NFT)Zoptional_int32Zrepeated_int32r   Zdefault_int32c                s"   g | ]}|j  kr|j |jfqS r   )nameZhas_default_value).0f)expected_has_default_by_namer   r   
<listcomp>{   s   z6GeneratorTest.testHasDefaultValues.<locals>.<listcomp>)r	   r   r   dictfieldsr   )r   descZhas_default_by_namer   )r*   r   testHasDefaultValuesp   s    
z"GeneratorTest.testHasDefaultValuesc             C   s.   | j tjjtjj | j tjjjtjj d S )N)r   r	   optional_int32_extensioncontaining_typeTestAllExtensionsr   TestRequiredsingle)r   r   r   r   'testContainingTypeBehaviorForExtensions   s    

z5GeneratorTest.testContainingTypeBehaviorForExtensionsc             C   s*   | j tjjd  | j tjjjtjj d S )N)r   r	   r0   Zextension_scoper3   r4   r   )r   r   r   r   testExtensionScope   s    
z GeneratorTest.testExtensionScopec             C   sB   | j tjj | j tjjj tjj}|jd }| j |j  d S )Na)r$   r	   r0   Zis_extensionr3   r4   r   r   )r   Zmessage_descriptorZnon_extension_descriptorr   r   r   testIsExtension   s
    
zGeneratorTest.testIsExtensionc             C   s   t j }| j|jj j d S )N)r   ZTestMessageSetr$   r   
GetOptionsZmessage_set_wire_format)r   r   r   r   r   testOptions   s    zGeneratorTest.testOptionsc             C   s*   t j }|jjd j }| j|d k	 d S )NZAnEnum)r   ZTestMessageWithCustomOptionsr   enum_types_by_namer9   r$   )r   r   Zenum_optionsr   r   r   testMessageWithCustomOptions   s    z*GeneratorTest.testMessageWithCustomOptionsc             C   s\   | j ttjjjttjjjtjjjtjjjg | j tj	jjg  | j tjjjjg  d S )N)
r   setr	   r   r   Znested_typesr   OptionalGroupRepeatedGroupTestEmptyMessage)r   r   r   r   testNestedTypes   s    zGeneratorTest.testNestedTypesc             C   st   | j tjjjd k | j tjjjd k | jtjjjjtjj | jtjjjjtjj | jtjjjjtjj d S )N)	r$   r	   r@   r   r1   r   r   r   r?   )r   r   r   r   testContainingType   s    




z GeneratorTest.testContainingTypec             C   s*   | j tjjd k | jtjjtjj d S )N)r$   r	   _FOREIGNENUMr1   r   _TESTALLTYPES_NESTEDENUMr   r   )r   r   r   r   "testContainingTypeInEnumDescriptor   s    
z0GeneratorTest.testContainingTypeInEnumDescriptorc             C   s|   | j tjjjjd tjjj}| j |jjd | j tjjjjd | j tj	jjd | j tj
jjd | j tjjjd d S )Nprotobuf_unittestZprotobuf_unittest_import)r   r	   r   r   filepackager   r   ZImportMessagerC   rD   Z_IMPORTENUM)r   r.   r   r   r   testPackage   s     


zGeneratorTest.testPackagec             C   sJ   | j tjjjg  | j tjjjdtfg | j tjjjdddtfg d S )	Nr   *   +   /    i   )rJ   rK   )rL   rM   )r   r	   r   r   Zextension_rangesr2   MAX_EXTENSIONZTestMultipleExtensionRanges)r   r   r   r   testExtensionRange   s    z GeneratorTest.testExtensionRangec             C   sr   | j tjjd | j tjjd | jtjjd k | j tjjtjg | j tjjt	jg | j tjj
t	jg d S )Nzgoogle/protobuf/unittest.protorF   )r   r	   r   r'   rH   assertFalseZserialized_pbZdependenciesr   r   Zpublic_dependencies)r   r   r   r   testFileDescriptor   s    





z GeneratorTest.testFileDescriptorc             C   sR   | j ttd | j ttd | j ttd ttdrN| jttjtj d S )NZTestMessager   Ztest_extensionTestService)r$   hasattrr   rP   
issubclassrR   r
   ZService)r   r   r   r   testNoGenericServices   s    

z#GeneratorTest.testNoGenericServicesc             C   s6   t j}| jt j|jt jj  | jt jj|jk d S )N)r	   r   r   Z_TESTALLTYPESZmessage_types_by_namer'   rP   Z_TESTALLTYPES_NESTEDMESSAGE)r   	file_typer   r   r   testMessageTypesByName   s    z$GeneratorTest.testMessageTypesByNamec             C   s"   t j}| jt j|jt jj  d S )N)r	   r   r   rC   r;   r'   )r   rV   r   r   r   testEnumTypesByName   s    z!GeneratorTest.testEnumTypesByNamec             C   s"   t j}| jt j|jt jj  d S )N)r	   r   r   Zmy_extension_stringZextensions_by_namer'   )r   rV   r   r   r   testExtensionsByName  s    z"GeneratorTest.testExtensionsByNamec             C   sD   t j }| jd|jj tj }| jd|j | jtjtjk d S )Nr   )	r	   r   r   Zoptional_public_import_messageer   ZPublicImportMessager$   r   )r   Zall_type_protoZpublic_import_protor   r   r   testPublicImports
  s    zGeneratorTest.testPublicImportsc             C   s\   t j }| j|jt j d | j|jt j d | j|jt j d | j|jt j d d S )NZfooZbarZbazZqux)r   ZTestBadIdentifiersr   Z
Extensionsr%   Z
descriptorZ
reflectionr
   )r   r%   r   r   r   testBadIdentifiers  s    z GeneratorTest.testBadIdentifiersc             C   s   t jj}| jdt|j | jd|jd j | jd|jd j | j||jd j	 | j|jd |j
d  tddddg}| j|tdd	 |jd jD  xDt|jj D ]2\}}||kr| j|jd |j q| j|j qW d S )
Nr   Zoneof_fieldr   Zoneof_uint32Zoneof_nested_messageZoneof_stringZoneof_bytesc             S   s   g | ]
}|j qS r   )r'   )r(   Zfieldr   r   r   r+   -  s    z+GeneratorTest.testOneof.<locals>.<listcomp>)r	   r   r   r   lenZoneofsr'   indexZassertIsr1   Zoneofs_by_namer=   r-   listr   itemsZcontaining_oneofZassertIsNone)r   r.   Znested_namesr   Z
field_descr   r   r   	testOneof"  s    
zGeneratorTest.testOneofN)__name__
__module____qualname__r   r    r&   r/   r5   r6   r8   r:   r<   rA   rB   rE   rI   rO   rQ   rU   rW   rX   rY   r[   r\   ra   r   r   r   r   r   >   s,   
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   | j tjtj jd | j tjjtj jd | jt tj jd W d Q R X | j tjj	tj jd | j tjj
tj j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   DefaultZ	GetSymbolr   ZassertRaisesKeyErrorr>   r?   )r   r   r   r   testGetSymbol8  s"    z,SymbolDatabaseRegistrationTest.testGetSymbolc             C   s8   | j dtj jjdj | j dtj jjdj d S )Nzprotobuf_unittest.ForeignEnumz)protobuf_unittest.TestAllTypes.NestedEnum)r   r   rf   poolZFindEnumTypeByNameZ	full_name)r   r   r   r   r    K  s    


z(SymbolDatabaseRegistrationTest.testEnumsc             C   s   | j dtj jjdj d S )Nzgoogle/protobuf/unittest.proto)r   r   rf   ri   ZFindFileByNamer'   )r   r   r   r   testFindFileByNameU  s    
z1SymbolDatabaseRegistrationTest.testFindFileByNameN)rb   rc   rd   __doc__rh   r    rj   r   r   r   r   re   5  s   
re   __main__)rk   
__author__Z	unittest2ZunittestImportErrorZgoogle.protobuf.internalr   Zgoogle.protobufr   r   r   r   r   r   r	   r
   r   rN   ZTestCaser   re   rb   mainr   r   r   r   <module>'   s*    x&