£Á°èZ¨Ä…–K§‚«“ô4“ÒÙ´dîfUÙÃÅ WKbyÊ¦•êŽ…È®FÒ¿ÊÎóCozá¬S@6{Í:›œêZÌ:Š•_%:¢¾¾~;‘Ã~èŠ©ÊÇí`ÔÑ©úë™µ'5I¿fš×WO%ø9¾«¾DK|€ùÍD”Ýs]nHÕ¶ê×Ó¼ãžªéUWŸÈË%DÒÕ¬ï‘]/Åcx  ‰ï2ß]ä6G[]S£ÔÏ¯rs{úëóµmÒï#UQxo·õÞCe]"±/aÙ&Eã4ú9Jé_ÞåëdãöKë)AÞ                  ¯¹ægƒÛowÐø^d™ý½ßB7áyMä9ÜÖUã
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
<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re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