3 SÉLj·%ã @s¬dZdZy ddlZWnek r0ddlZYnXddlmZddlmZddlm Z ddlm Z ddlm Z dd lm Z dd lm Z Gd d „d ejƒZed kr¨ejƒdS)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@s4eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd S) ÚMessageFactoryTestcCs(tjjtjjƒ|_tjjtjjƒ|_dS)N) rÚFileDescriptorProtoÚ FromStringrÚ DESCRIPTORZ serialized_pbÚfactory_test1_fdrÚfactory_test2_fd)Úself©rú*/usr/lib/python3.6/message_factory_test.pyÚsetUp4s 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 jƒd |j d_d|j d_|j jddd�d |jj_d|jjjj_|jƒ}tjj|ƒ}|jƒ}|j||ƒ|j|ƒ}|j||ƒdS)Né*rznested message valueééZoneZtwoZthreeZfourézone deepz zero deepZhelloZworldZtestingZ123)Úpart_1Úpart_2é)Z mandatoryZnested_factory_2_enumZnested_factory_2_messageÚvalueZfactory_1_messageZfactory_1_enumZnested_factory_1_enumZnested_factory_1_messageZ scalar_valueZ list_valueÚextendÚappendZcircular_messageZgroupedÚaddrrZloopZSerializeToStringrÚFactory2Messager Ú assertEqual)rÚclsÚmsgZ serializedZ convertedZ reserializedÚresultrrrÚ_ExerciseDynamicClass:s>          z(MessageFactoryTest._ExerciseDynamicClasscCs~tjƒ}tj|ƒ}|j|jƒ|j|jƒtjƒ}|j |j dƒƒ}|j |t j kƒ|j|ƒ|j |j dƒƒ}|j||kƒdS)Nz/google.protobuf.python.internal.Factory2Message)rZDescriptorDatabaserÚDescriptorPoolÚAddr rrÚMessageFactoryZ GetPrototypeZFindMessageTypeByNameZ assertFalserrr#Ú assertTrue)rZdbÚpoolÚfactoryr Zcls2rrrÚtestGetPrototype\s    z#MessageFactoryTest.testGetPrototypecCsŒ�x„tdƒD�]v}|j|jj|jjƒtj|j|jgƒ}|jt ddgƒj t |j ƒƒƒƒ|j |dƒ|d}|jt ddgƒj t dd„|j jjj|j ƒDƒƒƒƒ|dƒ}|jjdƒ}|jjdƒ}d|j|<d |j|<|jd|j|ƒ|jd |j|ƒ|jd|jjd ƒƒtjƒd k�r\|jt|jƒt|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)Ú.0Úextrrrú ‚sz5MessageFactoryTest.testGetMessages..Ztest1Ztest2i!0ZcpprÚ)ÚrangeÚassertInr ÚnamerÚ dependencyrÚ GetMessagesr'ÚsetÚissubsetÚkeysr#r Úfiler(ZFindAllExtensionsZ ExtensionsZ_FindExtensionByNamerZ_FindExtensionByNumberrZTypeÚlenÚ assertRaisesÚ TypeError)rÚ_ZmessagesZ factory_msg1Zmsg1Zext1Zext2rrrÚtestGetMessagesjsN          z"MessageFactoryTest.testGetMessagesc Cs–tjƒ}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|jgƒWdQRX|jt|jƒddgƒdS)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 DuplicatezçExtensions "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 r1ÚpackageZ message_typerZextension_rangeÚstartÚendr%r3r0r2rÚ extensionZnumberZFieldDescriptorProtoZLABEL_OPTIONALZlabelZ type_nameZextendeer9Ú ExceptionÚstrZ exception) rr(r)Úfr!ÚrngZmsgsr,ÚcmrrrÚtestDuplicateExtensionNumberžs\                  z/MessageFactoryTest.testDuplicateExtensionNumberN)Ú__name__Ú __module__Ú __qualname__rr#r*r<rHrrrrr 2s "4r Ú__main__)Ú__doc__Ú __author__Z unittest2ZunittestÚ ImportErrorZgoogle.protobufrZgoogle.protobuf.internalrrrrrrZTestCaser rIÚmainrrrrÚ s         +