U
    4JeÊ  ã                   @   sZ   d Z dZddl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rVe 
¡  dS )
z6Tests for google.protobuf.internal.service_reflection.zpetar@google.com (Petar Petrov)é    N)Úunittest_pb2)Úservice_reflection)Úservicec                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚFooUnitTestc           
         s˜  G dd„ dt jƒ}G dd„ dt jƒ}d ˆ _G dd„ dtjƒ}d ˆ _‡ fdd„}|ƒ }|ƒ }|ƒ }| |t ¡ |¡ ˆ  d	|j	¡ ˆ  d ˆ j¡ d |_	tj 
¡ }| |jd
 |t ¡ |¡ ˆ  | |jd
 ¡tjk¡ ˆ  | |jd
 ¡tjk¡ ˆ  d|j	¡ ˆ  d ˆ j¡ G dd„ dtjƒ}	|	ƒ }d |_	| |t ¡ |¡ ˆ  d |j	¡ ˆ  d|j¡ d |_	| |jd
 |t ¡ |¡ ˆ  d |j	¡ ˆ  d|j¡ d S )Nc                   @   s   e Zd Zdd„ ZdS )z/FooUnitTest.testService.<locals>.MockRpcChannelc                 S   s   || _ || _|| _||ƒ d S ©N©ÚmethodÚ
controllerÚrequest)Úselfr   r	   r
   ÚresponseÚcallback© r   úT/tmp/pip-unpacked-wheel-0oacnh65/google/protobuf/internal/service_reflection_test.pyÚ
CallMethod/   s    z:FooUnitTest.testService.<locals>.MockRpcChannel.CallMethodN©Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   ÚMockRpcChannel.   s   r   c                   @   s   e Zd Zdd„ ZdS )z2FooUnitTest.testService.<locals>.MockRpcControllerc                 S   s
   || _ d S r   )Úfailure_message)r   Úmsgr   r   r   Ú	SetFailed6   s    z<FooUnitTest.testService.<locals>.MockRpcController.SetFailedN)r   r   r   r   r   r   r   r   ÚMockRpcController5   s   r   c                   @   s   e Zd ZdS )z*FooUnitTest.testService.<locals>.MyServiceN)r   r   r   r   r   r   r   Ú	MyService;   s   r   c                    s
   | ˆ _ d S r   ©Úcallback_response©r   ©r   r   r   Ú
MyCallback@   s    z+FooUnitTest.testService.<locals>.MyCallbackzMethod Foo not implemented.é   zMethod Bar not implemented.c                   @   s   e Zd Zdd„ Zdd„ ZdS )z.FooUnitTest.testService.<locals>.MyServiceImplc                 S   s
   d| _ d S ©NT)Ú
foo_called©r   Úrpc_controllerr
   Údoner   r   r   ÚFooY   s    z2FooUnitTest.testService.<locals>.MyServiceImpl.Fooc                 S   s
   d| _ d S r!   )Ú
bar_calledr#   r   r   r   ÚBar[   s    z2FooUnitTest.testService.<locals>.MyServiceImpl.BarN)r   r   r   r&   r(   r   r   r   r   ÚMyServiceImplX   s   r)   T)r   Ú
RpcChannelZRpcControllerr   r   ZTestServicer&   Z
FooRequestÚassertEqualr   ÚGetDescriptorr   ÚmethodsZ
BarRequestÚ
assertTrueZGetRequestClassZGetResponseClassZBarResponser"   r'   )
r   r   r   r   r   r$   ÚchannelZsrvcZservice_descriptorr)   r   r   r   ÚtestService-   sV    ÿ
 ÿÿÿÿ ÿzFooUnitTest.testServicec                    s¨   G dd„ dt jƒ}d ˆ _‡ fdd„}|ƒ }t |¡}d}d}ˆ  tj ¡ | ¡ ¡ | |||¡ ˆ  ˆ jtj	¡ ˆ  ||j
¡ ˆ  ||j¡ ˆ  | ¡ jd |j¡ d S )Nc                   @   s   e Zd Zdd„ ZdS )z3FooUnitTest.testServiceStub.<locals>.MockRpcChannelc                 S   s    || _ || _|| _||ƒ ƒ d S r   r   )r   r   r	   r
   Úresponse_classr   r   r   r   r   l   s    z>FooUnitTest.testServiceStub.<locals>.MockRpcChannel.CallMethodNr   r   r   r   r   r   k   s   r   c                    s
   | ˆ _ d S r   r   r   r   r   r   r   u   s    z/FooUnitTest.testServiceStub.<locals>.MyCallbackr	   r
   r   )r   r*   r   r   ZTestService_Stubr+   r,   r&   ZassertIsInstanceZFooResponser
   r	   r-   r   )r   r   r   r/   Zstubr$   r
   r   r   r   ÚtestServiceStubj   s    
ÿzFooUnitTest.testServiceStubN)r   r   r   r0   r2   r   r   r   r   r   +   s   =r   Ú__main__)Ú__doc__Ú
__author__ZunittestZgoogle.protobufr   r   r   ZTestCaser   r   Úmainr   r   r   r   Ú<module>   s   _