Duac@sdZdZddlZyddlZWnek rGddlZnXddlmZddlmZddlm Z ddlm Z ddl m Z dd l m Z dd lmZdd lmZdd lmZdd lmZdZdejfdYZdefdYZdejfdYZdejfdYZdejfdYZedkrejndS(s1Unittest for google.protobuf.internal.descriptor.s#robinson@google.com (Will Robinson)iN(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' tDescriptorTestcBseZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZejejdkpejdkddZRS(c Cstjdddd}|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 tjjS(N(RtDefaultR((R4((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/descriptor_test.pyR'bscCs|j|jjddd|j|jjdjdj|jjdd|jt|jjddWdQX|jt|jjddWdQX|jt|jjWdQXdS(NRiRitNoneEnum( 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|jjdjdS(Ni(R=R/tvaluesR(R4((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/descriptor_test.pyttestEnumFixupstscCs=|j|j|jjdj|j|j|jjdS(Ni(R=R-tfieldstcontaining_typeR/(R4((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/descriptor_test.pyttestContainingTypeFixupsws cCs|j|j|jjdS(N(R=R1R3tcontaining_service(R4((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/descriptor_test.pyttestContainingServiceFixups{scCs|j|jjtj|j|jjdjtj|j|jjtj|j|jj djtj |j|j jtj |j|j jtjdS(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|jdS(Ntfield1tAnOneoftAnEnumt ANENUM_VAL2t ANENUM_VAL1tFool` il-ai*iii{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.pyttestSimpleCustomOptionss\                         c Csd}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||jtjtjj}|j}|jt|jtj|j||jtj|j||jtj |j||jtj |j||jtj |j||jtj |j||jtj |j||jtj|j||jtj|j||jtj|j||jtjtjj}|j}|jd|jtj|jd |jtjd |jd |jtj|jd |jtj|jd |jtjtj} |j| j|jtjtjj}|j}|jd|jtjd |jd|jtjtjj}|j}|jd|jtjd |jd|jtjdS(Niii?ii i@iig$(@igYB?sHello, "World"s HelloWorldi iiifllllllllllll(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.pyttestDifferentCustomOptionTypess                                      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|jtjjdS(Ni*iDiliiiiiiiiIiiAi 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 Cstj}tjj}|jd}tjj}|jd}tjj}|jd}|jj tj }|j d|j |j d|j |j d|jj |j d|jj tj j |j d|jj tjjj |j d |jj tjj |j d |jj tjj |j d |jj tjj |j d |jj tjj |j d |jj tjj |j d|jj 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              cCstjjj}|jd|jjtj|jd}|jd|jjtj tjj}|j d}|jd|jjtj |j d}|jd|jjtj |jd}|jd |jjtjdS( Nit nested_fieldit NestedEnumitNESTED_ENUM_VALUEitnested_extensioni(RtNestedOptionTypeRRYR=RKRaRbR[RcR.RfR]Rgtextensions_by_nameRd(R4tnested_messageRt outer_messaget nested_enumtnested_enum_valueR((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/descriptor_test.pyttestNestedOptionss          cCs6|j|jj|j|j|jj|jdS(N(R=R/RR+R-(R4((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/descriptor_test.pyttestFileDescriptorReferencesscCs|j|jjd|j|jjd|j|jj|j|j|jj|jd|jjtj }|jj ||j|jj |j |jt jjtjdS(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.pyttestFileDescriptors  tcppisAImmutability of descriptors is only enforced in v2 implementationcCs}tj}tjj}|jd}|jd}|jd}|jtd|_WdQX|jt d|jd (RQRRRRYRRS(R4tTEST_NESTED_MESSAGE_ASCII((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/descriptor_test.pyttestCopyToProto_NestedMessages  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_ForeignNestedMessages  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_ForeignEnums  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_Optionss  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_AllExtensionss  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_SeveralExtensionss  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 > > senum_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.cCstj}|jttjjj||jttjjj||jttj jj|tj }|jtt jj|dS(N( RRR@RBRRRRYRRRARSR(R4R5tproto((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/descriptor_test.pyttestCopyToProto_TypeErrorrs          (RRRRLRQRURWRZR]R`RcReRgRjRRRRRlRn(((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/descriptor_test.pyRFs$         ; tMakeDescriptorTestcBs5eZdZdZdZdZdZRS(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 jtj 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_typesRRRnRmRRR@RR( R4tfile_descriptor_protoRRvR#t enum_type_valRt enum_fieldtresult((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/descriptor_test.pyt"testMakeDescriptorWithNestedFieldssX                 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 jdS( NRXR=RriiRsiRusFoo.FOOi(RRR RRR#R$RRRRwRxRRyRR|R{R}R=RFR~R(R4RRR#RRRR((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/descriptor_test.pyt&testMakeDescriptorWithUnsignedIntFields.           cCsatj}tj}|jj|tj|}|j}|j d|j tj j dS(Nie( RRSRRRYRRR}RKR=RaRR(R4tdescriptor_prototaggregate_messagetreformed_descriptorR((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/descriptor_test.pyttestMakeDescriptorWithOptionss    cCstj}d|_dddddg}dddddg}xCtt|D]/}|jj}|d|_|||_qRWtj |}x8tt|D]$}|j |j |j ||qWdS( NtBartfoo_footFooBartfooBaztfooFootfoobartfooBari( RRSR trangeRRRRRR}R=RFR (R4Rtnamestcamelcase_namesRRR((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/descriptor_test.pyttestCamelcaseNames   cCstj}d|_ddddddg}dddddd g}xCtt|D]/}|jj}|d |_|||_qXWd |_t j |}x8tt|D]$}|j |j |j||qWdS( Nt TestJsonNamet field_namet fieldNamet FieldNamet _field_namet FIELD_NAMEt json_namet FIELDNAMEs@typei( RRSR RRRRRRRR}R=RF(R4RRt json_namesRRR((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/descriptor_test.pyt testJsonNames      (RRRRRRR(((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/descriptor_test.pyRos  /  t__main__(Rt __author__R+t unittest2Rt ImportErrortgoogle.protobufRRRRtgoogle.protobuf.internalRRRRRR RTtTestCaseR RRRFRoRtmain(((sL/usr/lib/python2.7/site-packages/google/protobuf/internal/descriptor_test.pyt s2  v