ó SÉLjc@s…dZdZddlZyddlZWnek rGddlZnXddlmZddlmZddlm Z ddlm Z ddl m Z dd l m Z dd lmZdd lmZdd lmZdd lmZdZdejfd„ƒYZdefd„ƒYZdejfd„ƒYZdejfd„ƒYZdejfd„ƒYZedkr�ejƒndS(s1Unittest for google.protobuf.internal.descriptor.s#robinson@google.com (Will Robinson)iÿÿÿÿN(tunittest_custom_options_pb2(tunittest_import_pb2(t unittest_pb2(tdescriptor_pb2(tapi_implementation(t test_util(t descriptor(tdescriptor_pool(tsymbol_database(t text_formats name: 'TestEmptyMessage' tDescriptorTestcBs¿eZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z d „Z d „Z d „Zd „Zejejƒdkp«ejƒdkdƒd„ƒZRS(c Csštjddddƒ}|jjddƒ}|jjddddd tjjd tjjƒ|jjdd ƒ}|j jdd dd ƒ|j jddddƒ|j jddddƒ|jjddƒ|j jddƒ}|j jddddddƒ}|j ƒ|_ |j j|ƒ|j j|jƒ|_|jj|j|_|jj|j|_|jj|j|_|jj|j|_dS(Ntnamessome/filename/some.prototpackagetprotobuf_unittestt NestedMessagetbbtnumberittypetlabelt ForeignEnumt FOREIGN_FOOit FOREIGN_BARit FOREIGN_BAZitResponseMessagetServicet CallMethodt input_types .protobuf_unittest.NestedMessaget output_types".protobuf_unittest.ResponseMessage(RtFileDescriptorProtot message_typetaddtfieldtFieldDescriptorProtot TYPE_INT32tLABEL_OPTIONALt enum_typetvaluetservicetmethodtGetDescriptorPooltpooltAddtFindFileByNameR tmy_filetmessage_types_by_namet my_messagetenum_types_by_nametmy_enumtservices_by_namet my_servicetmethods_by_namet my_method(tselft file_protot message_protot enum_protot service_protot method_proto((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/descriptor_test.pytsetUp>s:             cCs tjƒjS(N(RtDefaultR((R4((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/descriptor_test.pyR'bscCsË|j|jjddƒdƒ|j|jjdjdj|jjddƒƒ|jtƒ�|jjddƒWdQX|jtƒ�|jjddƒWdQX|jtƒ�|jjƒWdQXdS(NRiRiçtNoneEnum( t assertEqualR-t EnumValueNameR.tvalues_by_numberR t assertRaisestKeyErrort TypeError(R4((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/descriptor_test.pyttestEnumValueNamees cCs$|j|j|jjdjƒdS(Ni(R=R/tvaluesR(R4((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/descriptor_test.pyttestEnumFixupstscCs=|j|j|jjdjƒ|j|j|jjƒdS(Ni(R=R-tfieldstcontaining_typeR/(R4((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/descriptor_test.pyttestContainingTypeFixupsws cCs|j|j|jjƒdS(N(R=R1R3tcontaining_service(R4((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/descriptor_test.pyttestContainingServiceFixups{scCsÌ|j|jjƒtjƒƒ|j|jjdjƒtjƒƒ|j|jjƒtjƒƒ|j|jj djƒtj ƒƒ|j|j jƒtj ƒƒ|j|j jƒtjƒƒdS(Ni(R=R/t GetOptionsRt EnumOptionsRDtEnumValueOptionsR-tMessageOptionsRFt FieldOptionsR3t MethodOptionsR1tServiceOptions(R4((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/descriptor_test.pyttestGetOptions~s     cCsttj}tjj}|jd}|jd}|jd}|jd}|jd}tjj}|jdƒ} |j ƒ} tj } |j d| j | ƒ|j ƒ} tj } |j d| j | ƒ|j ƒ}tj}|j d |j |ƒtj}|j d |j |ƒ|j ƒ}tj}|j d |j |ƒ|j ƒ}tj}|j d |j |ƒ|j ƒ}tj}|j d |j |ƒ|j ƒ}tj}|j d|j |ƒ| j ƒ}tj}|j tj|j |ƒtjj}|j|jƒ|j|jƒ|j|jƒ|j|jƒ|j|jƒ|j|jƒ|j|jƒdS(Ntfield1tAnOneoftAnEnumt ANENUM_VAL2t ANENUM_VAL1tFoolê` iÈÿÿÿl-aëi*i�ÿÿÿiëüÿÿi{lýÿÿÿê` (Rt DESCRIPTORtTestMessageWithCustomOptionstfields_by_nametoneofs_by_nameR.tenum_values_by_nametTestServiceWithCustomOptionstFindMethodByNameRKt file_opt1R=t Extensionst message_opt1t field_opt1t field_opt2t oneof_opt1t enum_opt1tenum_value_opt1t service_opt1t method_opt1tMETHODOPT1_VAL2tDummyMessageContainingEnumt assertTruet has_optionst assertFalse(R4tfile_descriptortmessage_descriptortfield_descriptortoneof_descriptortenum_descriptortenum_value_descriptortother_enum_value_descriptortservice_descriptortmethod_descriptort file_optionsR`tmessage_optionsRbt field_optionsRcRdt oneof_optionsRet enum_optionsRftenum_value_optionsRgtservice_optionsRhtmethod_optionsRi((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/descriptor_test.pyttestSimpleCustomOptionsŒs\                         c Csõd}d}d}d}d}d}tjj}|jƒ}|jt|jtjƒ|j||jtjƒ|j||jtj ƒ|jd|jtj ƒ|jd|jtj ƒ|j||jtj ƒ|j||jtj ƒ|jd|jtjƒ|jd|jtjƒ|j||jtjƒ|j||jtjƒtjj}|jƒ}|jt|jtjƒ|j||jtjƒ|j||jtj ƒ|j||jtj ƒ|j||jtj ƒ|j||jtj ƒ|j||jtj ƒ|j||jtjƒ|j||jtjƒ|j||jtjƒ|j||jtjƒtjj}|jƒ}|jd|jtjƒ|jd |jtjd ƒ|jd |jtjƒ|jd |jtjƒ|jd |jtjƒtj} |j| j|jtjƒtjj}|jƒ}|jd|jtjd ƒ|jd|jtjƒtjj}|jƒ}|jd|jtjd ƒ|jd|jtjƒdS(Niii?ii i@iiœÿÿÿg¢Õ$Óü°(@igûYŒBÊÀó?sHello, "World"s HelloWorldi išiôÿÿÿifÿÿÿllýÿÿÿllûÿÿÿllÿÿllÿÿÿÿllÿÿllÿÿÿÿ(RtCustomOptionMinIntegerValuesRYRKR=tFalseRatbool_optt int32_optt int64_optt uint32_optt uint64_optt sint32_optt sint64_optt fixed32_optt fixed64_optt sfixed32_optt sfixed64_opttCustomOptionMaxIntegerValuestTruetCustomOptionOtherValuestassertAlmostEqualt float_optt double_optt string_optt bytes_optRktTEST_OPTION_ENUM_TYPE2tenum_opttSettingRealsFromPositiveIntstSettingRealsFromNegativeInts( R4t kint32mint kint64mint kint32maxt kint64maxt kuint32maxt kuint64maxRpRyt dummy_enum((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/descriptor_test.pyttestDifferentCustomOptionTypesÂs¤                                      cCsYtjj}|jƒ}|jd|jtjjƒ|jd|jtjjtjƒ|jd|jtjjtj j ƒ|jd|jtj j ƒ|jd|jtj jtj ƒ|jd|jtj jjƒ|jd|jtj jjtjƒ|jd|jtj jjtj j ƒ|jd |jtj jtjjƒ|jd |jtj jtjjtjƒ|jd |jtj jtjjtj j ƒ|jd |jtjjjjƒ|jd |jtj jjƒ|jd|jtjj ƒ|jd|jtjjjƒ|jd|jtjjƒdS(Ni*iDiliÛiŽiçiÏiØiåiÎiIi³iAi ii(RtVariousComplexOptionsRYRKR=Rat complex_opt1tfootquuxtcorgetquxt complex_opt2tbaztgraulttbartgarplytComplexOptionType2tComplexOptionType4t complex_opt4twaldotfredt complex_opt3tcomplexoptiontype5tplught complexopt6txyzzy(R4Rtoptions((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/descriptor_test.pyttestComplexExtensionOptions sX                c CsÁtj}tjj}|jd}tjj}|jd}tjj}|jdƒ}|jƒj tj }|j d|j ƒ|j d|j ƒ|j d|jj ƒ|j d|jj tj j ƒ|j d|jj tjjj ƒ|j d |jƒj tjj ƒ|j d |jƒj tjj ƒ|j d |jƒj tjj ƒ|j d |jƒj tjj ƒ|j d |jƒj tjj ƒ|j d|jƒj tjj ƒdS(Nt fieldnametVALUEtMethodidtFileAnnotationtNestedFileAnnotationtFileExtensionAnnotationtEmbeddedMessageSetElementtMessageAnnotationtFieldAnnotationtEnumAnnotationtEnumValueAnnotationtServiceAnnotationtMethodAnnotation(RRYtAggregateMessageR[t AggregateEnumtvalues_by_nametAggregateServiceR_RKRatfileoptR=titstsubtfiletmsettAggregateMessageSetElementtmessage_set_extensiontmsgopttfieldopttenumoptt enumvaloptt serviceoptt methodopt( R4RoRpRqRsRtRvRwRx((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/descriptor_test.pyttestAggregateOptionsRsP              cCsótjjj}|jd|jƒjtjƒ|jd}|jd|jƒjtj ƒtjj}|j d}|jd|jƒjtj ƒ|j d}|jd|jƒjtj ƒ|jd}|jd |jƒjtjƒdS( Niét nested_fieldiêt NestedEnumiëtNESTED_ENUM_VALUEiìtnested_extensionií(RtNestedOptionTypeRRYR=RKRaRbR[RcR.RfR]Rgtextensions_by_nameRd(R4tnested_messageRÙt outer_messaget nested_enumtnested_enum_valueRÜ((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/descriptor_test.pyttestNestedOptionsƒs          cCs6|j|jj|jƒ|j|jj|jƒdS(N(R=R/RÎR+R-(R4((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/descriptor_test.pyttestFileDescriptorReferences—scCsÆ|j|jjdƒ|j|jjdƒ|j|jj|jƒ|j|jjƒ|jd|jjƒtj ƒ}|jj |ƒ|j|jj |j ƒƒ|jt jjtjƒƒdS(Nssome/filename/some.protoR tproto2(R=R+R R R(RnRmtsyntaxRRt CopyToProtot serialized_pbtSerializeToStringRRYRR;(R4R5((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/descriptor_test.pyttestFileDescriptor›s  tcppisAImmutability of descriptors is only enforced in v2 implementationcCs}tj}tjj}|jd}|jd}|jd}|jtƒ�d|_WdQX|jt ƒ�d|jd (RQRRïRRYRRS(R4tTEST_NESTED_MESSAGE_ASCII((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/descriptor_test.pyttestCopyToProto_NestedMessage¥s  cCs&d}|jtjjtj|ƒdS(Nsð name: 'TestForeignNested' field: < name: 'foreign_nested' number: 1 label: 1 # Optional type: 11 # TYPE_MESSAGE type_name: '.protobuf_unittest.TestAllTypes.NestedMessage' > (RQRtTestForeignNestedRYRRS(R4tTEST_FOREIGN_NESTED_ASCII((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/descriptor_test.pyt$testCopyToProto_ForeignNestedMessageµs  cCs&d}|jtjjtj|ƒdS(Nsð name: 'ForeignEnum' value: < name: 'FOREIGN_FOO' number: 4 > value: < name: 'FOREIGN_BAR' number: 5 > value: < name: 'FOREIGN_BAZ' number: 6 > (RQRRRYRtEnumDescriptorProto(R4tTEST_FOREIGN_ENUM_ASCII((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/descriptor_test.pyttestCopyToProto_ForeignEnumÆs  cCs&d}|jtjjtj|ƒdS(Nsç name: 'TestDeprecatedFields' field: < name: 'deprecated_int32' number: 1 label: 1 # Optional type: 5 # TYPE_INT32 options: < deprecated: true > > (RQRtTestDeprecatedFieldsRYRRS(R4tTEST_DEPRECATED_FIELDS_ASCII((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/descriptor_test.pyttestCopyToProto_OptionsÜs  cCs&d}|jtjjtj|ƒdS(Ns} name: 'TestEmptyMessageWithExtensions' extension_range: < start: 1 end: 536870912 > (RQRtTestEmptyMessageWithExtensionsRYRRS(R4t(TEST_EMPTY_MESSAGE_WITH_EXTENSIONS_ASCII((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/descriptor_test.pyttestCopyToProto_AllExtensionsïs  cCs&d}|jtjjtj|ƒdS(Ns name: 'TestMultipleExtensionRanges' extension_range: < start: 42 end: 43 > extension_range: < start: 4143 end: 4244 > extension_range: < start: 65536 end: 536870912 > (RQRR7RYRRS(R4t*TEST_MESSAGE_WITH_SEVERAL_EXTENSIONS_ASCII((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/descriptor_test.pyt!testCopyToProto_SeveralExtensionsýs  cCs+ddd}|jtjtj|ƒdS(Nsd name: 'google/protobuf/unittest_import.proto' package: 'protobuf_unittest_import' dependency: 'google/protobuf/unittest_import_public.proto' message_type: < name: 'ImportMessage' field: < name: 'd' number: 1 label: 1 # Optional type: 5 # TYPE_INT32 > > sŒenum_type: < name: 'ImportEnum' value: < name: 'IMPORT_FOO' number: 7 > value: < name: 'IMPORT_BAR' number: 8 > value: < name: 'IMPORT_BAZ' number: 9 > > enum_type: < name: 'ImportEnumForMap' value: < name: 'UNKNOWN' number: 0 > value: < name: 'FOO' number: 1 > value: < name: 'BAR' number: 2 > > options: < java_package: 'com.google.protobuf.test' optimize_for: 1 # SPEED sG cc_enable_arenas: true > public_dependency: 0 (RQRRYRR(R4t%UNITTEST_IMPORT_FILE_DESCRIPTOR_ASCII((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/descriptor_test.pyttestCopyToProto_FileDescriptors 0cCs&d}|jtjjtj|ƒdS(NsM name: 'TestService' method: < name: 'Foo' input_type: '.protobuf_unittest.FooRequest' output_type: '.protobuf_unittest.FooResponse' > method: < name: 'Bar' input_type: '.protobuf_unittest.BarRequest' output_type: '.protobuf_unittest.BarResponse' > (RQRRARYRtServiceDescriptorProto(R4tTEST_SERVICE_ASCII((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/descriptor_test.pyt!testCopyToProto_ServiceDescriptorNs  Rs It is not implemented in python.cCs5d}tjjjdƒ}|j|tj|ƒdS(Ns} name: 'Foo' input_type: '.protobuf_unittest.FooRequest' output_type: '.protobuf_unittest.FooResponse' RX(RRARYR_RQRtMethodDescriptorProto(R4RJRw((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/descriptor_test.pyt testCopyToProto_MethodDescriptoras   s!Pure python does not raise error.cCs‰tjƒ}|jttjjj|ƒ|jttjjj|ƒ|jttj jj|ƒtj ƒ}|jtt jj|ƒdS(N( RRR@RBRRRRYRçRRARSR(R4R5tproto((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/descriptor_test.pyttestCopyToProto_TypeErrorrs          (R÷RøRÿRLRQRURWRZR]R`RcReRgRjRùRúRRûRlRn(((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/descriptor_test.pyRFŒs$         ; tMakeDescriptorTestcBs5eZd„Zd„Zd„Zd„Zd„ZRS(c Csrtjƒ}d|_|jjƒ}|j|_|jjƒ}d|_|jjƒ}d|_|jjƒ}d|_d|_|j jƒ}d|_d|_t j j |_ t j j|_|j jƒ}d|_d |_t j j |_ t j j|_d|_|j jƒ}d|_d |_t j j |_ t j j|_d |_t j|ƒ}|j|jd jt j jƒ|j|jdjt j jƒ|j|jdjj|ƒ|j|jd jd jd ƒ|j|jd jd j|jd jd ƒ|j|jƒ|j|jd jƒtj ƒdkrn|j!t"ƒ�t#|jd _WdQXndS(NtFoo2tSubR=tBARiit uint64_fielditnested_message_fieldt bar_fields Foo2.Sub.FOOisFoo2.Sub.bar_fieldRë($RRR RRt nested_typeR#R$RRRtFieldDescriptortLABEL_REQUIREDRt TYPE_UINT64Rt TYPE_MESSAGEt type_namet TYPE_ENUMtMakeDescriptorR=RFtcpp_typetCPPTYPE_UINT64tCPPTYPE_MESSAGERGt nested_typesRRRnRmRRûR@RðR‚( R4tfile_descriptor_protoRRvR#t enum_type_valRt enum_fieldtresult((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/descriptor_test.pyt"testMakeDescriptorWithNestedFields‰sX                 cCs#tjƒ}d|_|jjƒ}|j|_|jjƒ}d|_|jjƒ}d|_d|_|jjƒ}d|_d|_t j j |_ t j j |_|jjƒ}d|_d|_t j j |_ t j j|_d |_t j|ƒ}|j|jd jt j jƒdS( NRXR=RriiRsiRusFoo.FOOi(RRR RRR#R$RRRRwRxRRyRR|R{R}R=RFR~R(R4R‚RR#RƒRR„R…((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/descriptor_test.pyt&testMakeDescriptorWithUnsignedIntField¸s.           cCsatjƒ}tj}|jj|ƒtj|ƒ}|jƒ}|j d|j tj j ƒdS(Nie( RRSRRÆRYRçRR}RKR=RaRÒRË(R4tdescriptor_prototaggregate_messagetreformed_descriptorR·((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/descriptor_test.pyttestMakeDescriptorWithOptionsÓs    cCsÓtjƒ}d|_dddddg}dddddg}xCtt|ƒƒD]/}|jjƒ}|d|_|||_qRWtj |ƒ}x8tt|ƒƒD]$}|j |j |j ||ƒq§WdS( NtBartfoo_footFooBartfooBaztfooFootfoobartfooBari( RRSR trangeRRRRRR}R=RFR (R4Rˆtnamestcamelcase_namesRRR…((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/descriptor_test.pyttestCamelcaseNameÝs   cCsâtjƒ}d|_ddddddg}dddddd g}xCtt|ƒƒD]/}|jjƒ}|d |_|||_qXWd |_t j |ƒ}x8tt|ƒƒD]$}|j |j |j||ƒq¶WdS( Nt TestJsonNamet field_namet fieldNamet FieldNamet _field_namet FIELD_NAMEt json_namet FIELDNAMEs@typei( RRSR R“RRRRR�RR}R=RF(R4RˆR”t json_namesRRR…((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/descriptor_test.pyt testJsonNameës      (R÷RøR†R‡R‹R–R (((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/descriptor_test.pyRo‡s  /  t__main__(Rÿt __author__R+t unittest2Rùt ImportErrortgoogle.protobufRRRRtgoogle.protobuf.internalRRRRRR RTtTestCaseR RýRRFRoR÷tmain(((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/descriptor_test.pyt s2  ÿŒ¾ûv