o
    ‹¨ÊhQ%  ã                   @   s®   d Z dZzddlZW n ey   ddlZY nw ddlmZ ddlmZ ddlm	Z	 ddlm
Z
 ddlmZ dd	lmZ dd
lmZ G dd„ dejƒZedkrUe ¡  dS dS )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                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚMessageFactoryTestc                 C   s(   t j tjj¡| _t j tjj¡| _d S ©N)	r   ÚFileDescriptorProtoÚ
FromStringr   Ú
DESCRIPTORÚserialized_pbÚfactory_test1_fdr   Úfactory_test2_fd)Úself© r   ú_/var/www/html/env/lib/python3.10/site-packages/google/protobuf/internal/message_factory_test.pyÚsetUp5   s   ÿ
ÿzMessageFactoryTest.setUpc                 C   s8  |ƒ }d|_ d|_d|j_d|j_d|j_d|jj_d|j_|jj	 
g d¢¡ |jj	 d¡ d|_d|_d|j_d|j_ d|jj_ d	|j_d
|_|j	 
g d¢¡ |j	 d¡ |j ¡  d|jd _d|jd _|jjddd� d|jj_ d|jjjj_ | ¡ }tj |¡}| ¡ }|  ||¡ | |¡}|  ||¡ d S )Né*   r   znested message valueé   é   )ÚoneÚtwoÚthreeÚfouré   zone deepz	zero deep)r   r   r   r   ÚhelloÚworldÚtestingÚ123)Úpart_1Úpart_2é   )Ú	mandatoryÚnested_factory_2_enumÚnested_factory_2_messageÚvalueÚfactory_1_messageÚfactory_1_enumÚnested_factory_1_enumÚnested_factory_1_messageÚscalar_valueÚ
list_valueÚextendÚappendÚcircular_messageÚgroupedÚaddr!   r"   ÚloopÚSerializeToStringr   ÚFactory2Messager   ÚassertEqual)r   ÚclsÚmsgÚ
serializedÚ	convertedÚreserializedÚresultr   r   r   Ú_ExerciseDynamicClass;   s@   ÿ



z(MessageFactoryTest._ExerciseDynamicClassc                 C   s~   t  ¡ }t |¡}| | j¡ | | j¡ t ¡ }| 	| 
d¡¡}|  |tju ¡ |  |¡ | 	| 
d¡¡}|  ||u ¡ d S )Nú/google.protobuf.python.internal.Factory2Message)r   ÚDescriptorDatabaser   ÚDescriptorPoolÚAddr   r   r   ÚMessageFactoryÚGetPrototypeÚFindMessageTypeByNameÚassertFalser   r5   r=   Ú
assertTrue)r   ÚdbÚpoolÚfactoryr7   Úcls2r   r   r   ÚtestGetPrototype]   s   
ÿ
ÿz#MessageFactoryTest.testGetPrototypec              
   C   sz  t dƒD ]¶}|  | jj| jj¡ t | j| jg¡}|  t	ddgƒ 
t	| ¡ ƒ¡¡ |  |d ¡ |d }|  t	ddgƒ 
t	dd„ |jjj |j¡D ƒƒ¡¡ |d ƒ }|j d¡}|j d¡}d|j|< d	|j|< |  d|j| ¡ |  d	|j| ¡ |  d |j d
¡¡ |  tt|j¡ t ¡ dkr¦|  t|jjd¡ |  t|jjd¡ q|  d |j d¡¡ |  d |j d¡¡ qd S )Nr   r>   z/google.protobuf.python.internal.Factory1Messagez>google.protobuf.python.internal.Factory2Message.one_more_fieldz-google.protobuf.python.internal.another_fieldc                 s   s   � | ]}|j V  qd S r
   )Ú	full_name)Ú.0Úextr   r   r   Ú	<genexpr>‚   s
   € ÿ
ÿz5MessageFactoryTest.testGetMessages.<locals>.<genexpr>Útest1Útest2i!0  Úcppr   Ú )ÚrangeÚassertInr   Únamer   Ú
dependencyr   ÚGetMessagesrF   ÚsetÚissubsetÚkeysr=   r   ÚfilerH   ÚFindAllExtensionsÚ
ExtensionsÚ_FindExtensionByNamer6   Ú_FindExtensionByNumberÚassertRaisesÚ	TypeErrorÚlenr   ÚType)r   Ú_ÚmessagesÚfactory_msg1Úmsg1Úext1Úext2r   r   r   ÚtestGetMessagesk   sr   
ÿÿÿýÿÿÿ

ÿþþ
ÿÿ


ÿÿÿ
ÿ
ÿÓz"MessageFactoryTest.testGetMessagesc           	      C   sª  t  ¡ }tj|d�}t ¡ }d|_d|_|j 	¡ }d|_|j
 	¡ }d|_d|_| |¡ | |jg¡}|  d|¡ t ¡ }d|_d|_|j d¡ |j 	¡ }d	|_|j 	¡ }d
|_d|_tjj|_d	|_d|_| |¡ | |jg¡}|  d|¡ t ¡ }d|_d|_|j d¡ |j 	¡ }d|_|j 	¡ }d
|_d|_tjj|_d|_d|_| |¡ |  t¡�}| |jg¡ W d   ƒ n1 sÃw   Y  |  t|jƒddg¡ d S )N)rH   z(google/protobuf/internal/container.protozgoogle.protobuf.python.internalÚ	Containerr   é
   z)google.protobuf.python.internal.Containerz(google/protobuf/internal/extension.protoÚ	ExtensionÚextension_fieldr   z)google.protobuf.python.internal.Extensionz(google/protobuf/internal/duplicate.protoÚ	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)r   r@   r   rB   r   r   rV   ÚpackageÚmessage_typer2   Úextension_rangeÚstartÚendrA   rX   rU   rW   r/   Ú	extensionÚnumberÚFieldDescriptorProtoÚLABEL_OPTIONALÚlabelÚ	type_nameÚextendeera   Ú	ExceptionÚstrÚ	exception)	r   rH   rI   Úfr8   ÚrngÚmsgsrN   Úcmr   r   r   ÚtestDuplicateExtensionNumber�   sb   










ÿúÿz/MessageFactoryTest.testDuplicateExtensionNumberN)Ú__name__Ú
__module__Ú__qualname__r   r=   rK   rk   r„   r   r   r   r   r	   3   s    "2r	   Ú__main__)Ú__doc__Ú
__author__Ú	unittest2ÚunittestÚImportErrorÚgoogle.protobufr   Úgoogle.protobuf.internalr   r   r   r   r   r   ÚTestCaser	   r…   Úmainr   r   r   r   Ú<module>   s&    ÿ )ÿ