3 SLj% @sdZdZy ddlZWnek r0ddlZYnXddlmZddlmZddlm Z ddlm Z ddlm Z dd lm Z dd lm Z Gd d d ejZed krejdS)z*Tests for google.protobuf.message_factory.z"matthewtoia@google.com (Matt Toia)N)descriptor_pb2)api_implementation)factory_test1_pb2)factory_test2_pb2)descriptor_database)descriptor_pool)message_factoryc@s4eZdZddZddZddZddZd d Zd S) MessageFactoryTestcCs(tjjtjj|_tjjtjj|_dS)N) rFileDescriptorProto FromStringr DESCRIPTORZ serialized_pbfactory_test1_fdrfactory_test2_fd)selfr*/usr/lib/python3.6/message_factory_test.pysetUp4s zMessageFactoryTest.setUpcCs<|}d|_d|_d|j_d|j_d|j_d|jj_d|j_|jj j dddg|jj j d d|_d|_d|j_d|j _d |j j _d |j _d |_|j j d ddg|j j d|j jd |j d_d|j d_|j jdddd |jj_d|jjjj_|j}tjj|}|j}|j|||j|}|j||dS)N*rznested message valueZoneZtwoZthreeZfourzone deepz zero deepZhelloZworldZtestingZ123)part_1part_2)Z mandatoryZnested_factory_2_enumZnested_factory_2_messagevalueZfactory_1_messageZfactory_1_enumZnested_factory_1_enumZnested_factory_1_messageZ scalar_valueZ list_valueextendappendZcircular_messageZgroupedaddrrZloopZSerializeToStringrFactory2Messager assertEqual)rclsmsgZ serializedZ convertedZ reserializedresultrrr_ExerciseDynamicClass:s>          z(MessageFactoryTest._ExerciseDynamicClasscCs~tj}tj|}|j|j|j|jtj}|j |j d}|j |t j k|j||j |j d}|j||kdS)Nz/google.protobuf.python.internal.Factory2Message)rZDescriptorDatabaserDescriptorPoolAddr rrMessageFactoryZ GetPrototypeZFindMessageTypeByNameZ assertFalserrr# assertTrue)rZdbpoolfactoryr Zcls2rrrtestGetPrototype\s    z#MessageFactoryTest.testGetPrototypecCsxtdD]v}|j|jj|jjtj|j|jg}|jt ddgj t |j |j |d|d}|jt ddgj t dd|j jjj|j D|d}|jjd}|jjd}d|j|<d |j|<|jd|j||jd |j||jd|jjd tjd kr\|jt|jt|j|jt|jjd |jt|jjd q |jd|jjd |jd|jjd q WdS)Nrz/google.protobuf.python.internal.Factory2Messagez/google.protobuf.python.internal.Factory1Messagez>google.protobuf.python.internal.Factory2Message.one_more_fieldz-google.protobuf.python.internal.another_fieldcss|] }|jVqdS)N)Z full_name).0extrrr sz5MessageFactoryTest.testGetMessages..Ztest1Ztest2i!0Zcppr)rangeassertInr namer dependencyr GetMessagesr'setissubsetkeysr#r filer(ZFindAllExtensionsZ ExtensionsZ_FindExtensionByNamerZ_FindExtensionByNumberrZTypelen assertRaises TypeError)r_ZmessagesZ factory_msg1Zmsg1Zext1Zext2rrrtestGetMessagesjsN          z"MessageFactoryTest.testGetMessagesc Cstj}tj|d}tj}d|_d|_|jj }d|_|j j }d|_ d|_ |j ||j|jg}|jd|tj}d|_d|_|jjd|jj }d |_|jj }d |_d |_tjj|_d |_d|_|j ||j|jg}|jd |tj}d |_d|_|jjd|jj }d|_|jj }d |_d |_tjj|_d|_d|_|j ||jt}|j|jgWdQRX|jt|jddgdS)N)r(z(google/protobuf/internal/container.protozgoogle.protobuf.python.internal Containerr z)google.protobuf.python.internal.Containerz(google/protobuf/internal/extension.protoZ ExtensionZextension_fieldrz)google.protobuf.python.internal.Extensionz(google/protobuf/internal/duplicate.protoZ DuplicatezExtensions "google.protobuf.python.internal.Duplicate.extension_field" and "google.protobuf.python.internal.Extension.extension_field" both try to extend message type "google.protobuf.python.internal.Container" with field number 2.z!Double registration of Extensions)rr$rr&rr r1packageZ message_typerZextension_rangestartendr%r3r0r2r extensionZnumberZFieldDescriptorProtoZLABEL_OPTIONALZlabelZ type_nameZextendeer9 ExceptionstrZ exception) rr(r)fr!rngZmsgsr,cmrrrtestDuplicateExtensionNumbers\                  z/MessageFactoryTest.testDuplicateExtensionNumberN)__name__ __module__ __qualname__rr#r*r<rHrrrrr 2s "4r __main__)__doc__ __author__Z unittest2Zunittest ImportErrorZgoogle.protobufrZgoogle.protobuf.internalrrrrrrZTestCaser rImainrrrr s         +