<!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
†Üäh6  ã               @   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 ejZdd„ ZG dd„ deƒZG dd„ deƒZG dd„ deƒZedkrøejƒ  dS )zJTest for preservation of unknown fields in the pure Python implementation.z!bohdank@google.com (Bohdan Koval)é    N)Úunittest_mset_pb2)Úunittest_pb2)Úunittest_proto3_arena_pb2)Úapi_implementation)Úencoder)Úmessage_set_extensions_pb2)Úmissing_enum_values_pb2)Ú	test_util)Útesting_refleaks)Útype_checkersc             C   s$   t jtjƒ dkotjƒ dkdƒ| ƒS )NZcppé   z7Addtional test for pure python involved protect members)ÚunittestZskipIfr   ZTypeZVersion)Úfunc© r   ú)/usr/lib/python3.6/unknown_fields_test.pyÚ(SkipCheckUnknownFieldIfCppImplementation;   s    r   c               @   sT   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S )ÚUnknownFieldsTestc             C   sH   t jj| _t jƒ | _tj| jƒ | jjƒ | _t j	ƒ | _
| j
j| jƒ d S )N)r   ÚTestAllTypesÚ
DESCRIPTORÚ
descriptorÚ
all_fieldsr	   ÚSetAllFieldsÚSerializeToStringÚall_fields_dataÚTestEmptyMessageÚempty_messageÚParseFromString)Úselfr   r   r   ÚsetUpC   s    


zUnknownFieldsTest.setUpc             C   s   | j jƒ }| j|| jkƒ d S )N)r   r   Z
assertTruer   )r   Údatar   r   r   ÚtestSerializeK   s    
zUnknownFieldsTest.testSerializec             C   sD   t jƒ }|j| jƒ |r,| j| j|jƒ ƒ n| jdt|jƒ ƒƒ d S )Nr   )r   r   r   r   ÚassertEqualr   Úlen)r   ZpreserveÚmessager   r   r   ÚexpectSerializeProto3R   s
    z'UnknownFieldsTest.expectSerializeProto3c             C   s8   t jƒ }| j|ƒ t j| ƒ | j| ƒ t j|ƒ d S )N)r   Z&GetPythonProto3PreserveUnknownsDefaultr$   Z&SetPythonProto3PreserveUnknownsDefault)r   Zdefault_preserver   r   r   ÚtestSerializeProto3Z   s    
z%UnknownFieldsTest.testSerializeProto3c             C   s   | j | jjƒ | jjƒ ƒ d S )N)r!   r   ZByteSizer   )r   r   r   r   ÚtestByteSized   s    zUnknownFieldsTest.testByteSizec             C   s   | j dt| jjƒ ƒƒ d S )Nr   )r!   r"   r   Z
ListFields)r   r   r   r   ÚtestListFieldsg   s    z UnknownFieldsTest.testListFieldsc             C   st   t jƒ }|jjƒ }d|_tjƒ }d|_|jƒ |_	|jƒ }tj
ƒ }|j|ƒ |jƒ }t jƒ }|j|ƒ | j||ƒ d S )Ni«¿Ýi90  )r   ZRawMessageSetÚitemÚaddZtype_idr   ZTestMessageSetExtension1Úir   r#   ZTestMessageSetZMergeFromStringr!   )r   Úrawr(   Zmessage1Ú
serializedÚprotoZreserializedZnew_rawr   r   r   Ú1testSerializeMessageSetWireFormatUnknownExtensionk   s    



zCUnknownFieldsTest.testSerializeMessageSetWireFormatUnknownExtensionc             C   sP   t jƒ }|j| jƒ | j| j|ƒ | jjdƒ |j| jjƒ ƒ | j	| j|ƒ d S )NÚoptional_string)
r   r   r   r   r!   r   r   Ú
ClearFieldr   ÚassertNotEqual)r   r#   r   r   r   Ú
testEqualsƒ   s    zUnknownFieldsTest.testEqualsc             C   s²   | j jƒ  | jd| j jƒ ƒ tjƒ }tjƒ }d|_|jj|jƒ ƒ |j	j
ƒ j|jƒ ƒ | jd|jjƒ ƒ | jd|j	d jƒ ƒ |jƒ  | jd|jjƒ ƒ | jd|j	d jƒ ƒ d S )Nó    Údiscardr   )r   ZDiscardUnknownFieldsr!   r   r   r   r/   Zoptional_nested_messager   Zrepeated_nested_messager)   r1   )r   r#   Zother_messager   r   r   ÚtestDiscardUnknownFieldsŒ   s"    



z*UnknownFieldsTest.testDiscardUnknownFieldsN)Ú__name__Ú
__module__Ú__qualname__r   r    r$   r%   r&   r'   r.   r2   r5   r   r   r   r   r   A   s   
	r   c               @   sH   e Zd Zdd„ Zdd„ Zedd„ ƒZdd„ Zd	d
„ Zdd„ Z	dd„ Z
dS )ÚUnknownFieldsAccessorsTestc             C   sH   t jj| _t jƒ | _tj| jƒ | jjƒ | _t j	ƒ | _
| j
j| jƒ d S )N)r   r   r   r   r   r	   r   r   r   r   r   r   )r   r   r   r   r   £   s    


z UnknownFieldsAccessorsTest.setUpc       
      C   s‚   | j j| }tj|j }tj|j|ƒ}i }xB| jj	D ]6\}}||kr4t
jj| d }	|	|dt|ƒ| j|ƒ q4W | j||| ƒ d S )Nr   )r   Úfields_by_namer   ÚFIELD_TYPE_TO_WIRE_TYPEÚtyper   ÚTagBytesÚnumberr   Ú_unknown_fieldsr   r   Ú_decoders_by_tagr"   r   r!   )
r   ÚnameÚexpected_valueÚfield_descriptorÚ	wire_typeÚ	field_tagÚresult_dictÚ	tag_bytesÚvalueÚdecoderr   r   r   ÚCheckUnknownField±   s    z,UnknownFieldsAccessorsTest.CheckUnknownFieldc             C   st   | j d| jjƒ | j d| jjƒ | j d| jjƒ | j d| jjƒ | j d| jjƒ | j d| jjƒ | j d| jjƒ d S )NÚoptional_nested_enumÚrepeated_nested_enumÚoptional_int32Úoptional_fixed32Úoptional_fixed64r/   Úoptionalgroup)	rJ   r   rK   rL   rM   rN   rO   r/   rP   )r   r   r   r   ÚtestCheckUnknownFieldValue¼   s    





z5UnknownFieldsAccessorsTest.testCheckUnknownFieldValuec             C   s*   t jƒ }|j| jƒ | j|jƒ | jƒ d S )N)r   r   ZCopyFromr   r!   r   r   )r   r#   r   r   r   ÚtestCopyFromØ   s    z'UnknownFieldsAccessorsTest.testCopyFromc             C   sœ   t jƒ }d|_d|_t jƒ }|j|jƒ ƒ |jdƒ d|_d|_t jƒ }|j|jƒ ƒ |j	|ƒ |j|jƒ ƒ | j
|jdƒ | j
|jdƒ | j
|jdƒ d S )Né   r   rM   é   é   )r   r   rM   Zoptional_uint32r   r   r   r0   Zoptional_int64Z	MergeFromr!   )r   r#   ÚsourceZdestinationr   r   r   ÚtestMergeFromÝ   s    

z(UnknownFieldsAccessorsTest.testMergeFromc             C   s    | j jƒ  | j| j jƒ dƒ d S )Nr3   )r   ZClearr!   r   )r   r   r   r   Ú	testClearò   s    
z$UnknownFieldsAccessorsTest.testClearc             C   s*   t jƒ }|j| jƒ | j|jƒ | jƒ d S )N)r   ZTestEmptyMessageWithExtensionsr   r   r!   r   )r   r#   r   r   r   ÚtestUnknownExtensions÷   s    z0UnknownFieldsAccessorsTest.testUnknownExtensionsN)r6   r7   r8   r   rJ   r   rQ   rR   rW   rX   rY   r   r   r   r   r9   ¡   s   r9   c               @   sP   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Ze	dd„ ƒZ
dd„ ZdS )ÚUnknownEnumValuesTestc             C   s|   t jj| _t jƒ | _t jj| j_| jjjt jjt jj	gƒ | jj
jt jjt jj	gƒ | jjƒ | _t jƒ | _| jj| jƒ d S )N)r   ÚTestEnumValuesr   r   r#   ZZEROrK   rL   ÚextendZONEÚpacked_nested_enumr   Zmessage_dataZTestMissingEnumValuesÚmissing_messager   )r   r   r   r   r   ÿ   s    


zUnknownEnumValuesTest.setUpc       
      C   s‚   | j j| }tj|j }tj|j|ƒ}i }xB| jj	D ]6\}}||kr4t
jj| d }	|	|dt|ƒ| j|ƒ q4W | j||| ƒ d S )Nr   )r   r:   r   r;   r<   r   r=   r>   r^   r?   r   r[   r@   r"   r#   r!   )
r   rA   rB   rC   rD   rE   rF   rG   rH   rI   r   r   r   rJ     s    
z'UnknownEnumValuesTest.CheckUnknownFieldc             C   s6   t jƒ }d|_t jƒ }|j|jƒ ƒ | j|jdƒ d S )NZblahr   )r   Z
JustStringZdummyr[   r   r   r!   rK   )r   Zjust_stringZmissingr   r   r   Ú!testUnknownParseMismatchEnumValue$  s
    z7UnknownEnumValuesTest.testUnknownParseMismatchEnumValuec             C   sN   | j | jjdƒƒ | j| jjdƒ | jjƒ }| jjdƒ | j| jjƒ |ƒ d S )NrK   r   )ZassertFalser^   ZHasFieldr!   rK   r   r0   )r   r,   r   r   r   ÚtestUnknownEnumValue1  s
    
z*UnknownEnumValuesTest.testUnknownEnumValuec             C   s   | j g | jjƒ d S )N)r!   r^   rL   )r   r   r   r   ÚtestUnknownRepeatedEnumValue9  s    z2UnknownEnumValuesTest.testUnknownRepeatedEnumValuec             C   s   | j g | jjƒ d S )N)r!   r^   r]   )r   r   r   r   ÚtestUnknownPackedEnumValue<  s    z0UnknownEnumValuesTest.testUnknownPackedEnumValuec             C   s4   | j d| jjƒ | j d| jjƒ | j d| jjƒ d S )NrK   rL   r]   )rJ   r#   rK   rL   r]   )r   r   r   r   Ú!testCheckUnknownFieldValueForEnum?  s    

z7UnknownEnumValuesTest.testCheckUnknownFieldValueForEnumc             C   s*   t jƒ }|j| jjƒ ƒ | j| j|ƒ d S )N)r   r[   r   r^   r   r!   r#   )r   Znew_messager   r   r   ÚtestRoundTripH  s    z#UnknownEnumValuesTest.testRoundTripN)r6   r7   r8   r   rJ   r_   r`   ra   rb   r   rc   rd   r   r   r   r   rZ   ý   s   	rZ   Ú__main__)Ú__doc__Ú
__author__Z	unittest2r   ÚImportErrorZgoogle.protobufr   r   r   Zgoogle.protobuf.internalr   r   r   r   r	   r
   r   ZBaseTestCaser   r   r9   rZ   r6   Úmainr   r   r   r   Ú<module>!   s,   `\Q