
                         N    d dl Zd dlZd dlZd dlZ G d dej                        Zy)    Nc                   R    e Zd Zed        Zd Zd Zd Zd Zd Z	d Z
d Zd	 Zd
 Zy)TestFunctionSignaturesc                     t        j                  |       }t        d |j                  j	                         D              |j
                  |j                  u rt        fS |j
                  fS )Nc              3     K   | ]  }|j                   |j                  |j                  u rt        n|j                  |j                  |j                  u rt        n|j                  t        |j                        j                         f  y wN)namedefaultemptyEllipsis
annotationstrkindlower).0params     ;platform/gsutil/third_party/funcsigs/tests/test_funcsigs.py	<genexpr>z3TestFunctionSignatures.signature.<locals>.<genexpr>   sq      J
 2I zz$)MMU[[$@emm$)$4$4$C=B=M=M5::,,.	0
 2Is   BB)inspect	signaturetuple
parametersvaluesreturn_annotationr
   r   )funcsigs     r   r   z TestFunctionSignatures.signature   sr    % J
 251F1F1HJ J !22cii?I 	I 251F1FI 	I    c                 X    d }| j                  | j                  |      dt        f       y )Nc                       y r    r   r   r   testz8TestFunctionSignatures.test_zero_arguments.<locals>.test       r   r   assertEqualr   r   selfr    s     r   test_zero_argumentsz*TestFunctionSignatures.test_zero_arguments   s'    	-X	 r   c                 r    d }| j                  | j                  |      dt        t        dfft        f       y )Nc                      y r   r   as    r   r    zDTestFunctionSignatures.test_single_positional_argument.<locals>.test   r!   r   r*   positional_or_keywordr"   r$   s     r   test_single_positional_argumentz6TestFunctionSignatures.test_single_positional_argument   s6    	-8-DEH(S	Ur   c                 l    dd}| j                  | j                  |      dd t        dfft        f       y )Nc                      y r   r   r)   s    r   r    zATestFunctionSignatures.test_single_keyword_argument.<locals>.test$   r!   r   r*   r+   r   r"   r$   s     r   test_single_keyword_argumentz3TestFunctionSignatures.test_single_keyword_argument#   s6    	-x)@ADhO	Qr   c                 r    d }| j                  | j                  |      dt        t        dfft        f       y )Nc                       y r   r   argss    r   r    z2TestFunctionSignatures.test_var_args.<locals>.test*   r!   r   r3   var_positionalr"   r$   s     r   test_var_argsz$TestFunctionSignatures.test_var_args)   s6    	-Hh0@ADhO	Qr   c                 r    d }| j                  | j                  |      dt        t        dfft        f       y )Nc                       y r   r   )kwargss    r   r    z7TestFunctionSignatures.test_keywords_args.<locals>.test0   r!   r   r8   var_keywordr"   r$   s     r   test_keywords_argsz)TestFunctionSignatures.test_keywords_args/   s5    	-h-@CXN	Pr   c           
          d	d}| j                  | j                  |      dt        t        dfdd t        dfdt        t        dfdt        t        dfft        f       y )
Nc                      y r   r   )r*   br3   r8   s       r   r    z<TestFunctionSignatures.test_multiple_arguments.<locals>.test6   r!   r   r*   r+   r=   r3   r4   r8   r9   r   r"   r$   s     r   test_multiple_argumentsz.TestFunctionSignatures.test_multiple_arguments5   sb    	-(H&=>$"9:Xx)9:x=9	1
 0 	r   c                 B    | j                  t        j                         y r   )
assertTruer   __version__r%   s    r   test_has_versionz'TestFunctionSignatures.test_has_version?   s    ++,r   c                 .    t        j                  d       y )Nz../README.rst)doctesttestfilerB   s    r   test_readmez"TestFunctionSignatures.test_readmeB   s     	)r   c                    d} G d dt               }| j                  | j                  |j                        dt        t        |fft        f       | j                  | j                  |j
                        dt        t        |fdt        t        dfft        f       | j                  | j                  |j                        dt        t        dfft        f       y )Nr+   c                       e Zd Zd Zd Zd Zy)8TestFunctionSignatures.test_unbound_method.<locals>.Testc                      y r   r   rB   s    r   methodz?TestFunctionSignatures.test_unbound_method.<locals>.Test.methodK       r   c                      y r   r   )r%   r*   s     r   method_with_argszITestFunctionSignatures.test_unbound_method.<locals>.Test.method_with_argsM   rM   r   c                       y r   r   r2   s    r   method_with_varargszLTestFunctionSignatures.test_unbound_method.<locals>.Test.method_with_varargsO   rM   r   N)__name__
__module____qualname__rL   rO   rQ   r   r   r   TestrJ   J   s    r   rU   r%   r*   r3   r4   )objectr#   r   rL   r   rO   rQ   )r%   	self_kindrU   s      r   test_unbound_methodz*TestFunctionSignatures.test_unbound_methodH   s    +		6 	 	NN4;;'(I698D	F 	NN4001x95Hh(?@	
 	NN4334x+;<>I	Kr   N)rR   rS   rT   staticmethodr   r&   r,   r/   r5   r:   r>   rC   rG   rX   r   r   r   r   r   	   sH    	I 	I UQQP-*Kr   r   )	unittest2unittestrE   sysfuncsigsr   TestCaser   r   r   r   <module>r_      s'      
 RKX.. RKr   