
Én¤U²n  ã               @   s
  d  d l  Z d  d l m Z d  d l m Z m Z m Z m Z m	 Z	 m
 Z
 m Z d  d l m Z m Z d  d l m Z Gd d „  d e ƒ Z Gd d	 „  d	 e j ƒ Z Gd
 d „  d e j ƒ Z Gd d „  d e j ƒ Z Gd d „  d e j ƒ Z e d k re j ƒ  d S)é    N)ÚinPy3k)ÚcallÚcreate_autospecÚ	MagicMockÚMockÚANYÚpatchÚPropertyMock)Ú_CallÚ	_CallList)Údatetimec               @   s7   e  Z d  Z d d „  Z d d „  Z d d d „ Z d S)Ú	SomeClassc             C   s   d  S)N© )ÚselfÚaÚbr   r   ú8/usr/lib/python3/dist-packages/mock/tests/testhelpers.pyÚone   s    zSomeClass.onec             C   s   d  S)Nr   )r   r   r   r   Útwo   s    zSomeClass.twoNc             C   s   d  S)Nr   )r   r   r   r   r   Úthree   s    zSomeClass.three)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r   r      s   r   c               @   s@   e  Z d  Z d d „  Z d d „  Z d d „  Z d d „  Z d	 S)
ÚAnyTestc             C   s]   |  j  t t ƒ  ƒ t ƒ  } | t ƒ | j t ƒ t ƒ  } | d t ƒ | j d t ƒ d  S)NÚfoo)ÚassertEqualr   Úobjectr   Úassert_called_with)r   Úmockr   r   r   Útest_any   s    	
	zAnyTest.test_anyc             C   s0   |  j  t t ƒ d ƒ |  j  t t ƒ d ƒ d  S)Nz<ANY>)r   Úreprr   Ústr)r   r   r   r   Ú	test_repr'   s    zAnyTest.test_reprc             C   s<   t  ƒ  } | t j ƒ  d t j ƒ  ƒ| j t d t ƒd  S)Nr   )r   r   Únowr   r   )r   r   r   r   r   Útest_any_and_datetime,   s    	zAnyTest.test_any_and_datetimec          	   C   s  t  ƒ  } t j ƒ  } Gd d „  d t ƒ } xæ t j ƒ  | ƒ  f D]Ï } | j ƒ  | | d | d | ƒ| j | d | d | ƒ| ƒ  j d | d | ƒ t t d t d t ƒt j t d t d t ƒt ƒ  t ƒ  j d t d t ƒ g } |  j | | j	 ƒ |  j | j	 | ƒ qA Wd  S)	Nc               @   s(   e  Z d  Z d d „  Z d d „  Z d S)z9AnyTest.test_any_mock_calls_comparison_order.<locals>.Fooc             S   s   d S)NFr   )r   Úotherr   r   r   Ú__eq__7   s    z@AnyTest.test_any_mock_calls_comparison_order.<locals>.Foo.__eq__c             S   s   d S)NTr   )r   r%   r   r   r   Ú__ne__9   s    z@AnyTest.test_any_mock_calls_comparison_order.<locals>.Foo.__ne__N)r   r   r   r&   r'   r   r   r   r   ÚFoo6   s   r(   r   ÚbarZzingaZalphaZa1Zz99)
r   r   r#   r   Ú
reset_mockÚmethodr   r   r   Ú
mock_calls)r   r   Údr(   Úexpectedr   r   r   Ú$test_any_mock_calls_comparison_order3   s    	
$z,AnyTest.test_any_mock_calls_comparison_orderN)r   r   r   r   r"   r$   r/   r   r   r   r   r      s   r   c               @   sÜ   e  Z d  Z d d „  Z d d „  Z d d „  Z d d „  Z d	 d
 „  Z d d „  Z d d „  Z	 d d „  Z
 d d „  Z d d „  Z d d „  Z d d „  Z d d „  Z d d „  Z d d „  Z d d  „  Z d! d" „  Z d# S)$ÚCallTestc             C   só  t  ƒ  } |  j | t  ƒ  ƒ |  j | t  d ƒ ƒ |  j | t  f  f ƒ ƒ |  j | t  i  f ƒ ƒ |  j | t  d f  f ƒ ƒ |  j | t  d i  f ƒ ƒ |  j | t  d f  i  f ƒ ƒ |  j | t  d ƒ ƒ |  j | t  d f  f ƒ ƒ |  j | t  d i  f ƒ ƒ |  j | t  d f  i  f ƒ ƒ t  d ƒ } |  j | t  d ƒ ƒ |  j | t  d ƒ ƒ |  j | t  d i  f ƒ ƒ |  j | t  d d i  f ƒ ƒ t  d ƒ } |  j | t  d ƒ ƒ |  j | t  d d i  f ƒ ƒ t  d ƒ } |  j | t  d ƒ ƒ |  j | t  d d i  f ƒ ƒ |  j | t  d  ƒ ƒ |  j | t  d d! i  f ƒ ƒ t  d
 d i f ƒ } |  j | t  d f  d
 d i f ƒ ƒ |  j | t  d d
 d i f ƒ ƒ |  j | t  f  d
 d i f ƒ ƒ |  j | t  d
 d i f ƒ ƒ d  S)"NÚ r   r)   ÚbazZspamé   é   é   é   r   )r1   )úfoo©r3   r4   r5   )r8   ©r3   r4   r5   )r9   ©r3   r4   r5   )r1   r:   )r3   r4   r5   )r3   r4   r5   ©r3   r4   r6   )r;   ©r3   r4   r5   )r1   r<   )r3   r4   r5   ©r3   r4   r6   )r7   r=   ©r3   r4   r6   )r1   r>   )r3   r4   r6   ©r3   r4   r6   )zbarr?   )r3   r4   r6   )r
   r   ÚassertNotEqual)r   Úkallr   r   r   Útest_call_with_callO   s<    	%""zCallTest.test_call_with_callc             C   s˜   t  ƒ  } |  j | f  ƒ |  j | d ƒ |  j | f  f ƒ |  j | d f  f ƒ |  j | d f  i  f ƒ |  j | d i  f ƒ |  j | i  f ƒ d  S)Nr   )zfoo)r
   r   )r   Úargsr   r   r   Útest_empty__Callt   s    	zCallTest.test_empty__Callc             C   sà   t  d f  i  f ƒ } |  j | d ƒ |  j | d f  f ƒ |  j | d f  i  f ƒ |  j | d i  f ƒ |  j | f  f ƒ |  j | f  ƒ |  j | i  f ƒ |  j | d ƒ |  j | d f  f ƒ |  j | d i  f ƒ d  S)Nr   r)   )zfoo)zbar)r
   r   r@   )r   rC   r   r   r   Útest_named_empty_call€   s    zCallTest.test_named_empty_callc             C   se   t  d i  f ƒ } |  j | d ƒ |  j | d	 ƒ |  j | d d
 i  f ƒ |  j | d i  f ƒ d  S)Nr3   r4   r5   r   )r3   r4   r5   ©r3   r4   r5   )rF   ©r3   r4   r5   )zfoorG   )r3   r4   r5   )r3   r4   r5   )r
   r   )r   rC   r   r   r   Útest_call_with_args   s
    zCallTest.test_call_with_argsc             C   sh   t  d d i  f ƒ } |  j | d ƒ |  j | d d i  f ƒ |  j | d
 ƒ |  j | d i  f ƒ d  S)Nr   r3   r4   r5   )r3   r4   r5   ©r3   r4   r5   )zfoorI   )r3   r4   r5   ©r3   r4   r5   )rJ   )r3   r4   r5   )r
   r   r@   )r   rC   r   r   r   Útest_named_call_with_args™   s
    z"CallTest.test_named_call_with_argsc          	   C   s¹   t  f  t d d d d ƒ f ƒ } |  j | t d d d d ƒ f ƒ |  j | d t d d d d ƒ f ƒ |  j | d f  t d d d d ƒ f ƒ |  j | f  t d d d d ƒ f ƒ d  S)Nr   r5   r   r6   r   )r
   Údictr   )r   rC   r   r   r   Útest_call_with_kwargs£   s
    !"%(zCallTest.test_call_with_kwargsc          	   C   s¼   t  d f  t d d d d ƒ f ƒ } |  j | d t d d d d ƒ f ƒ |  j | d f  t d d d d ƒ f ƒ |  j | t d d d d ƒ f ƒ |  j | f  t d d d d ƒ f ƒ d  S)Nr   r   r5   r   r6   )r
   rL   r   r@   )r   rC   r   r   r   Útest_named_call_with_kwargs¬   s
    $%("z$CallTest.test_named_call_with_kwargsc             C   sm   t  d i  f ƒ } |  j | t d d d ƒ ƒ |  j t d d d ƒ | ƒ |  j t d d d ƒ | g ƒ d  S)Nr3   r4   r5   )r3   r4   r5   )r
   r   r   ÚassertIn)r   rC   r   r   r   Ú#test_call_with_args_call_empty_name¶   s    z,CallTest.test_call_with_args_call_empty_namec             C   ss   |  j  t d ƒ t d d ƒ ƒ |  j t d ƒ t d d d ƒ k ƒ |  j t d i  f ƒ t d d d ƒ k ƒ d  S)	Nr3   r4   r5   ©r3   r4   r5   )rQ   ©r3   r4   r5   )rR   )r3   r4   )r@   r
   r   ÚassertFalseZ
assertTrue)r   r   r   r   Útest_call_ne½   s    %zCallTest.test_call_nec             C   sP   t  d ƒ } x= d d  |  t f D]) } |  j | | ƒ |  j | | k ƒ q Wd  S)Nr3   r4   r5   ©r3   r4   r5   )rU   )r
   Úintr@   rS   )r   rA   Úvaluer   r   r   Útest_call_non_tuplesÃ   s    zCallTest.test_call_non_tuplesc             C   sí  |  j  t t ƒ  ƒ d ƒ |  j  t t d ƒ ƒ d ƒ |  j  t t d d d i f ƒ ƒ d	 ƒ |  j  t t d
 d d d i f ƒ ƒ d ƒ |  j  t t ƒ d ƒ |  j  t t ƒ d ƒ |  j  t t ƒ  ƒ d ƒ |  j  t t d ƒ ƒ d ƒ |  j  t t d d ƒ ƒ d ƒ |  j  t t ƒ  j ƒ d ƒ |  j  t t d ƒ j j d d ƒ j ƒ d ƒ |  j  t t ƒ  j d d d d ƒƒ d ƒ |  j  t t ƒ  ƒ  ƒ d ƒ |  j  t t d ƒ d ƒ ƒ d ƒ |  j  t t ƒ  ƒ  j ƒ  j j	 d ƒ ƒ d ƒ d  S)Nzcall()r   z
call.foo()r3   r4   r5   r   r   zcall(1, 2, 3, a='b')r)   zcall.bar(1, 2, 3, a='b')r   zcall(1)ZzzÚthingzcall(zz='thing')z
call().foozcall().foo.bar().bingzcall().foo(1, 2, a=3)zcall()()z	call()(2)zcall()().bar().baz.beep(1))zfoo)r3   r4   r5   )r3   r4   r5   )
r   r    r
   r   r!   r   r)   Úbingr2   Úbeep)r   r   r   r   r"   Ê   s,    !$'"!zCallTest.test_reprc             C   sº   |  j  t ƒ  d f  i  f ƒ |  j  t d d d d d d ƒd d d d d d i f ƒ t ƒ  } | d d	 d ƒ | d
 d d d ƒ |  j  | j t d d	 d ƒ t d
 d d d ƒ g ƒ d  S)Nr1   r   r)   r   r5   r   r6   r3   r4   r   r   é   )zfoozbar)r   r   r   Úcall_args_list)r   r   r   r   r   Ú	test_callé   s    	zCallTest.test_callc             C   sÆ   |  j  t j d ƒ d d i  f ƒ |  j  t j j d d ƒ d f  d d i f ƒ t ƒ  } | j d d d ƒ | j j d d d	 d
 ƒ |  j  | j t j d d d ƒ t j j d d d	 d
 ƒ g ƒ d  S)Nr3   r   ÚfishZeggszbar.bazr4   r5   r   r   r\   )r3   )r   r   r   r)   r2   r   Úmethod_calls)r   r   r   r   r   Útest_attribute_callô   s    "	zCallTest.test_attribute_callc          	   C   sŽ  t  d ƒ j d ƒ j d d d ƒ} |  j | d d	 t d d ƒ f ƒ t ƒ  } | d d d d d d ƒ|  j | j t  d d d d d d ƒƒ |  j | j t  d d d ƒ ƒ |  j | j t  d d d d d d ƒg ƒ |  j | j	 t  d d d d d d ƒg ƒ t ƒ  } | j d ƒ j ƒ  ƒ  j
 j d d ƒ t  j d ƒ j ƒ  ƒ  j
 j d d ƒ } |  j | j	 d
 | ƒ |  j | j	 | j ƒ  ƒ d  S)Nr3   r4   r5   r   r6   z().foo().barr   r\   )r5   éÿÿÿÿ)r   r   r)   r   rL   r   Ú	call_argsr@   r]   r,   r2   r[   Ú	call_list)r   Úresultr   Z	last_callr   r   r   Útest_extended_call   s    $"	(++	%'zCallTest.test_extended_callc             C   sV  t  ƒ  } | d ƒ |  j t d ƒ j ƒ  | j ƒ t  ƒ  } | d ƒ j d ƒ |  j t d ƒ j d ƒ j ƒ  | j ƒ t  ƒ  } | d ƒ j d ƒ d ƒ |  j t d ƒ j d ƒ d ƒ j ƒ  | j ƒ t  ƒ  } t | d ƒ j d ƒ d ƒ j j j	 d ƒ d ƒ ƒ t d ƒ j d ƒ d ƒ j j j	 d ƒ d ƒ j
 ƒ  } |  j | j ƒ  | j ƒ d  S)Nr3   r4   r5   r6   é   )r   r   r   rd   r,   r+   rV   r   r)   r2   Ú__int__)r   r   rA   r   r   r   Útest_call_list  s    	
	
	$
	46zCallTest.test_call_listc             C   sS   |  j  t t ƒ t ƒ  } t | ƒ |  j  | j t g ƒ |  j  t g | j ƒ d  S)N)r   r   r   r   rV   r,   )r   Úmr   r   r   Útest_call_any)  s
    	
zCallTest.test_call_anyc             C   sŽ   t  d d d i f d d ƒ} |  j t | ƒ d ƒ |  j | d d	 ƒ |  j | d d d i ƒ t  d
 d d i f ƒ } |  j | | ƒ d  S)Nr3   r4   r   r5   r   Tr   )r3   r4   )r3   r4   )r3   r4   )r
   r   Úlen)r   rC   Z
other_argsr   r   r   Útest_two_args_call2  s    zCallTest.test_two_args_callN)r   r   r   rB   rD   rE   rH   rK   rM   rN   rP   rT   rX   r"   r^   ra   rf   ri   rk   rm   r   r   r   r   r0   M   s"   %	
	
	r0   c               @   sí  e  Z d  Z d d „  Z d d „  Z d d „  Z d d „  Z d	 d
 „  Z e j	 d d „  ƒ Z
 d d „  Z e j e d ƒ d d „  ƒ Z d d „  Z d d „  Z d d „  Z d d „  Z d d „  Z d d „  Z d d „  Z d  d! „  Z e j e d" ƒ d# d$ „  ƒ Z d% d& „  Z d' d( „  Z d) d* „  Z d+ d, „  Z d- d. „  Z d/ d0 „  Z d1 d2 „  Z e j e d3 ƒ d4 d5 „  ƒ Z  d6 d7 „  Z! e j e d3 ƒ d8 d9 „  ƒ Z" d: d; „  Z# d< d= „  Z$ d> d? „  Z% d@ dA „  Z& dB dC „  Z' dD dE „  Z( dF S)GÚSpecSignatureTestc             C   s>  |  j  t t | d ƒ | j d d ƒ | j j d d ƒ |  j  t | j j d d ƒ |  j  t | j d ƒ | j ƒ  | j j ƒ  |  j  t | j j d ƒ |  j  t | j d ƒ | j ƒ  | j j ƒ  |  j  t | j j d ƒ |  j  t | j d d ƒ | j d ƒ | j j d ƒ | j d d ƒ | j j d d ƒ d  S)Nr   r3   r4   r5   r6   r   )	ÚassertRaisesÚAttributeErrorÚgetattrr   r   ÚAssertionErrorÚ	TypeErrorr   r   )r   r   r   r   r   Ú_check_someclass_mock>  s(    	
	
	z'SpecSignatureTest._check_someclass_mockc             C   s9   t  t ƒ } |  j | ƒ t  t ƒ  ƒ } |  j | ƒ d  S)N)r   r   rt   )r   r   r   r   r   Ú
test_basicY  s    zSpecSignatureTest.test_basicc             C   sp   d d „  } t  | d d ƒ} |  j | ƒ  d ƒ Gd d „  d t ƒ } t  | d d ƒ} |  j | ƒ  d ƒ d  S)Nc               S   s   d  S)Nr   r   r   r   r   Úfa  s    z>SpecSignatureTest.test_create_autospec_return_value.<locals>.fZreturn_valuer   c               @   s   e  Z d  Z d S)z@SpecSignatureTest.test_create_autospec_return_value.<locals>.FooN)r   r   r   r   r   r   r   r(   f  s   r(   )r   r   r   )r   rv   r   r(   r   r   r   Ú!test_create_autospec_return_value`  s    z3SpecSignatureTest.test_create_autospec_return_valuec             C   s:   t  t ƒ } t | ƒ | j ƒ  |  j | j j d ƒ d  S)Nr   )r   rV   r*   r   rh   Z
call_count)r   rj   r   r   r   Útest_autospec_reset_mockm  s    

z*SpecSignatureTest.test_autospec_reset_mockc             C   sU   Gd d „  d t  ƒ } t j  | d ƒ } | j ƒ  } | ƒ  j d ƒ | j d ƒ d  S)Nc               @   s   e  Z d  Z d d „  Z d S)z;SpecSignatureTest.test_mocking_unbound_methods.<locals>.Fooc             S   s   d  S)Nr   )r   r   r   r   r   r   v  s    z?SpecSignatureTest.test_mocking_unbound_methods.<locals>.Foo.fooN)r   r   r   r   r   r   r   r   r(   u  s   r(   r   r3   )r   r   Ústartr   r   )r   r(   ÚpZmock_foor   r   r   Útest_mocking_unbound_methodst  s
    z.SpecSignatureTest.test_mocking_unbound_methodsc             C   su   Gd d „  d t  ƒ } t | ƒ } | ƒ  } |  j t | j d ƒ | j d ƒ | j j d ƒ |  j t | j ƒ d  S)Nc               @   s   e  Z d  Z d d „  Z d S)zCSpecSignatureTest.test_create_autospec_unbound_methods.<locals>.Fooc             S   s   d  S)Nr   )r   r   r   r   r   ƒ  s    zGSpecSignatureTest.test_create_autospec_unbound_methods.<locals>.Foo.fooN)r   r   r   r   r   r   r   r   r(   ‚  s   r(   r3   )r   r   ro   rs   r   r   )r   r(   ÚklassÚinstancer   r   r   Ú$test_create_autospec_unbound_methods  s    	z6SpecSignatureTest.test_create_autospec_unbound_methodsc             C   s?   Gd d „  d t  ƒ } t | d d ƒ} |  j | j d ƒ d  S)Nc               @   s   e  Z d  Z d Z d S)zESpecSignatureTest.test_create_autospec_keyword_arguments.<locals>.Foor5   N)r   r   r   r   r   r   r   r   r(   ‘  s   r(   r   Ú3)r   r   r   r   )r   r(   rj   r   r   r   Ú&test_create_autospec_keyword_arguments  s    z8SpecSignatureTest.test_create_autospec_keyword_argumentsz(Keyword only arguments Python 3 specificc             C   sƒ   d } i  } t  | | ƒ | d } t | ƒ } | d ƒ | j d ƒ |  j t | d d ƒ | d d d ƒ| j d d d ƒd  S)Nz def foo(a, *, b=None):
    pass
r   r3   r4   r   r5   )Úexecr   r   ro   rs   )r   Zfunc_defÚ	namespacer   rj   r   r   r   Ú+test_create_autospec_keyword_only_arguments–  s    

z=SpecSignatureTest.test_create_autospec_keyword_only_argumentsc             C   sK   t  ƒ  } d d „  } | | _ t | ƒ } | j d ƒ | j j d ƒ d  S)Nc             S   s   d  S)Nr   )r   r   r   r   rv   §  s    z@SpecSignatureTest.test_function_as_instance_attribute.<locals>.frZ   )r   rv   r   r   )r   Úobjrv   r   r   r   r   Ú#test_function_as_instance_attribute¥  s    		z5SpecSignatureTest.test_function_as_instance_attributec             C   s¡   t  g  ƒ } | j d ƒ | j j d ƒ |  j t t | d ƒ Gd d „  d t ƒ } t  | ƒ } | j j d ƒ | j j j d ƒ |  j t t | j d ƒ d  S)Nr   c               @   s   e  Z d  Z g  Z d S)z0SpecSignatureTest.test_spec_as_list.<locals>.FooN)r   r   r   r   r   r   r   r   r(   ¹  s   r(   r5   )r   Úappendr   ro   rp   rq   r   r   )r   r   r(   r   r   r   Útest_spec_as_list°  s    z#SpecSignatureTest.test_spec_as_listc             C   sM   Gd d „  d t  ƒ } t | ƒ } x$ | | j f D] } |  j | ƒ q2 Wd  S)Nc               @   s   e  Z d  Z e ƒ  Z d S)z.SpecSignatureTest.test_attributes.<locals>.SubN)r   r   r   r   Úattrr   r   r   r   ÚSubÃ  s   r‰   )r   r   rˆ   rt   )r   r‰   Zsub_mockr   r   r   r   Útest_attributesÂ  s    z!SpecSignatureTest.test_attributesc             C   s)  Gd d „  d t  ƒ } t | ƒ } | j d ƒ | j j d ƒ |  j t t | j d ƒ | j d ƒ | j j d ƒ |  j t | j d d ƒ |  j t t | j d ƒ | j	 d d g ƒ | j	 j d d g ƒ |  j t t | j	 d ƒ | j
 j d ƒ | j
 j j d ƒ |  j t t | j
 d ƒ d  S)Nc               @   s(   e  Z d  Z d d „  Z e Z i  Z d S)zGSpecSignatureTest.test_builtin_functions_types.<locals>.BuiltinSubclassc             S   s   d  S)Nr   )r   Úargr   r   r   r)   Ñ  s    zKSpecSignatureTest.test_builtin_functions_types.<locals>.BuiltinSubclass.barN)r   r   r   r)   Úsortedrˆ   r   r   r   r   ÚBuiltinSubclassÐ  s   r   r5   r   r)   r3   r4   )Úlistr   r†   r   ro   rp   rq   r)   rs   rŒ   rˆ   Úpop)r   r   r   r   r   r   Útest_builtin_functions_typesÌ  s    z.SpecSignatureTest.test_builtin_functions_typesc             C   s  Gd d „  d t  ƒ } t | ƒ } | j d d ƒ | j ƒ  | j d ƒ t j d d ƒ t j ƒ  t j d ƒ g } |  j | j | ƒ | j j d d ƒ | j j ƒ  | j j d ƒ | j	 t j j d d ƒ t j j ƒ  t j j d ƒ g ƒ |  j | j | ƒ d  S)Nc               @   s   e  Z d  Z e ƒ  Z d S)z0SpecSignatureTest.test_method_calls.<locals>.SubN)r   r   r   r   rˆ   r   r   r   r   r‰   ê  s   r‰   r3   r4   r5   )
r   r   r   r   r   r   r   r`   rˆ   Úextend)r   r‰   r   r.   r   r   r   Útest_method_callsé  s    
*4z#SpecSignatureTest.test_method_callsc             C   s¦   Gd d „  d t  ƒ } t | ƒ } |  j t  | ƒ g  ƒ |  j t t | ƒ |  j t t | j ƒ |  j t  | ƒ g  ƒ |  j | d t ƒ |  j | j d t ƒ d  S)Nc               @   s   e  Z d  Z i  Z d S)z=SpecSignatureTest.test_magic_methods.<locals>.BuiltinSubclassN)r   r   r   rˆ   r   r   r   r   r      s   r   r   )	rŽ   r   r   ro   rs   rV   rˆ   ÚassertIsInstancer   )r   r   r   r   r   r   Útest_magic_methodsÿ  s    z$SpecSignatureTest.test_magic_methodsc             C   sˆ   Gd d „  d t  ƒ } xk | | ƒ  f D]Z } t | d d ƒ} |  j | ƒ |  j t t | d d ƒ |  j t t | j d d ƒ q& Wd  S)Nc               @   s   e  Z d  Z e ƒ  Z d S)z,SpecSignatureTest.test_spec_set.<locals>.SubN)r   r   r   r   rˆ   r   r   r   r   r‰     s   r‰   Zspec_setTr   r)   )r   r   rt   ro   rp   Úsetattrrˆ   )r   r‰   Úspecr   r   r   r   Útest_spec_set  s    zSpecSignatureTest.test_spec_setc             C   sÇ   Gd d „  d t  ƒ } Gd d „  d | ƒ } Gd d „  d t | ƒ } x{ | | ƒ  | | ƒ  | | ƒ  f D]X } t | ƒ } | j d d ƒ | j j d d ƒ | j d	 d
 ƒ | j j d	 d
 ƒ qg Wd  S)Nc               @   s4   e  Z d  Z e d d „  ƒ Z e d d „  ƒ Z d S)z/SpecSignatureTest.test_descriptors.<locals>.Fooc             S   s   d  S)Nr   )Úclsr   r   r   r   r   rv     s    z1SpecSignatureTest.test_descriptors.<locals>.Foo.fc             S   s   d  S)Nr   )r   r   r   r   r   Úg  s    z1SpecSignatureTest.test_descriptors.<locals>.Foo.gN)r   r   r   Úclassmethodrv   Ústaticmethodr™   r   r   r   r   r(     s   r(   c               @   s   e  Z d  Z d S)z/SpecSignatureTest.test_descriptors.<locals>.BarN)r   r   r   r   r   r   r   ÚBar"  s   rœ   c               @   s   e  Z d  Z d S)z/SpecSignatureTest.test_descriptors.<locals>.BazN)r   r   r   r   r   r   r   ÚBaz%  s   r   r3   r4   r5   r6   )r   r   r   rv   Úassert_called_once_withr™   )r   r(   rœ   r   r–   r   r   r   r   Útest_descriptors  s    (z"SpecSignatureTest.test_descriptorsz No old style classes in Python 3c                sö   Gd d „  d ƒ ‰  G‡  f d d †  d ˆ  ƒ } x~ ˆ  ˆ  ƒ  | | ƒ  f D]d } t  | ƒ } | j d d ƒ | j j d d ƒ |  j t t | d ƒ |  j t t | j d ƒ qH W| j j d d ƒ | j j j d d ƒ |  j t t | j d ƒ d  S)Nc               @   s   e  Z d  Z d d „  Z d S)z5SpecSignatureTest.test_old_style_classes.<locals>.Fooc             S   s   d  S)Nr   )r   r   r   r   r   r   rv   4  s    z7SpecSignatureTest.test_old_style_classes.<locals>.Foo.fN)r   r   r   rv   r   r   r   r   r(   3  s   r(   c                   s   e  Z d  Z ”  ƒ  Z d S)z5SpecSignatureTest.test_old_style_classes.<locals>.BarN)r   r   r   r™   r   )r(   r   r   rœ   7  s   rœ   r3   r4   r   )r   rv   rž   ro   rp   rq   r™   )r   rœ   r–   r   r   )r(   r   Útest_old_style_classes1  s    z(SpecSignatureTest.test_old_style_classesc             C   sÚ   Gd d „  d t  ƒ } | | _ t | ƒ } | ƒ  |  j | j j ƒ | j ƒ  | j j ƒ  |  j | j t j ƒ  t j j ƒ  g ƒ |  j	 | j
 | j ƒ |  j | j
 | j ƒ | j
 j ƒ  |  j t | j j j ƒ d  S)Nc               @   s(   e  Z d  Z d d „  Z d Z e Z d S)z+SpecSignatureTest.test_recursive.<locals>.Ac             S   s   d  S)Nr   )r   r   r   r   r   I  s    z-SpecSignatureTest.test_recursive.<locals>.A.azfoo bar bazN)r   r   r   r   r   r)   r   r   r   r   ÚAH  s   r¡   )r   ÚBr   rS   Zcalledr   r   r`   r   ZassertIsr   r)   ÚassertIsNotÚlowerro   rr   r   )r   r¡   r   r   r   r   Útest_recursiveG  s    	
(z SpecSignatureTest.test_recursivec             C   sã  Gd d „  d t  ƒ } t | ƒ } |  j | | ƒ  ƒ xy | | ƒ  f D]h } | j d d ƒ | j j d d ƒ | j j d ƒ |  j t | j d d ƒ |  j t t | d ƒ qE Wt | ƒ  ƒ } | j d ƒ | j j d ƒ | j j d d ƒ |  j t | j d d ƒ |  j t t | d ƒ |  j t | ƒ | j	 j
 d ƒ | j	 j
 j d ƒ | j	 j
 j d	 d ƒ |  j t t | j	 d
 ƒ | j	 ƒ  j
 d ƒ | j	 ƒ  j
 j d ƒ | j	 ƒ  j
 j d	 d ƒ |  j t t | j	 ƒ  d
 ƒ d  S)Nc               @   s2   e  Z d  Z d d „  Z Gd d „  d e ƒ Z d S)z@SpecSignatureTest.test_spec_inheritance_for_classes.<locals>.Fooc             S   s   d  S)Nr   )r   Úxr   r   r   r   `  s    zBSpecSignatureTest.test_spec_inheritance_for_classes.<locals>.Foo.ac               @   s   e  Z d  Z d d „  Z d S)zDSpecSignatureTest.test_spec_inheritance_for_classes.<locals>.Foo.Barc             S   s   d  S)Nr   )r   Úyr   r   r   rv   c  s    zFSpecSignatureTest.test_spec_inheritance_for_classes.<locals>.Foo.Bar.fN)r   r   r   rv   r   r   r   r   rœ   b  s   rœ   N)r   r   r   r   r   rœ   r   r   r   r   r(   _  s   r(   r¦   rg   r   r)   r   r\   r§   r™   )r   r   r£   r   r   ro   rs   rp   rq   rœ   rv   )r   r(   Z
class_mockZ	this_mockZinstance_mockr   r   r   Ú!test_spec_inheritance_for_classes^  s0    z3SpecSignatureTest.test_spec_inheritance_for_classesc             C   sÇ   Gd d „  d t  ƒ } | | _ t | ƒ } | ƒ  } |  j t t | d ƒ | j ƒ  } |  j t t | d ƒ t | ƒ  ƒ } |  j t t | d ƒ |  j t | ƒ | j ƒ  } |  j t t | d ƒ d  S)Nc               @   s   e  Z d  Z d Z d S)z+SpecSignatureTest.test_inherit.<locals>.Foor5   N)r   r   r   r   r   r   r   r   r(   ‡  s   r(   r   )r   r(   r   ro   rp   rq   rs   )r   r(   r   r}   Zattr_instanceZcall_resultr   r   r   Útest_inherit†  s    		zSpecSignatureTest.test_inheritc             C   s§   t  d ƒ t  t ƒ t  d ƒ t  t ƒ t  i  ƒ t  t ƒ t  g  ƒ t  t ƒ t  t ƒ  ƒ t  t ƒ t  d ƒ t  t ƒ t  d ƒ t  t ƒ t  d ƒ t  d ƒ d  S)Nr3   r   g      ð?y              ð?FT)r   rV   r!   rL   rŽ   ÚsetÚfloatÚcomplex)r   r   r   r   Útest_builtinsž  s     













zSpecSignatureTest.test_builtinsc             C   sÖ   d d „  } t  | ƒ } |  j t | ƒ | d d ƒ | j d d ƒ | j d d d ƒ| j d d d d ƒ | | _ t  | ƒ } |  j t | j ƒ | j d d ƒ | j j d d ƒ | j j d d d d ƒ d  S)	Nc             S   s   d  S)Nr   )r   r   r   r   r   rv   ´  s    z*SpecSignatureTest.test_function.<locals>.fr3   r4   r   r   r5   r6   )r   ro   rs   r   rv   )r   rv   r   r   r   r   Útest_function³  s    	zSpecSignatureTest.test_functionc                s£   Gd d „  d t  ƒ ‰  G‡  f d d †  d t  ƒ } t | ƒ ‰ |  j t ‡ f d d †  ƒ ˆ j d d ƒ |  j t ‡ f d	 d †  ƒ ˆ j } | j | j f d  S)
Nc               @   s   e  Z d  Z d d d „ Z d S)z;SpecSignatureTest.test_skip_attributeerrors.<locals>.RaiserNc             S   s   | d  k r t  d ƒ ‚ d  S)Nz$Can only be accessed via an instance)rp   )r   r„   Útyper   r   r   Ú__get__È  s    zCSpecSignatureTest.test_skip_attributeerrors.<locals>.Raiser.__get__)r   r   r   r°   r   r   r   r   ÚRaiserÇ  s   r±   c                   s+   e  Z d  Z ”  ƒ  Z e d d „  ƒ Z d S)z@SpecSignatureTest.test_skip_attributeerrors.<locals>.RaiserClassc             S   s   |  | S)Nr   )r   r   r   r   r   ÚexistingÏ  s    zISpecSignatureTest.test_skip_attributeerrors.<locals>.RaiserClass.existingN)r   r   r   Úraiserr›   r²   r   )r±   r   r   ÚRaiserClassÌ  s   	r´   c                s   ˆ  j  d d d ƒ S)Nr3   r4   r5   )r²   )r¦   )Úsr   r   Ú<lambda>Ô  s    z=SpecSignatureTest.test_skip_attributeerrors.<locals>.<lambda>r3   r4   c                  s   ˆ  j  S)N)Znonexistingr   )rµ   r   r   r¶   Ö  s    )	r   r   ro   rs   r²   rp   r³   r   r)   )r   r´   r„   r   )r±   rµ   r   Útest_skip_attributeerrorsÆ  s    	z+SpecSignatureTest.test_skip_attributeerrorsc             C   sj   Gd d „  d t  ƒ } t | ƒ } |  j t | ƒ | d ƒ | j d ƒ | d d ƒ | j d d ƒ d  S)Nc               @   s   e  Z d  Z d d d „ Z d S)z3SpecSignatureTest.test_signature_class.<locals>.Foor5   c             S   s   d  S)Nr   )r   r   r   r   r   r   Ú__init__ß  s    z<SpecSignatureTest.test_signature_class.<locals>.Foo.__init__N)r   r   r   r¸   r   r   r   r   r(   Þ  s   r(   r3   r6   rg   )r   r   ro   rs   rž   r   )r   r(   r   r   r   r   Útest_signature_classÝ  s    
z&SpecSignatureTest.test_signature_classz no old style classes in Python 3c             C   sÂ   Gd d „  d ƒ } t  | ƒ } |  j t | ƒ | d ƒ | j d ƒ | j d d ƒ |  j t | j d ƒ | d d ƒ | j d d ƒ | j d d d d ƒ |  j t | j d d d d ƒd  S)	Nc               @   s   e  Z d  Z d d d „ Z d S)z=SpecSignatureTest.test_signature_old_style_class.<locals>.Foor5   c             S   s   d  S)Nr   )r   r   r   r   r   r   r¸   ï  s    zFSpecSignatureTest.test_signature_old_style_class.<locals>.Foo.__init__N)r   r   r   r¸   r   r   r   r   r(   î  s   r(   r3   r   r4   r6   rg   r   )r   ro   rs   rž   rr   r   )r   r(   r   r   r   r   Útest_signature_old_style_classì  s    
z0SpecSignatureTest.test_signature_old_style_classc             C   s$   Gd d „  d t  ƒ } t | ƒ d  S)Nc               @   s   e  Z d  Z d S)z6SpecSignatureTest.test_class_with_no_init.<locals>.FooN)r   r   r   r   r   r   r   r(     s   r(   )r   r   )r   r(   r   r   r   Útest_class_with_no_init   s    z)SpecSignatureTest.test_class_with_no_initc             C   s!   Gd d „  d ƒ } t  | ƒ d  S)Nc               @   s   e  Z d  Z d S)z@SpecSignatureTest.test_old_style_class_with_no_init.<locals>.FooN)r   r   r   r   r   r   r   r(     s   r(   )r   )r   r(   r   r   r   Ú!test_old_style_class_with_no_init  s    z3SpecSignatureTest.test_old_style_class_with_no_initc             C   s5  Gd d „  d t  ƒ } t | ƒ } | d d ƒ | j d d ƒ | j d d d d ƒ |  j t | d ƒ | d d ƒ } |  j t | ƒ | d d ƒ | j d ƒ | j d d ƒ | d ƒ | j d ƒ | j d d ƒ t | d d ƒ ƒ } | d d ƒ | j d d ƒ |  j t | ƒ | d ƒ | j d ƒ d  S)Nc               @   s(   e  Z d  Z d d „  Z d d „  Z d S)z;SpecSignatureTest.test_signature_callable.<locals>.Callablec             S   s   d  S)Nr   )r   r¦   r§   r   r   r   r¸     s    zDSpecSignatureTest.test_signature_callable.<locals>.Callable.__init__c             S   s   d  S)Nr   )r   r   r   r   r   Ú__call__  s    zDSpecSignatureTest.test_signature_callable.<locals>.Callable.__call__N)r   r   r   r¸   r½   r   r   r   r   ÚCallable  s   r¾   r3   r4   r¦   r§   r   )r   r   rž   ro   rs   r   )r   r¾   r   r}   r   r   r   Útest_signature_callable  s(    

z)SpecSignatureTest.test_signature_callablec             C   s¡   Gd d „  d t  ƒ } t | ƒ } | ƒ  } | j ƒ  |  j t | d ƒ |  j t | ƒ |  j t | d ƒ t | ƒ  ƒ } |  j t | ƒ |  j t | d ƒ d  S)Nc               @   s   e  Z d  Z d d „  Z d S)zASpecSignatureTest.test_signature_noncallable.<locals>.NonCallablec             S   s   d  S)Nr   )r   r   r   r   r¸   1  s    zJSpecSignatureTest.test_signature_noncallable.<locals>.NonCallable.__init__N)r   r   r   r¸   r   r   r   r   ÚNonCallable0  s   rÀ   r   )r   r   rž   ro   rs   )r   rÀ   r   r}   r   r   r   Útest_signature_noncallable/  s    	
z,SpecSignatureTest.test_signature_noncallablec             C   s\   Gd d „  d t  ƒ } t | ƒ } | j } |  j | t d  ƒ ƒ | j ƒ  | j j ƒ  d  S)Nc               @   s   e  Z d  Z d Z d S)z8SpecSignatureTest.test_create_autospec_none.<locals>.FooN)r   r   r   r)   r   r   r   r   r(   A  s   r(   )r   r   r)   ÚassertNotIsInstancer¯   r   rž   )r   r(   r   Znoner   r   r   Útest_create_autospec_none@  s    	
z+SpecSignatureTest.test_create_autospec_nonec             C   s‰   Gd d „  d t  ƒ } t | ƒ } | j d ƒ | j j d ƒ | j j d d ƒ | j d d ƒ | j j d ƒ | j j d d ƒ d  S)Nc               @   s   e  Z d  Z d d „  Z d S)zMSpecSignatureTest.test_autospec_functions_with_self_in_odd_place.<locals>.Fooc             S   s   d  S)Nr   )r   r   r   r   r   rv   N  s    zOSpecSignatureTest.test_autospec_functions_with_self_in_odd_place.<locals>.Foo.fN)r   r   r   rv   r   r   r   r   r(   M  s   r(   é
   r   )r   r   rv   r   )r   r(   r   r   r   r   Ú.test_autospec_functions_with_self_in_odd_placeL  s    z@SpecSignatureTest.test_autospec_functions_with_self_in_odd_placec             C   s‹   Gd d „  d t  ƒ } t | ƒ } | j } |  j | t ƒ | d d d ƒ | j d d d ƒ | j d d d ƒ | j j d d d ƒ d  S)	Nc               @   s"   e  Z d  Z e d d „  ƒ Z d S)z5SpecSignatureTest.test_autospec_property.<locals>.Fooc             S   s   d S)Nr5   r   )r   r   r   r   r   \  s    z9SpecSignatureTest.test_autospec_property.<locals>.Foo.fooN)r   r   r   Úpropertyr   r   r   r   r   r(   [  s   r(   r3   r4   r5   r6   rg   r\   )r   r   r   r“   r   Úabcrž   )r   r(   r   Zmock_propertyr   r   r   Útest_autospec_propertyZ  s    	z(SpecSignatureTest.test_autospec_propertyc             C   s{   Gd d „  d t  ƒ } t | ƒ } | j } | d d d ƒ | j d d d ƒ | j d d d ƒ | j j d d d ƒ d  S)	Nc               @   s   e  Z d  Z d g Z d S)z2SpecSignatureTest.test_autospec_slots.<locals>.Foor   N)r   r   r   Ú	__slots__r   r   r   r   r(   l  s   r(   r3   r4   r5   r6   rg   r\   )r   r   r   rÇ   rž   )r   r(   r   Z	mock_slotr   r   r   Útest_autospec_slotsk  s    	z%SpecSignatureTest.test_autospec_slotsN))r   r   r   rt   ru   rw   rx   r{   ÚunittestZexpectedFailurer~   r€   Z
skipUnlessr   rƒ   r…   r‡   rŠ   r   r’   r”   r—   rŸ   ZskipIfr    r¥   r¨   r©   r­   r®   r·   r¹   rº   r»   r¼   r¿   rÁ   rÃ   rÅ   rÈ   rÊ   r   r   r   r   rn   <  sB   
(	rn   c               @   s@   e  Z d  Z d d „  Z d d „  Z d d „  Z d d „  Z d	 S)
ÚTestCallListc             C   s•  t  ƒ  } |  j | j t ƒ | d d ƒ | d d ƒ | d d ƒ | d d ƒ xQ t d d ƒ t d d ƒ t d d ƒ t d d ƒ f D] } |  j | | j ƒ q‡ Wt d d ƒ t d d ƒ g } |  j | | j ƒ t d d ƒ t d d ƒ g } |  j | | j ƒ t d d ƒ t d d ƒ g } |  j | | j ƒ t d d ƒ g } |  j | | j ƒ |  j t d ƒ | j ƒ |  j t d ƒ g | j ƒ d  S)	Nr3   r4   r   r5   r6   r   r\   r_   )r   r“   r]   r   r   rO   ZassertNotIn)r   r   rA   Zcallsr   r   r   Ú!test_args_list_contains_call_list{  s$    	=z.TestCallList.test_args_list_contains_call_listc             C   se   t  ƒ  } | d d ƒ | j d d ƒ | j j ƒ  j d d d ƒd } |  j t | j ƒ | ƒ d  S)	Nr3   r4   r   r5   r_   ÚcatZdogzU[call(1, 2),
 call.foo(a=3),
 call.foo.bar(),
 call.foo.bar().baz('fish', cat='dog')])r   r   r)   r2   r   r!   r,   )r   r   r.   r   r   r   Útest_call_list_str”  s    	zTestCallList.test_call_list_strc             C   s³   t  d t d t ƒ} | j ƒ  } z t j | j ƒ  t ƒ  } | j | j ƒ  |  j | j	 t
 ƒ  t
 ƒ  g ƒ d | _ |  j | j	 t
 ƒ  t
 ƒ  t
 d ƒ g ƒ Wd  | j ƒ  Xd  S)Nz%s.SomeClass.oneZnew_callabler5   )r   r   r	   ry   r   r   rž   r   r   r,   r   Ústop)r   rz   r   rµ   r   r   r   Útest_propertymock£  s    
	
	,zTestCallList.test_propertymockc             C   sX   t  ƒ  } t ƒ  } | t | ƒ _ | j } | j ƒ  |  j | t  ƒ |  j | t ƒ d  S)N)r   r	   r¯   r   rž   r“   rÂ   )r   rj   rz   Zreturnedr   r   r   Útest_propertymock_returnvalueµ  s    			
z*TestCallList.test_propertymock_returnvalueN)r   r   r   rÍ   rÏ   rÑ   rÒ   r   r   r   r   rÌ   y  s   rÌ   Ú__main__)Z	unittest2rË   Zmock.tests.supportr   r   r   r   r   r   r   r   r	   Z	mock.mockr
   r   r   r   r   ZTestCaser   r0   rn   rÌ   r   Úmainr   r   r   r   Ú<module>   s   4
3ïÿ ÿ ?G