3 SÉLj6 ã @ sü d Z dZyddlZW n ek r0 ddlZY nX ddlmZ ddlmZ ddlmZ ddl m Z ddl mZ dd l mZ dd l m Z ddl mZ ddl mZ dd l mZ ejZdd„ ZG dd„ deƒZG dd„ deƒZG dd„ deƒZedkrøejƒ dS )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 jtjƒ dkotjƒ dkdƒ| ƒS )NZcppé z7Addtional test for pure python involved protect members)ÚunittestZskipIfr ZTypeZVersion)Úfunc© r ú)/usr/lib/python3.6/unknown_fields_test.pyÚ(SkipCheckUnknownFieldIfCppImplementation; s r c @ sT e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd d „ Zdd„ Zd d„ Z dd„ Z dd„ ZdS )ÚUnknownFieldsTestc C sH t jj| _t jƒ | _tj| jƒ | jjƒ | _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 zUnknownFieldsTest.setUpc C s | j jƒ }| j|| jkƒ d S )N)r r Z assertTruer )r Údatar r r Ú testSerializeK s zUnknownFieldsTest.testSerializec C sD t jƒ }|j| jƒ |r,| j| j|jƒ ƒ n| jdt|jƒ ƒƒ d S )Nr )r r r r ÚassertEqualr Úlen)r ZpreserveÚ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 Zdefault_preserver r r ÚtestSerializeProto3Z s z%UnknownFieldsTest.testSerializeProto3c C s | j | jjƒ | jjƒ ƒ d S )N)r! r ZByteSizer )r r r r ÚtestByteSized s zUnknownFieldsTest.testByteSizec C s | j dt| jjƒ ƒƒ d S )Nr )r! r" r Z ListFields)r r r r ÚtestListFieldsg s z UnknownFieldsTest.testListFieldsc C st t jƒ }|jjƒ }d|_tjƒ }d|_|jƒ |_ |jƒ }tj ƒ }|j|ƒ |jƒ }t jƒ }|j|ƒ | j||ƒ d S )Ni«¿Ýi90 ) r Z RawMessageSetÚitemÚaddZtype_idr ZTestMessageSetExtension1Úir r# ZTestMessageSetZMergeFromStringr! )r Úrawr( Zmessage1Ú serializedÚprotoZreserializedZnew_rawr r r Ú1testSerializeMessageSetWireFormatUnknownExtensionk s zCUnknownFieldsTest.testSerializeMessageSetWireFormatUnknownExtensionc C sP t jƒ }|j| jƒ | j| j|ƒ | jjdƒ |j| jjƒ ƒ | j | j|ƒ d S )NÚoptional_string) r r r r r! r r Ú ClearFieldr ÚassertNotEqual)r r# r r r Ú testEqualsƒ s zUnknownFieldsTest.testEqualsc C s² | j jƒ | jd| j jƒ ƒ tjƒ }tjƒ }d|_|jj|jƒ ƒ |j j ƒ j|jƒ ƒ | jd|jjƒ ƒ | jd|j d jƒ ƒ |jƒ | jd|jjƒ ƒ | jd|j d jƒ ƒ d S )Nó Údiscardr )r ZDiscardUnknownFieldsr! r r r r/ Zoptional_nested_messager Zrepeated_nested_messager) r1 )r r# Z other_messager r r ÚtestDiscardUnknownFieldsŒ s" z*UnknownFieldsTest.testDiscardUnknownFieldsN)Ú__name__Ú __module__Ú__qualname__r r r$ r% r&