� 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#[email protected] (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