3 SÉLj6ã @südZdZy ddlZWnek r0ddlZYnXddlmZddlmZddlmZddl m Z ddl m Z dd l m Z dd l m Z dd l mZdd l mZdd l mZejZdd„ZGdd„deƒZGdd„deƒZGdd„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_checkerscCs$tjtjƒdkotjƒdkdƒ|ƒS)NZcppéz7Addtional test for pure python involved protect members)ÚunittestZskipIfrZTypeZVersion)Úfunc©rú)/usr/lib/python3.6/unknown_fields_test.pyÚ(SkipCheckUnknownFieldIfCppImplementation;src@sTeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dS)ÚUnknownFieldsTestcCsHtjj|_tjƒ|_tj|jƒ|jjƒ|_tj ƒ|_ |j j |jƒdS)N) rÚ TestAllTypesÚ DESCRIPTORÚ descriptorÚ all_fieldsr Ú SetAllFieldsÚSerializeToStringÚall_fields_dataÚTestEmptyMessageÚ empty_messageÚParseFromString)ÚselfrrrÚsetUpCs      zUnknownFieldsTest.setUpcCs|jjƒ}|j||jkƒdS)N)rrZ assertTruer)rÚdatarrrÚ testSerializeKs zUnknownFieldsTest.testSerializecCsDtjƒ}|j|jƒ|r,|j|j|jƒƒn|jdt|jƒƒƒdS)Nr)rrrrÚ assertEqualrÚlen)rZpreserveÚmessagerrrÚexpectSerializeProto3Rs  z'UnknownFieldsTest.expectSerializeProto3cCs8tjƒ}|j|ƒtj| ƒ|j| ƒtj|ƒdS)N)rZ&GetPythonProto3PreserveUnknownsDefaultr$Z&SetPythonProto3PreserveUnknownsDefault)rZdefault_preserverrrÚtestSerializeProto3Zs   z%UnknownFieldsTest.testSerializeProto3cCs|j|jjƒ|jjƒƒdS)N)r!rZByteSizer)rrrrÚ testByteSizedszUnknownFieldsTest.testByteSizecCs|jdt|jjƒƒƒdS)Nr)r!r"rZ ListFields)rrrrÚtestListFieldsgsz UnknownFieldsTest.testListFieldscCsttjƒ}|jjƒ}d|_tjƒ}d|_|jƒ|_ |jƒ}tj ƒ}|j |ƒ|jƒ}tjƒ}|j |ƒ|j ||ƒdS)Ni«¿Ýi90) rZ RawMessageSetÚitemÚaddZtype_idrZTestMessageSetExtension1Úirr#ZTestMessageSetZMergeFromStringr!)rÚrawr(Zmessage1Ú serializedÚprotoZ reserializedZnew_rawrrrÚ1testSerializeMessageSetWireFormatUnknownExtensionks    zCUnknownFieldsTest.testSerializeMessageSetWireFormatUnknownExtensioncCsPtjƒ}|j|jƒ|j|j|ƒ|jjdƒ|j|jjƒƒ|j |j|ƒdS)NÚoptional_string) rrrrr!rrÚ ClearFieldrÚassertNotEqual)rr#rrrÚ testEqualsƒs   zUnknownFieldsTest.testEqualscCs²|jjƒ|jd|jjƒƒtjƒ}tjƒ}d|_|jj|jƒƒ|j j ƒj|jƒƒ|j d|jjƒƒ|j d|j djƒƒ|jƒ|jd|jjƒƒ|jd|j djƒƒdS)NóÚdiscardr) rZDiscardUnknownFieldsr!rrrr/Zoptional_nested_messagerZrepeated_nested_messager)r1)rr#Z other_messagerrrÚtestDiscardUnknownFieldsŒs"    z*UnknownFieldsTest.testDiscardUnknownFieldsN) Ú__name__Ú __module__Ú __qualname__rr r$r%r&r'r.r2r5rrrrrAs  rc@sHeZdZdd„Zdd„Zedd„ƒZdd„Zd d „Zd d „Z d d„Z dS)ÚUnknownFieldsAccessorsTestcCsHtjj|_tjƒ|_tj|jƒ|jjƒ|_tj ƒ|_ |j j |jƒdS)N) rrrrrr rrrrrr)rrrrr£s      z UnknownFieldsAccessorsTest.setUpc Cs‚|jj|}tj|j}tj|j|ƒ}i}xB|jj D]6\}}||kr4t j j |d} | |dt |ƒ|j|ƒq4W|j|||ƒdS)Nr)rÚfields_by_namer ÚFIELD_TYPE_TO_WIRE_TYPEÚtyperÚTagBytesÚnumberrÚ_unknown_fieldsrrÚ_decoders_by_tagr"rr!) rÚnameÚexpected_valueÚfield_descriptorÚ wire_typeÚ field_tagÚ result_dictÚ tag_bytesÚvalueÚdecoderrrrÚCheckUnknownField±s  z,UnknownFieldsAccessorsTest.CheckUnknownFieldcCst|jd|jjƒ|jd|jjƒ|jd|jjƒ|jd|jjƒ|jd|jjƒ|jd|jjƒ|jd|jjƒdS)NÚoptional_nested_enumÚrepeated_nested_enumÚoptional_int32Úoptional_fixed32Úoptional_fixed64r/Ú optionalgroup) rJrrKrLrMrNrOr/rP)rrrrÚtestCheckUnknownFieldValue¼s      z5UnknownFieldsAccessorsTest.testCheckUnknownFieldValuecCs*tjƒ}|j|jƒ|j|jƒ|jƒdS)N)rrZCopyFromrr!rr)rr#rrrÚ testCopyFromØs z'UnknownFieldsAccessorsTest.testCopyFromcCsœtjƒ}d|_d|_tjƒ}|j|jƒƒ|jdƒd|_d|_tjƒ}|j|jƒƒ|j |ƒ|j|jƒƒ|j |jdƒ|j |jdƒ|j |jdƒdS)Nér rMéé) rrrMZoptional_uint32rrrr0Zoptional_int64Z MergeFromr!)rr#ÚsourceZ destinationrrrÚ testMergeFromÝs  z(UnknownFieldsAccessorsTest.testMergeFromcCs |jjƒ|j|jjƒdƒdS)Nr3)rZClearr!r)rrrrÚ testClearòs z$UnknownFieldsAccessorsTest.testClearcCs*tjƒ}|j|jƒ|j|jƒ|jƒdS)N)rZTestEmptyMessageWithExtensionsrrr!r)rr#rrrÚtestUnknownExtensions÷s z0UnknownFieldsAccessorsTest.testUnknownExtensionsN) r6r7r8rrJrrQrRrWrXrYrrrrr9¡s r9c@sPeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Ze d d„ƒZ dd„Z dS)ÚUnknownEnumValuesTestcCs|tjj|_tjƒ|_tjj|j_|jjjtjjtjj gƒ|jj jtjjtjj gƒ|jj ƒ|_ tj ƒ|_|jj|j ƒdS)N)rÚTestEnumValuesrrr#ZZEROrKrLÚextendZONEÚpacked_nested_enumrZ message_dataZTestMissingEnumValuesÚmissing_messager)rrrrrÿs       zUnknownEnumValuesTest.setUpc Cs‚|jj|}tj|j}tj|j|ƒ}i}xB|jj D]6\}}||kr4t j j |d} | |dt |ƒ|j|ƒq4W|j|||ƒdS)Nr)rr:r r;r<rr=r>r^r?rr[r@r"r#r!) rrArBrCrDrErFrGrHrIrrrrJs   z'UnknownEnumValuesTest.CheckUnknownFieldcCs6tjƒ}d|_tjƒ}|j|jƒƒ|j|jdƒdS)NZblahr)rZ JustStringZdummyr[rrr!rK)rZ just_stringZmissingrrrÚ!testUnknownParseMismatchEnumValue$s z7UnknownEnumValuesTest.testUnknownParseMismatchEnumValuecCsN|j|jjdƒƒ|j|jjdƒ|jjƒ}|jjdƒ|j|jjƒ|ƒdS)NrKr )Z assertFalser^ZHasFieldr!rKrr0)rr,rrrÚtestUnknownEnumValue1s   z*UnknownEnumValuesTest.testUnknownEnumValuecCs|jg|jjƒdS)N)r!r^rL)rrrrÚtestUnknownRepeatedEnumValue9sz2UnknownEnumValuesTest.testUnknownRepeatedEnumValuecCs|jg|jjƒdS)N)r!r^r])rrrrÚtestUnknownPackedEnumValue<sz0UnknownEnumValuesTest.testUnknownPackedEnumValuecCs4|jd|jjƒ|jd|jjƒ|jd|jjƒdS)NrKrLr])rJr#rKrLr])rrrrÚ!testCheckUnknownFieldValueForEnum?s   z7UnknownEnumValuesTest.testCheckUnknownFieldValueForEnumcCs*tjƒ}|j|jjƒƒ|j|j|ƒdS)N)rr[rr^rr!r#)rZ new_messagerrrÚ testRoundTripHsz#UnknownEnumValuesTest.testRoundTripN) r6r7r8rrJr_r`rarbrrcrdrrrrrZýs   rZÚ__main__)Ú__doc__Ú __author__Z unittest2r Ú ImportErrorZgoogle.protobufrrrZgoogle.protobuf.internalrrrrr r r Z BaseTestCaserrr9rZr6ÚmainrrrrÚ!s,           `\Q