ó SÉLjc@stdZddlZddlZddlZddlZddlZyddlZWnek rqddlZnXddl m Z ddl m Z ddl m Z ddl m Z ddl mZddl mZdd l mZdd l mZdd lmZdd lmZdd lmZddlmZddlmZddlmZddlmZddlmZejZdefd„ƒYZdefd„ƒYZdefd„ƒYZdefd„ƒYZ defd„ƒYZ!defd„ƒYZ"defd „ƒYZ#d!efd"„ƒYZ$d#efd$„ƒYZ%d%efd&„ƒYZ&e'd'krpej(ƒndS((siUnittest for reflection.py, which also indirectly tests the output of the pure-Python protocol compiler. iÿÿÿÿN(tunittest_import_pb2(tunittest_mset_pb2(t unittest_pb2(tdescriptor_pb2(t descriptor(tmessage(t reflection(t text_format(tapi_implementation(tmore_extensions_pb2(tmore_messages_pb2(tmessage_set_extensions_pb2(t wire_format(t test_util(ttesting_refleaks(tdecodert _MiniDecodercBskeZdZd„Zd„ZeZeZeZeZd„Z e Z d„Z d„Z d„Z d„ZRS(s©Decodes a stream of values from a string. Once upon a time we actually had a class called decoder.Decoder. Then we got rid of it during a redesign that made decoding much, much faster overall. But a couple tests in this file used it to check that the serialized form of a message was correct. So, this class implements just the methods that were used by said tests, so that we don't have to rewrite the tests. cCs||_d|_dS(Ni(t_bytest_pos(tselftbytes((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyt__init__Os cCs%tj|j|jƒ\}|_|S(N(Rt _DecodeVarintRR(Rtresult((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyt ReadVarintSs!cCstj|jƒƒS(N(R t ZigZagDecodeR(R((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyt ReadSInt64\scCstj|jƒƒS(N(R t UnpackTagR(R((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pytReadFieldNumberAndWireTypeascCs=tjd|j|j|jd!ƒd}|jd7_|S(Nsd=„Z?d>„Z@d?„ZAd@„ZBdA„ZCdB„ZDdC„ZEdD„ZFdE„ZGdF„ZHdG„ZIdH„ZJdI„ZKdJ„ZLdK„ZMdL„ZNdM„ZOdN„ZPd[dO„ZRdP„ZSeTjUeVjWƒdQkp eVjXƒdRkdSƒdT„ƒZYdU„ZZdV„Z[dW„Z\dX„Z]dY„Z^dZ„Z_RS(\cCsU|jt|ƒt|ƒƒx2tt|ƒƒD]}|j||||ƒq/WdS(N(t assertEqualR!trange(Rtvaluestothersti((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pytassertListsEqualtsc Cswtjddddddddƒ}|jd|jƒ|jd|jƒ|jd|jƒ|j|jdƒƒdS(Ntoptional_int32itoptional_doubleg +‡)K@toptional_stringtoptional_float( Rt TestAllTypestNoneR,R2R3R4t assertFalsetHasField(Rtproto((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyttestScalarConstructorys  c Csçtjdddddgdddgd tttgd d gd dƒ}|jddddgt|jƒƒ|jddgt|jƒƒ|jtttgt|j ƒƒ|jd gt|j ƒƒ|jgt|j ƒƒdS( Ntrepeated_int32iiiitrepeated_doubleg®Gáz®ó?g +‡)K@t repeated_booltrepeated_stringR4trepeated_float( RR6tTruetFalseR7R,tlistR<R=R>R?R@(RR:((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyttestRepeatedScalarConstructor†s    %"c Cs‡tjdtjjdtjjƒtjjdtjjƒgdtjddƒtjddƒtjddƒgdtjjƒtjjd d ƒtjjd d ƒgƒ}|jtjjdtjjƒtjjdtjjƒgt|j ƒƒ|jtjddƒtjddƒtjddƒgt|j ƒƒ|jtjjƒtjjd d ƒtjjd d ƒgt|j ƒƒdS( Ntrepeated_nested_messagetbbtrepeated_foreign_messagetciÕÿÿÿi ±i t repeatedgrouptaii( RR6t NestedMessagetFOOtBARtForeignMessaget RepeatedGroupR,RCRERGRI(RR:((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyt testRepeatedCompositeConstructor•s6         cCs²tjdddddddgdtttgdtjjd tjjƒtjjd tjjƒgd tjd d ƒtjd d ƒtjd dƒgddƒ}|j d|j ƒ|j d|j ƒ|j ddgt |j ƒƒ|j tttgt |jƒƒ|j tjjd tjjƒtjjd tjjƒgt |jƒƒ|j tjd d ƒtjd d ƒtjd dƒgt |jƒƒ|j|jdƒƒdS(NR2iR4R=g®Gáz®ó?g +‡)K@R>RERFRGRHiÕÿÿÿi ±i toptional_nested_message(RR6RARBRKRLRMRNR7R,R2R4RCR=R>RERGR8R9(RR:((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyttestMixedConstructor·s:      "   cCsî|jttjddƒ|jttjddƒ|jttjddƒ|jttjddƒ|jttjddgƒ|jttjddƒ|jttjddgƒ|jttjddƒ|jttjddgƒdS( NR2tfooR4iÒRQR<R?RE(t assertRaisest TypeErrorRR6(R((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyttestConstructorTypeErrorÚs$cCs¼tjddƒ}|jd|jƒƒtjdtjjƒƒ}|jd|jƒƒtjddgƒ}|jd|jƒƒtjdtjjƒgƒ}|jd|jƒƒdS(NR2i iRQiR<RE(RR6R,tByteSizeRK(RR((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyt(testConstructorInvalidatesCachedByteSizeîs  cCs”tjƒ}|j|jdƒ ƒ|jd|jƒ|j|jdƒ ƒd|_|j|jdƒƒ|jdƒ|j|jdƒ ƒdS(NR2ii(RR6t assertTrueR9R,R2t ClearField(RR:((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyttestSimpleHasBitsýs   csG‡fd†}|ddƒ|ddƒ|ddƒ|dd ƒdS( Ncsštjƒ}t||ƒ}t||ƒ}ˆjd|ƒˆj|j|ƒ ƒˆj|j|ƒ ƒd}t|||ƒˆj|t||ƒƒ|}ˆj|j|ƒƒˆj|j|ƒƒ|j|ƒt||ƒ}ˆj|j|ƒ ƒˆj|j|ƒ ƒˆjdt||ƒƒˆj||k ƒt|||ƒˆj|j|ƒ ƒˆj|j|ƒ ƒˆjdt||ƒƒdS(Nii(RR6tgetattrR,RYR9tsetattrRZ(tcomposite_field_nametscalar_field_nameR:tcomposite_fieldtoriginal_scalar_valuetnew_valtold_composite_field(R(sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pytTestCompositeHasBits.s,  t optionalgroupRJRQRFtoptional_foreign_messageRHtoptional_import_messagetd((RRd((RsL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyt!testHasBitsWithSinglyNestedScalar s "*   cCs%tjƒ}|j}~d|_dS(Ni(RR6RQRF(RR:tnested((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyttestReferencesToNestedMessage]s  cCsrtjƒ}|j}|jdƒ|j||jk ƒd|_|j|jdƒ ƒ|jd|jjƒdS(NRQii(RR6RQRZRYRFR9R,(RR:Rj((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyt0testDisconnectingNestedMessageBeforeSettingFieldes    cCsKtjƒ}|j}|jdƒ~~tjƒtjƒ}|j}dS(NRQ(RR6RQRZtgctcollect(RR:Rj((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyt5testGetDefaultMessageAfterDisconnectingDefaultMessagens     cCsºtjƒ}|j}d|_|j|jdƒƒ|jdƒ|jd|jƒ|jd|jjƒ|j||jk ƒd|_|j|jdƒ ƒ|jd|jjƒdS(NiRQii(RR6RQRFRYR9RZR,(RR:Rj((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyt/testDisconnectingNestedMessageAfterSettingField{s     cCsKtjƒ}|j|jdƒ ƒ|jdƒ|j|jdƒ ƒdS(NRQ(RR6RYR9RZ(RR:((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyt0testDisconnectingNestedMessageBeforeGettingFieldˆs  cCsotjƒ}tjƒ}d|j_|j|ƒ|j|jdƒƒ|jdƒ|j|jdƒ ƒdS(NiRQ(RR6RQRFt MergeFromRYR9RZ(Rtproto1tproto2((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyt(testDisconnectingNestedMessageAfterMergeŽs     cCsLtjƒdkrdStjƒ}d|j_|jdƒ~tjƒdS(Ntpythonitoptional_lazy_message( RtTypeRR6RwRFRZRmRn(RR:((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyt"testDisconnectingLazyNestedMessage›s   cCsœtjƒ}|jjjdƒ|jdg|jjƒ|j|jdƒƒ|jdƒ|j|jdƒ ƒ|jj j ƒ|j|jdƒƒdS(NiRQ( RtTestNestedMessageHasBitsRQtnestedmessage_repeated_int32tappendR,RYR9RZt%nestedmessage_repeated_foreignmessagetadd(RR:((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyt&testHasBitsWhenModifyingRepeatedFields¨s  cCsqtjƒ}|j|jdƒ ƒ|jd|jjjjjjƒ|j|jdƒ ƒd|jjjjj_|jd|jjjjjjƒ|j|jdƒƒ|j|jjdƒƒ|j|jjjdƒƒ|j|jjjjdƒƒ|j|jjjjjdƒƒ|j|jjjjjjdƒ ƒ|j|jjjjjjdƒƒdS(NRFiiRJR2(RtTestMutualRecursionARYR9R,RFRJR2(Rtrecursive_proto((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyt!testHasBitsForManyLevelsOfNesting·s """&cCsñtjƒ}d|_d|_d|_|j}|j|jjddf|jjddf|jjddfg|j ƒƒd|j_ |j|jjddf|jjddf|jjddf|jjd|fg|j ƒƒdS( NiiRSR2toptional_fixed32R4i{RQ( RR6RƒR2R4RQR,t DESCRIPTORtfields_by_namet ListFieldsRF(RR:tnested_message((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyttestSingularListFieldsÇs$         c Cs tjƒ}|jjdƒ|jjdƒ|jjdƒ|jjddgƒ|jjgƒ|jjdƒ|jjd„tdƒDƒƒd |_|j |j |j j d d f|j j d ddgf|j j d dgf|j j d dddddgfg|j ƒƒdS(Niii RStbartbazcss|]}t|ƒVqdS(N(tstr(t.0tx((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pys åsiiR2R<trepeated_fixed32R?t0t1(RR6RŽR|R<R?textendR-R2R>R,R„R…R†(RR:((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyttestRepeatedListFieldsÝs"    cCsztjƒ}d|jtjQR¥(RtTestRequiredForeignR-RÍR~tCopyFromRTt IndexError(RR0Rt((R:sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyttestClearRemovesChildrenHs    cCs¯tjƒ}|jtt|ddƒ|jtt|ddgƒ|jtt|ddƒ|jtt|jddƒ|jtt|jddƒ|jtt|ddƒdS( NR<i RQiRFi"tsome_attributeRÉ(RR6RTtAttributeErrorR]RER@(RR:((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyttestDisallowedAssignmentsSs    cCsötjƒ}|jtt|ddƒ|jtt|ddƒ|jtt|ddƒ|jtt|ddƒ|jtt|ddƒ|jtt|ddƒ|jtt|d dƒtjƒd kré|jtt|ddƒn d|_dS( NR2gš™™™™™ñ?RSR4i R±R°R5R3Rv(RR6RTRUR]RRxR°(RR:((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyttestSingleScalarTypeSafetyhs cs⇇fd†}|ddtƒ|dd tƒ|ddtƒy t}Wntk ret}nXtjdƒdkrŽ|dd|ƒn|ddtƒ|d d|ƒ|d d|ƒ|d d|ƒ|d d|ƒd S(s}Verifies setting of scalar integers. Args: integer_fn: A function to wrap the integers that will be assigned. cs}tjƒ}ˆ|ƒ}t|||ƒˆjt||ƒ|ƒtjƒ}|j|jƒƒˆjt||ƒ|ƒdS(N(RR6R]tassertIsInstanceR\tParseFromStringtSerializeToString(t field_nametvaluet expected_typeR:Rt(t integer_fnR(sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pytTestGetAndDeserialize}s   R2iiR©tLiiR¨i<RªNi@i@lli@li@l(tinttlongt NameErrorRtcalcsize(RRÝRÞt integer_64((RÝRsL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pytassertIntegerTypesws    cCs|jd„ƒdS(NcSs|S(N((R�((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyRΚR¥(Rå(R((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyttestIntegerTypes™scCs|jtjƒdS(N(RåR tNonStandardInteger(R((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyttestNonStandardIntegerTypesœscCs]tjƒ}|jtƒ�d|_WdQX|jtdƒ�tjddƒ|_WdQXdS(Nt2tmy_errori( RR6RTRURªtassertRaisesRegexpt RuntimeErrorR Rç(Rtpb((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyttestIllegalValuesForIntegersŸs  cs»‡‡fd†}|dddƒ|dddƒ|dddƒ|d dd ƒtjƒ}ˆjttfƒ�ˆdƒ|_Wd QXtjƒ}ˆdƒ|_ˆjd|jƒd S(sŒVerifies bounds checking for scalar integer fields. Args: integer_fn: A function to wrap the integers that will be assigned. csÀtjƒ}ˆ|ƒ}ˆ|ƒ}t|||ƒˆj|t||ƒƒt|||ƒˆj|t||ƒƒˆjttft|||dƒˆjttft|||dƒdS(Ni(RR6R]R,R\RTRÊRU(RÚt expected_mint expected_maxRí(RÝR(sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pytTestMinAndMaxIntegers°s    R2iiR©ilÿÿR¨i?RªlÿÿÿÿNllýÿÿÿllÿÿllûÿÿÿllÿÿÿÿllûÿÿÿ(RR6RTRÊRURªtoptional_nested_enumR,(RRÝRñRí((RÝRsL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pytassetIntegerBoundsCheckingªs   cCs|jd„ƒdS(NcSs|S(N((R�((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyRÎÌR¥(Ró(R((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyttestSingleScalarBoundsCheckingËscCs|jtjƒdS(N(RóR Rç(R((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyt)testNonStandardSingleScalarBoundsCheckingÎscCs'tjƒ}|jt|jjdƒ|jt|jjdƒ|jt|jdƒ|jt|jdƒ|jjdƒd|jd<|jt|jj ddƒ|jt|jj ddƒ|jt|jj dgƒ|jt|jj ddƒ|jjd ƒ|jt|jj ddƒdS( Ngš™™™™™ñ?RSi iiiôtabctindexRé( RR6RTRUR<R|R?trepeated_bytesRÑt __setitem__(RR:((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyttestRepeatedScalarTypeSafetyÑs   cCswtjƒ}|jd|jƒd|_|jd|jƒd|_|jd|jƒd|_|jd|jƒdS(Niilÿÿÿlÿÿÿÿ(RR6R,R2Rª(RR:((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyt!testSingleScalarGettersAndSettersæs    cCsstjƒ}|jdƒd|_|j|jdƒƒ|jdƒ|jd|jƒ|j|jdƒ ƒdS(NR2ii(RR6RZR2RYR9R,(RR:((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyttestSingleScalarClearFieldòs    cCs‹tjƒ}|jd|jƒ|jdtjjƒ|jd|jƒ|jdtjjƒ|jd|jƒ|jdtjjƒdS(Niii(RR6R,RLRMtBAZ(RR:((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyt testEnumsýs cCs~|jdtjjtjƒƒ|jdtjjtjƒƒ|jdtjjtjƒƒ|jttjjdƒtj ƒ}|jd|j j|j ƒƒ|jdtj j j|j ƒƒ|jd|j j|j ƒƒ|jdtj j j|j ƒƒ|jd|j j|j ƒƒ|jdtj j j|j ƒƒ|jt|j jdƒ|jttj j jdƒdS(Nt FOREIGN_FOORÂt FOREIGN_BAZi0,RLRMRý(R,Rt ForeignEnumtNameRÿRÂRRTRÊR6t NestedEnumRLRMRý(RR:((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyt testEnum_Names2             cCs~|jtjtjjdƒƒ|jtjtjjdƒƒ|jtjtjjdƒƒ|jttjjdƒtj ƒ}|j|j |j jdƒƒ|j|j tj j jdƒƒ|j|j |j jdƒƒ|j|j tj j jdƒƒ|j|j |j jdƒƒ|j|j tj j jdƒƒ|jt|j jdƒ|jttj j jdƒdS( NRÿRÂRtFORLRMRýtFoo(R,RRÿRtValueRÂRRTRÊR6RLRRMRý(RR:((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyttestEnum_Value"s2             cCs |jdddgttjjƒƒƒ|jdddgttjjƒƒƒ|jdddgttjjƒƒƒtjƒ}|jddd d gt|jjƒƒƒ|jd d d dgt|jjƒƒƒ|jddddgt|jjƒƒƒdS(NRÿRÂRiiiRLRMRýtNEGiiiiÿÿÿÿ(Rÿi(RÂi(Ri(RLi(RMi(Rýi(R iÿÿÿÿ( R,RCRRtkeysR.titemsR6R(RR:((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyttestEnum_KeysAndValues>s  ++cCs�tjƒ}|j|j ƒ|jdt|jƒƒ|jjdƒ|jjdƒ|jjdƒ|j|jƒ|jdt|jƒƒ|jdddg|jƒ|jd|jdƒ|jd|jdƒ|jt|jj dƒ|jt|jj dƒ|jt |jj d ƒ|jt |jj dƒd |jd <|jdd dg|jƒ|jj d d ƒ|jdd d dg|jƒ|jjd ƒ|jd d dg|jd d!ƒ|jdd d dd g|jƒd„t dƒDƒ|jd d+|jddd dd g|jƒdddg|jd d+|jddddd g|jƒg}x|jD]}|j|ƒq{W|jddddd g|ƒ|jd=|jdddd g|jƒ|jd3|jddg|jƒ|jjddgƒ|jddddg|jƒ|jdƒ|j|j ƒ|jdt|jƒƒ|jjd ƒ|jd |jdƒd|jd<|jd|jdƒdd ddg|j(|jd=|jdd dg|jƒ|jd=|jddg|jƒ|jt|jjdƒ|jt|jjdƒ|jdd5|jdg|jƒ|jdd5|jdg|jƒdS(Niii iiiÿÿÿÿiÒi.ûÿÿRSiiiiicss|] }|VqdS(N((RŒR0((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pys rsii#i(i-i R<iþÿÿÿiýÿÿÿi,idi'(RR6RYR<R,R!R|RTRÑt __getitem__RUR7tinsertR-R‘RZt __delitem__(RR:RR0((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyttestRepeatedScalarsMsl  ## ""        cCs±tjƒ}|j|j ƒ|jdt|jƒƒ|jjdƒ|jjdƒ|jjdƒ|jjdƒ|jdt|jƒƒ|jjdƒ|jdt|jƒƒ|jd|jdƒ|jd|jdƒ|jd|jdƒ|jjdƒ|jdt|jƒƒ|jd|jdƒ|jd|jdƒ|jjdƒ|jdt|jƒƒ|jd|jdƒ|jt |jjdƒdS( Niii iiiii{( RR6RYR<R,R!R|tremoveRTRÊ(RR:((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyttestRepeatedScalarsRemove§s* c Cs$tjƒ}|j|j ƒ|jdt|jƒƒ|jjƒ}|jjƒ}|j|jƒ|jdt|jƒƒ|j||g|jƒ|j|tjj ƒ|j t |jj dƒ|j t |jj dƒ|j t |jj dƒ|j t |jj dƒ|jjƒ}|jjƒ}|jjƒ}|j|||g|jdd!ƒ|j|||||g|jƒ|j||g|jd ƒ|j|||g|jdƒ|j||jdƒ|j|g|jd ƒg}x|jD]}|j|ƒqW|j|||||g|ƒ|jd=|j||||g|jƒ|jd3|j||g|jƒtjj ddƒ} tjj ddƒ} |jj| | gƒ|jdt|jƒƒ|j| |jdƒ|j| |jd ƒ|j t |jj| ƒ|j t |jjdgƒtjƒ} |j t |jj| gƒ|jd ƒ|j|j ƒ|jdt|jƒƒ|jjdd ƒ|jdt|jƒƒ|jd |jdjƒ|j t |jjd ƒ|j tƒ�d |jdRR?RJRARKRLRMR‘RÙt ParseMessageR,(Rt desc_prototfdpRGRNRPtserialized_priust new_prius((RHROsL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyttestDescriptorProtoSupportQsN       .      cCsÓtjƒ}tj}|j|j|ƒ ƒ|jd|j|ƒ|j|j|ƒ ƒd|j|<|jd|j|ƒ|j|j|ƒƒ|j|ƒ|jd|j|ƒ|j|j|ƒ ƒdS(Nii(RR“R–RYt HasExtensionR,R”tClearExtension(Rtextendee_protot extension((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyt'testTopLevelExtensionsForOptionalScalarŽs    cCsÔtjƒ}tj}|jdt|j|ƒƒ|j|jdƒ|jdg|j|ƒ|j|}|j|ƒ|jdt|j|ƒƒ|j||j|k ƒ|j t t j |j|dƒdS(NiRSRJ( RR“R›R,R!R”R|R`RYRTRUtoperatortsetitem(RRaRbt string_list((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyt'testTopLevelExtensionsForRepeatedScalarŸs    cCs=tjƒ}tj}|j|j|ƒ ƒ|jd|j|jƒ|j|j|ƒ ƒd|j|_|jd|j|jƒ|j|j|ƒƒ|j|}|j|ƒ|j||j|k ƒd|_|jd|jƒ|j|j dƒƒ|j|j|ƒ ƒ|j t t j |j|dƒdS(Niii*RHRJ(RR“t"optional_foreign_message_extensionRYR_R,R”RHR`R9RTRURdRe(RRaRbtforeign_message((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyt(testTopLevelExtensionsForOptionalMessage­s"     cCstjƒ}tj}|jdt|j|ƒƒ|j|jƒ}d|_|jd|j|djƒd|_|jd|j|djƒ|j|}|j|ƒ|jdt|j|ƒƒ|j ||j|k ƒ|j t t j |j|dƒdS(Niii*RJ(RR“trepeatedgroup_extensionR,R!R”R~RJR`RYRTRURdRe(RRaRbtgroupt group_list((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyt(testTopLevelExtensionsForRepeatedMessageÆs      cCsátjƒ}tjj}|j|j|ƒ ƒ|j|}|jd|jƒ|j|j|ƒ ƒd|_|jd|j|jƒ|j|j|ƒƒ|j |ƒ|j||j|k ƒ|j|j|ƒ ƒdS(Nii( RR“t TestRequiredtsingleRYR_R”R,RJR`(RRaRbtrequired((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyttestNestedExtensions×s     cCsvtjj}|j|jtjjdƒƒ|j|jdƒjtjjƒ|j dt |j tj jƒƒƒdS(Nis*protobuf_unittest.optional_int32_extensioni( RR„tpoolRYtFindExtensionByNumberR“tassertIstFindExtensionByNameR&R,R!tFindAllExtensionsR6(RRs((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyttestRegisteredExtensionsçs    cCs›tjƒ}|j|jdƒ ƒ|jd|jjtjƒ|j|jdƒ ƒd|jjtj<|jd|jjtjƒ|j|jdƒƒtjƒ}|j|jdƒ ƒ|jg|jjtjƒ|j|jdƒ ƒ|jjtjj dƒ|jdg|jjtjƒ|j|jdƒƒtjƒ}|j|jdƒ ƒ|jd|jjtj j ƒ|j|jdƒ ƒd|jjtj _ |jd|jjtj j ƒ|j|jdƒƒtjƒ}|j|jdƒ ƒ|jdt |jjtj ƒƒ|j|jdƒ ƒ|jjtj jƒ}|j||jjtj dƒ|j|jdƒƒdS(Nt submessageii(R tTopLevelMessageRYR9R,RyR”toptional_int_extensiontrepeated_int_extensionR|toptional_message_extensiontforeign_message_intR!trepeated_message_extensionR~(Rttopleveltforeign((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyt(testHasBitsForAncestorsOfExtendedMessageùsL          cCs_tjƒ}|j}tj}|j|}|j|ƒd|_|j||j|k ƒdS(Ni(R RzRyR}R”R`R~RY(RR€RaRbtextension_proto((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyt*testDisconnectionAfterClearingEmptyMessage*s      cCstjƒ}|jt|jdƒ|jt|jdƒ|jt|jjdƒ|jt|jjddƒx‡t j t j t j t j fD]g}|jt|j|ƒ|jt|j|ƒ|jt|jj|ƒ|jt|jj|dƒqŒW|jt|jtjƒdS(NiÒi(RR“RTtKeyErrorR_R`R”R RùR R{R}R|RR›(RRatunknown_handle((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyttestExtensionFailureModes4s&  cCsKtjƒ}tj|ƒ|jƒ}tjj|ƒ}|j||ƒdS(N(RR6R t SetAllFieldsRÙt FromStringR,(RRststring1Rt((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyttestStaticParseFromSs    cCsatjƒ}d|_tjƒ}d|_|j|ƒ|jd|jƒ|jd|jƒdS(NiRÛ(RR6R2R4RrR,(RRsRt((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyttestMergeFromSingularField]s     cCsžtjƒ}|jjdƒ|jjdƒtjƒ}|jjdƒ|j|ƒ|jd|jdƒ|jd|jdƒ|jd|jdƒdS(Niii(RR6R<R|RrR,(RRsRt((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyttestMergeFromRepeatedFieldjs   cCsKtjƒ}d|j_tjƒ}|j|ƒ|jd|jjƒdS(Ni (RR6ReRJRrR,(RRsRt((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyttestMergeFromOptionalGroupxs     cCs,tjƒ}|jjƒ}d|_|jjƒ}d|_tjƒ}|jjƒ}d|_|j|ƒ|jd|jdjƒ|jd|jdjƒ|jd|jdjƒtjƒ}|jj|jƒ|jd|jdjƒ|jd|jdjƒ|jd|jdjƒdS(Ni{iAiçiii(RR6RER~RFRrR,(RRstmRttproto3((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyt"testMergeFromRepeatedNestedMessage€s"       cCsntjƒ}tj|ƒtjƒ}|j|ƒ|j||ƒ|jƒ}|jƒ}|j||ƒdS(N(RR6R RˆRrR,RÙ(RRsRtRŠtstring2((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyttestMergeFromAllFields–s      cCsStjƒ}d|jtjd|ƒqNW|ddƒ|d dƒ|d dƒdS( Ncs7ˆjjƒ|ˆj_ˆj|dˆjƒƒdS(Ni(R:R©R¨R,R(R0texpected_varint_size(R(sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pytTest#s  iiii?i'iÿÿÿÿi iþÿÿÿllûÿÿÿ(tzipR-(RRR0t num_bytes((RsL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyt testVarints"s  1  cCsŽd|j_|jd|jƒƒd|j_|jdt|jjƒ|jƒƒdd|j_|jdt|jjƒ|jƒƒdS(NR¥iRöR�i€i(R:R4R,RR!(R((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyt testStrings1s   &cCsùd|j_|jd|jƒƒtjƒ|_d|j_|jd|jƒƒtjƒ|_d|j_|jd|jƒƒtjƒ|_d|j_|jd|jƒƒtjƒ|_d|j_ |jd|jƒƒtjƒ|_dS(NiÒii gX9´Èv¾ó?i@i( R:RƒR,RRR6R­R5R3R«(R((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyttestOtherNumerics>s     cCs)d|jj_|jd|jƒƒdS( Niiiii@iii(R:RQRFR,R(R((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyttestCompositesXscCs-d|jj_|jdd|jƒƒdS(Niiiii ii(R:ReRJR,R(R((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyt testGroups`scCsD|jjjdƒ|jjjdƒ|jdd|jƒƒdS(Ni i€iiii(R:R<R|R,R(R((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyRgscCs7|jjjddgƒ|jdd|jƒƒdS(Ni i€iiii(R:R<R‘R,R(R((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyttestRepeatedScalarsExtendmscCsm|jjjdƒ|jjjdƒ|jdd|jƒƒ|jjjdƒ|jd|jƒƒdS(Ni i€iiiii(R:R<R|R,RR(R((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyRrs cCsG|jjjƒ}|jjjƒ}d|_|jd|jƒƒdS( Niiiiiiii(R:RER~RFR,R(Rtforeign_message_0tforeign_message_1((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyRzs cCss|jjjƒ}|jjjƒ}d|_|jd |jƒƒtj|jjƒ}|jjd=|jd|jƒƒ|jjjƒ}d|_|jd|jƒƒ|jjd=|jd|jƒƒ|jjd=|jd|jƒƒ|jdt|ƒƒ|dd5t j ƒdkr=|jdt|ƒƒn|d=t j ƒdkro|jdt|ƒƒndS(Ni iiii Rviÿÿÿÿiiiiiiiiiiiiii i iii( R:RER~RFR,RR¢R£R!RRx(RR'R(REtforeign_message_2((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyttestRepeatedCompositesDelete‚s,      cCsG|jjjƒ}|jjjƒ}d|_|jd|jƒƒdS( Niiiiiii i (R:RIR~RJR,R(Rtgroup_0tgroup_1((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyttestRepeatedGroups©s cCsˆtjƒ}|jd|jƒƒtj}d|j|<|jd|jƒƒtjjjd}|j t ƒ�d|j|D s8      6 )  3 !       t OptionsTestcBseZd„Zd„ZRS(cCsTtjƒ}|jt|jjƒjƒtjƒ}|jt |jjƒjƒdS(N( R RÙR,RAR„RYRZRR6RB(RR:((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyttestMessageOptionsw s     cCsÓtjƒ}d|_d|_x3|jƒD]%\}}|jt|jƒjƒq+Wtj ƒ}|j j dƒ|j j dƒxL|jƒD]>\}}|jt |jƒjƒ|jtjj|jƒq�WdS(Nig@(RR6R2R3R†R,RBRYRyRR7R|R8RARR5RWR$(RR:tfield_descriptort_((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyttestPackedOptions s    (R#R$R R£(((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyRŸu s t ClassAPITestcBs’eZejejƒdko-ejƒdkdƒd„ƒZd„Ze j dƒd„ƒZ e j dƒd„ƒZ e j dƒd„ƒZ RS( RÃis6C++ implementation requires a call to MakeDescriptor()cCs$tjddddddgdgdgdgƒ}tjd d ddddgd|gdgdgƒ}tjd d ddddgdgdgdgƒ}tjd dddddgd||gdgdgƒ}tj|ƒ}|jd |jƒ|jd |jƒ|jd|jjƒdS(Ntleafspackage.parent.child.leafR¥R&R1R/R0R2R2spackage.parent.childtsiblingspackage.parent.siblingtparentspackage.parent(RR:R7Rt MakeClassRÍt__dict__R2(Rt leaf_desct child_desct sibling_desct parent_desct message_class((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyt!testMakeClassWithNestedDescriptor’ s(          cCs4d|d}tjƒ}tj||ƒ|jƒS(s Get a serialized representation of a test FileDescriptorProto. Args: name: All calls to this must use a unique message name, to avoid collisions in the cpp descriptor pool. Returns: A string containing the serialized form of a test FileDescriptorProto. smessage_type { name: "si" field { name: "flat" number: 1 label: LABEL_REPEATED type: TYPE_UINT32 } field { name: "bar" number: 2 label: LABEL_OPTIONAL type: TYPE_MESSAGE type_name: "Bar" } nested_type { name: "Bar" field { name: "baz" number: 3 label: LABEL_OPTIONAL type: TYPE_MESSAGE type_name: "Baz" } nested_type { name: "Baz" enum_type { name: "deep_enum" value { name: "VALUE_A" number: 0 } } field { name: "deep" number: 4 label: LABEL_OPTIONAL type: TYPE_UINT32 } } }}(RRÈRtMergeRÙ(RRtfile_descriptor_strtfile_descriptor((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyt_GetSerializedFileDescriptor« s ) s MakeDescriptor is not repeatablecs»tjƒdkrdStjƒ}|j|jdƒƒtj|jdƒ‰dt j t j t jƒf‡fd†ƒY}|ƒ}d}tj||ƒ|j|jddd gƒdS( s7Test that the generated class can parse a flat message.RvNtAit MessageClasscseZˆZRS((R#R$R„((tmsg_descriptor(sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyRµô ssflat: 0 flat: 1 flat: 2 ii(RRxRRÈRØR³RRXR'R<R=RR>RR?RR°R,tflat(RR²RµRötmsg_str((R¶sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyt0testParsingFlatClassWithExplicitClassDeclarationã s  . cCs†tjƒ}|j|jdƒƒtj|jdƒ}tj|ƒ}|ƒ}d}t j ||ƒ|j |j dddgƒdS(s7Test that the generated class can parse a flat message.tBisflat: 0 flat: 1 flat: 2 iiN( RRÈRØR³RRXR'RR¨RR°R,R·(RR²R¶t msg_classRöR¸((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyttestParsingFlatClassþ s  cCsƒtjƒ}|j|jdƒƒtj|jdƒ}tj|ƒ}|ƒ}d}t j ||ƒ|j |j j jdƒdS(s9Test that the generated class can parse a nested message.tCisbar { baz { deep: 4 }}iN(RRÈRØR³RRXR'RR¨RR°R,R‰RŠtdeep(RR²R¶R»RöR¸((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyttestParsingNestedClass s  (R#R$RøRùRRxRúR¯R³RtSkipReferenceLeakCheckerR¹R¼R¿(((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyR¤� s! 8t__main__()R%R¢RmRdR<Rt unittest2Røt ImportErrortgoogle.protobufRRRRRRRRRòRR R R R R RRt BaseTestCasetobjectRR+RûRRRRR>RŸR¤R#tmain(((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/reflection_test.pyt#s`       -ÿÿÿÿÿÿÿV! ÿ9ÿÿ3�