
Én¤U@  ã               @   sÒ   d  d l  m Z d  d l Z d  d l m Z y e Wn e k
 rT e Z e	 Z
 Yn Xd  d l Z d  d l Z d  d l Z d  d l m Z m Z d  d l m Z Gd d „  d e j ƒ Z e d k rÎ e j ƒ  d S)	é    )ÚdivisionN)ÚinPy3k)ÚMockÚ	MagicMock)Ú_magicsc               @   s  e  Z 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 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/ d0 „  Z d1 d2 „  Z d3 d4 „  Z d5 d6 „  Z e	 j
 d7 e  j! k d8 ƒ d9 d: „  ƒ Z" d; d< „  Z# d= d> „  Z$ d? d@ „  Z% e	 j
 e  j& dM k  dC ƒ dD dE „  ƒ Z' dF dG „  Z( dH dI „  Z) dJ dK „  Z* dL S)NÚTestMockingMagicMethodsc             C   sa   t  ƒ  } |  j t | d ƒ ƒ t  ƒ  | _ |  j t | d ƒ ƒ | ` |  j t | d ƒ ƒ d  S)NÚ__getitem__)r   ÚassertFalseÚhasattrr   Ú
assertTrue)ÚselfÚmock© r   ú=/usr/lib/python3/dist-packages/mock/tests/testmagicmethods.pyÚtest_deleting_magic_methods   s    	z3TestMockingMagicMethods.test_deleting_magic_methodsc                sb   t  ƒ  ‰  ˆ  ` |  j t ‡  f d d †  ƒ t  ƒ  ‰  ˆ  d ˆ  ` |  j t ‡  f d d †  ƒ d  S)Nc                  s   ˆ  d S)NÚfoor   r   )r   r   r   Ú<lambda>+   s    z<TestMockingMagicMethods.test_magicmock_del.<locals>.<lambda>r   c                  s   ˆ  d S)Nr   r   r   )r   r   r   r   1   s    )r   r   ÚassertRaisesÚ	TypeError)r   r   )r   r   Útest_magicmock_del'   s    		z*TestMockingMagicMethods.test_magicmock_delc             C   sŠ   t  ƒ  } d d „  } | | _ |  j | j | ƒ |  j | d | d f ƒ |  j | j d ƒ | d f ƒ | | _ |  j | j | ƒ d  S)Nc             S   s
   |  d f S)NÚfishr   )r   Únamer   r   r   Úf6   s    z=TestMockingMagicMethods.test_magic_method_wrapping.<locals>.fr   r   )r   r   ZassertIsNotÚassertEqualZassertIs)r   r   r   r   r   r   Útest_magic_method_wrapping4   s    			z2TestMockingMagicMethods.test_magic_method_wrappingc                s`   t  ƒ  } t  ƒ  ‰  t  d t g  ƒ ƒ | _ |  j t | ƒ g  ƒ |  j t ‡  f d d †  ƒ d  S)NÚreturn_valuec                  s
   t  ˆ  ƒ S)N)Úlistr   )Úmock2r   r   r   H   s    zSTestMockingMagicMethods.test_magic_methods_isolated_between_mocks.<locals>.<lambda>)r   ÚiterÚ__iter__r   r   r   r   )r   Zmock1r   )r   r   Ú)test_magic_methods_isolated_between_mocksB   s
    		zATestMockingMagicMethods.test_magic_methods_isolated_between_mocksc             C   sR   t  ƒ  } |  j t | ƒ d t | ƒ ƒ d d „  | _ |  j t | ƒ d ƒ d  S)Nz<Mock id='%s'>c             S   s   d S)Nr   r   )Úsr   r   r   r   N   s    z3TestMockingMagicMethods.test_repr.<locals>.<lambda>r   )r   r   ÚreprÚidÚ__repr__)r   r   r   r   r   Ú	test_reprK   s    	 z!TestMockingMagicMethods.test_reprc             C   sQ   t  ƒ  } |  j t | ƒ t j | ƒ ƒ d d „  | _ |  j t | ƒ d ƒ d  S)Nc             S   s   d S)Nr   r   )r!   r   r   r   r   U   s    z2TestMockingMagicMethods.test_str.<locals>.<lambda>r   )r   r   ÚstrÚobjectÚ__str__)r   r   r   r   r   Útest_strR   s    	z TestMockingMagicMethods.test_strzno unicode in Python 3c             C   sZ   t  ƒ  } |  j t | ƒ t t | ƒ ƒ ƒ d d „  | _ |  j t | ƒ t d ƒ ƒ d  S)Nc             S   s
   t  d ƒ S)Nr   )Úunicode)r!   r   r   r   r   ^   s    z6TestMockingMagicMethods.test_unicode.<locals>.<lambda>r   )r   r   r*   r&   Z__unicode__)r   r   r   r   r   Útest_unicodeY   s    	"z$TestMockingMagicMethods.test_unicodec                s+  t  ƒ  ‰ |  j t ‡ f d d †  ƒ ‡ f d d †  } ‡ f d d †  } |  j t | ƒ |  j t | ƒ i  ‰  ‡  f d d †  } ‡  f d	 d
 †  } ‡  f d d †  } | ˆ _ | ˆ _ | ˆ _ |  j t ‡ f d d †  ƒ d ˆ d <|  j ˆ  d d i ƒ |  j ˆ d d ƒ ˆ d =|  j ˆ  i  ƒ d  S)Nc                  s   ˆ  d S)Nr   r   r   )r   r   r   r   e   s    z;TestMockingMagicMethods.test_dict_methods.<locals>.<lambda>c                  s   ˆ  d =d  S)Nr   r   r   )r   r   r   Ú_delf   s    z7TestMockingMagicMethods.test_dict_methods.<locals>._delc                  s   d ˆ  d <d  S)Né   r   r   r   )r   r   r   Ú_seth   s    z7TestMockingMagicMethods.test_dict_methods.<locals>._setc                s   ˆ  | S)Nr   )r!   r   )Ú_dictr   r   Úgetitemn   s    z:TestMockingMagicMethods.test_dict_methods.<locals>.getitemc                s   | ˆ  | <d  S)Nr   )r!   r   Úvalue)r/   r   r   Úsetitemp   s    z:TestMockingMagicMethods.test_dict_methods.<locals>.setitemc                s   ˆ  | =d  S)Nr   )r!   r   )r/   r   r   Údelitemr   s    z:TestMockingMagicMethods.test_dict_methods.<locals>.delitemc                  s   ˆ  d S)Nr   r   r   )r   r   r   r   y   s    Úbarr   )r   r   r   Ú__setitem__r   Ú__delitem__ÚKeyErrorr   )r   r,   r.   r0   r2   r3   r   )r/   r   r   Útest_dict_methodsb   s&    				
z)TestMockingMagicMethods.test_dict_methodsc                s  t  ƒ  } ‰  d ˆ  _ |  j t ‡  f d d †  ƒ ‡  f d d †  } | ˆ  _ |  j ˆ  d ˆ  ƒ |  j ˆ  j d ƒ ˆ  ` d d „  } |  j t | ˆ  ƒ | ˆ  _ ˆ  d	 7‰  |  j ˆ  | ƒ |  j ˆ  j d
 ƒ |  j t ‡  f d d †  ƒ | ˆ  _ |  j d ˆ  ˆ  ƒ |  j ˆ  j d ƒ d  S)Nr   c                  s   ˆ  d S)Nr-   r   r   )r   r   r   r   …   s    z6TestMockingMagicMethods.test_numeric.<locals>.<lambda>c                s   ˆ  j  | 7_  |  S)N)r1   )r   Úother)r   r   r   Úadd‡   s    z1TestMockingMagicMethods.test_numeric.<locals>.addr-   c             S   s   |  d 7}  d  S)Nr-   r   )r   r   r   r   Úiadd   s    z2TestMockingMagicMethods.test_numeric.<locals>.iaddé   é	   c                  s   d ˆ  S)Nr-   r   r   )r   r   r   r   —   s    é   é   )r   r1   r   r   Ú__add__r   Ú__iadd__Ú__radd__)r   Úoriginalr:   r;   r   )r   r   Útest_numeric   s$    			
	z$TestMockingMagicMethods.test_numericc                s1  t  ƒ  } ‰  d ˆ  _ |  j t ‡  f d d †  ƒ ‡  f d d †  } | ˆ  _ |  j ˆ  d ˆ  ƒ |  j ˆ  j d ƒ ˆ  ` t rØ d d	 „  } |  j t | ˆ  ƒ | ˆ  _ ˆ  d
 ‰  |  j ˆ  | ƒ |  j ˆ  j d ƒ n	 d ˆ  _ |  j t ‡  f d d †  ƒ | ˆ  _ |  j d ˆ  ˆ  ƒ |  j ˆ  j d ƒ d  S)Né    c                  s   ˆ  d S)Né   r   r   )r   r   r   r   Ÿ   s    z7TestMockingMagicMethods.test_division.<locals>.<lambda>c                s   ˆ  j  | _  |  S)N)r1   )r   r9   )r   r   r   Útruediv¡   s    z6TestMockingMagicMethods.test_division.<locals>.truedivrF   r?   c             S   s   |  d }  d  S)Né   r   )r   r   r   r   Úitruedivª   s    z7TestMockingMagicMethods.test_division.<locals>.itruedivé   c                  s   d ˆ  S)NrJ   r   r   )r   r   r   r   ´   s    g      à?rH   )	r   r1   r   r   Ú__truediv__r   r   Ú__itruediv__Ú__rtruediv__)r   rC   rG   rI   r   )r   r   Útest_divisionœ   s(    			
		z%TestMockingMagicMethods.test_divisionc             C   sW   t  ƒ  } |  j t | ƒ t  j | ƒ ƒ d d „  } | | _ |  j t | ƒ d ƒ d  S)Nc             S   s   d S)Nr-   r   )r!   r   r   r   Ú_hash¾   s    z0TestMockingMagicMethods.test_hash.<locals>._hashr-   )r   r   ÚhashÚ__hash__)r   r   rO   r   r   r   Ú	test_hash¹   s
    		z!TestMockingMagicMethods.test_hashc             C   sZ   t  ƒ  } |  j t | ƒ ƒ d d „  } t s: | | _ n	 | | _ |  j t | ƒ ƒ d  S)Nc             S   s   d S)NFr   )r!   r   r   r   r   È   s    z6TestMockingMagicMethods.test_nonzero.<locals>.<lambda>)r   r   Úboolr   Ú__nonzero__Ú__bool__r	   )r   ÚmZnonzeror   r   r   Útest_nonzeroÄ   s    		z$TestMockingMagicMethods.test_nonzeroc             C   s  t  ƒ  } d d „  } | | _ | _ | _ | _ |  j | d k  ƒ |  j | d k ƒ |  j | d k ƒ |  j | d k ƒ t s|  j t  ƒ  d k  t ƒ  d k  ƒ |  j t  ƒ  d k t ƒ  d k ƒ |  j t  ƒ  d k t ƒ  d k ƒ |  j t  ƒ  d k t ƒ  d k ƒ n|  j	 t
 d d „  ƒ |  j	 t
 d d „  ƒ |  j	 t
 d d „  ƒ |  j	 t
 d d „  ƒ |  j	 t
 d	 d „  ƒ |  j	 t
 d
 d „  ƒ |  j	 t
 d d „  ƒ |  j	 t
 d d „  ƒ |  j	 t
 d d „  ƒ |  j	 t
 d d „  ƒ |  j	 t
 d d „  ƒ |  j	 t
 d d „  ƒ d  S)Nc             S   s   d S)NTr   )r!   Úor   r   r   ÚcompÓ   s    z5TestMockingMagicMethods.test_comparison.<locals>.compr-   c               S   s   t  ƒ  t ƒ  k  S)N)r   r'   r   r   r   r   r   â   s    z9TestMockingMagicMethods.test_comparison.<locals>.<lambda>c               S   s   t  ƒ  t ƒ  k  S)N)r'   r   r   r   r   r   r   ã   s    c               S   s   t  ƒ  t  ƒ  k  S)N)r   r   r   r   r   r   ä   s    c               S   s   t  ƒ  t ƒ  k S)N)r   r'   r   r   r   r   r   å   s    c               S   s   t  ƒ  t ƒ  k S)N)r'   r   r   r   r   r   r   æ   s    c               S   s   t  ƒ  t  ƒ  k S)N)r   r   r   r   r   r   ç   s    c               S   s   t  ƒ  t ƒ  k S)N)r   r'   r   r   r   r   r   è   s    c               S   s   t  ƒ  t ƒ  k S)N)r'   r   r   r   r   r   r   é   s    c               S   s   t  ƒ  t  ƒ  k S)N)r   r   r   r   r   r   ê   s    c               S   s   t  ƒ  t ƒ  k S)N)r   r'   r   r   r   r   r   ë   s    c               S   s   t  ƒ  t ƒ  k S)N)r'   r   r   r   r   r   r   ì   s    c               S   s   t  ƒ  t  ƒ  k S)N)r   r   r   r   r   r   í   s    )r   Ú__lt__Ú__gt__Ú__le__Ú__ge__r   r   r   r'   r   r   )r   r   rY   r   r   r   Útest_comparisonÑ   s0    	"""%z'TestMockingMagicMethods.test_comparisonc             C   sš  xt  ƒ  t ƒ  f D]} |  j | | k d ƒ |  j | | k t ƒ |  j | | k d ƒ |  j | | k t ƒ |  j | t ƒ  k d ƒ |  j | t ƒ  k d ƒ d d „  } | | _ |  j | d k ƒ |  j | d k ƒ d d „  } | | _	 |  j | d k ƒ |  j | d k ƒ q Wt ƒ  } d | j _
 |  j | d k t ƒ |  j | d k d ƒ d | j	 _
 |  j | d k t ƒ |  j | d k d ƒ d  S)	NTFc             S   s
   | d k S)Nr-   r   )r   r9   r   r   r   Úeqù   s    z1TestMockingMagicMethods.test_equality.<locals>.eqr-   rH   c             S   s
   | d k S)Nr-   r   )r   r9   r   r   r   Úneÿ   s    z1TestMockingMagicMethods.test_equality.<locals>.ne)r   r   r   ÚassertIsInstancerS   r'   Ú__eq__r   r	   Ú__ne__r   )r   r   r_   r`   r   r   r   Útest_equalityð   s,    			z%TestMockingMagicMethods.test_equalityc                sÎ   t  ƒ  ‰  |  j t t ˆ  ƒ |  j t t ˆ  ƒ |  j t ‡  f d d †  ƒ d d „  ˆ  _ |  j t ˆ  ƒ d ƒ d d „  ˆ  _ |  j d ˆ  ƒ |  j	 d ˆ  ƒ d d „  ˆ  _
 |  j t ˆ  ƒ t d ƒ ƒ d  S)	Nc                  s
   d ˆ  k S)Nr   r   r   )r   r   r   r     s    z@TestMockingMagicMethods.test_len_contains_iter.<locals>.<lambda>c             S   s   d S)Nr<   r   )r!   r   r   r   r     s    r<   c             S   s
   | d k S)Nr-   r   )r!   rX   r   r   r   r     s    r-   c             S   s
   t  d ƒ S)NÚ	foobarbaz)r   )r!   r   r   r   r     s    re   )r   r   r   Úlenr   Ú__len__r   Ú__contains__ZassertInÚassertNotInr   r   )r   r   )r   r   Útest_len_contains_iter  s    	z.TestMockingMagicMethods.test_len_contains_iterc             C   sÞ   t  ƒ  } t d d d g ƒ | j _ |  j t | ƒ d d d g ƒ d } d } t rb | | } } d t | | ƒ _ |  j t	 | | ƒ ƒ |  j t
 | ƒ ƒ x$ t D] } |  j t	 | | ƒ ƒ q¤ W|  j t	 | d ƒ ƒ d  S)Né   rF   r-   rT   rU   FZ__imaginery__)r   r   r   r   r   r   r   Úgetattrr	   r
   rS   r   r   )r   r   r   r9   Úentryr   r   r   Útest_magicmock!  s    	z&TestMockingMagicMethods.test_magicmockc             C   s   t  ƒ  } |  j | t ƒ  k t ƒ |  j | t ƒ  k t ƒ |  j | t ƒ  k d ƒ |  j | t ƒ  k d ƒ |  j | | k d ƒ |  j | | k d ƒ d  S)NFT)r   ra   r'   rS   r   )r   r   r   r   r   Útest_magic_mock_equality4  s    	z0TestMockingMagicMethods.test_magic_mock_equalityc             C   s{  t  ƒ  } |  j t | ƒ d ƒ |  j t | ƒ d ƒ |  j t | ƒ d ƒ |  j t | ƒ t d ƒ ƒ |  j t ƒ  | ƒ |  j t | ƒ d ƒ |  j t	 | ƒ g  ƒ |  j t
 | ƒ t j | ƒ ƒ |  j t | ƒ t j | ƒ ƒ |  j t | ƒ t j | ƒ ƒ |  j t | ƒ t ƒ |  j t | ƒ ƒ t sK|  j t | ƒ d ƒ n |  j t | ƒ d ƒ |  j t | ƒ d ƒ d  S)Nrk   y              ð?g      ð?r   Ú1Z0o1Z0x1)r   r   ÚintÚcomplexÚfloatÚlongri   r'   rf   r   rP   rQ   r&   r(   r*   ra   r   rS   r   ÚoctÚhex)r   r   r   r   r   Útest_magicmock_defaults?  s"    	z/TestMockingMagicMethods.test_magicmock_defaultszno __cmp__ in Python 3c                sT   t  ƒ  ‰  |  j t ‡  f d d †  ƒ t ƒ  ‰  d d „  ˆ  _ |  j ˆ  t ƒ  ƒ d  S)Nc                  s   ˆ  j  S)N)Ú__cmp__r   )r   r   r   r   Z  s    zHTestMockingMagicMethods.test_non_default_magic_methods.<locals>.<lambda>c             S   s   d S)Nr   r   )r!   rX   r   r   r   r   ]  s    )r   r   ÚAttributeErrorr   rx   r   r'   )r   r   )r   r   Útest_non_default_magic_methodsW  s
    		z6TestMockingMagicMethods.test_non_default_magic_methodsc                s  Gd d „  d t  ƒ } t d | ƒ ‰  |  j t ‡  f d d †  ƒ t d t g  ƒ ƒ ˆ  _ |  j t ˆ  ƒ g  ƒ Gd d „  d t  ƒ } t d | ƒ ‰  |  j t ‡  f d	 d †  ƒ ‡  f d
 d †  } |  j t | ƒ t d | ƒ ‰  |  j t ˆ  ƒ g  ƒ |  j t | ƒ d  S)Nc               @   s   e  Z d  Z d d „  Z d S)zETestMockingMagicMethods.test_magic_methods_and_spec.<locals>.Iterablec             S   s   d  S)Nr   )r   r   r   r   r   d  s    zNTestMockingMagicMethods.test_magic_methods_and_spec.<locals>.Iterable.__iter__N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   ÚIterablec  s   r~   Úspecc                  s   ˆ  j  S)N)r   r   )r   r   r   r   h  s    zETestMockingMagicMethods.test_magic_methods_and_spec.<locals>.<lambda>r   c               @   s   e  Z d  Z d S)zHTestMockingMagicMethods.test_magic_methods_and_spec.<locals>.NonIterableN)r{   r|   r}   r   r   r   r   ÚNonIterablem  s   r€   c                  s   ˆ  j  S)N)r   r   )r   r   r   r   p  s    c                  s   t  d t g  ƒ ƒ ˆ  _ d  S)Nr   )r   r   Ú__int__r   )r   r   r   Úset_intr  s    zDTestMockingMagicMethods.test_magic_methods_and_spec.<locals>.set_int)	r'   r   r   ry   r   r   r   r   r   )r   r~   r€   r‚   r   )r   r   Útest_magic_methods_and_specb  s    z3TestMockingMagicMethods.test_magic_methods_and_specc                s  Gd d „  d t  ƒ } t d | ƒ ‰  |  j t ‡  f d d †  ƒ t d t g  ƒ ƒ ˆ  _ |  j t ˆ  ƒ g  ƒ Gd d „  d t  ƒ } t d | ƒ ‰  |  j t ‡  f d	 d †  ƒ ‡  f d
 d †  } |  j t | ƒ t d | ƒ ‰  |  j t ˆ  ƒ g  ƒ |  j t | ƒ d  S)Nc               @   s   e  Z d  Z d d „  Z d S)zITestMockingMagicMethods.test_magic_methods_and_spec_set.<locals>.Iterablec             S   s   d  S)Nr   )r   r   r   r   r   }  s    zRTestMockingMagicMethods.test_magic_methods_and_spec_set.<locals>.Iterable.__iter__N)r{   r|   r}   r   r   r   r   r   r~   |  s   r~   Zspec_setc                  s   ˆ  j  S)N)r   r   )r   r   r   r     s    zITestMockingMagicMethods.test_magic_methods_and_spec_set.<locals>.<lambda>r   c               @   s   e  Z d  Z d S)zLTestMockingMagicMethods.test_magic_methods_and_spec_set.<locals>.NonIterableN)r{   r|   r}   r   r   r   r   r€   †  s   r€   c                  s   ˆ  j  S)N)r   r   )r   r   r   r   ‰  s    c                  s   t  d t g  ƒ ƒ ˆ  _ d  S)Nr   )r   r   r   r   )r   r   r   r‚   ‹  s    zHTestMockingMagicMethods.test_magic_methods_and_spec_set.<locals>.set_int)	r'   r   r   ry   r   r   r   r   r   )r   r~   r€   r‚   r   )r   r   Útest_magic_methods_and_spec_set{  s    z7TestMockingMagicMethods.test_magic_methods_and_spec_setc                s2   t  ƒ  ‰  ‡  f d d †  } |  j t d | ƒ d  S)Nc                  s   d d „  ˆ  _  d  S)Nc             S   s   d  S)Nr   )r   r   r   r   r   r   —  s    zdTestMockingMagicMethods.test_setting_unsupported_magic_method.<locals>.set_setattr.<locals>.<lambda>)Ú__setattr__r   )r   r   r   Úset_setattr–  s    zRTestMockingMagicMethods.test_setting_unsupported_magic_method.<locals>.set_setattrz9Attempting to set unsupported magic method '__setattr__'.)r   ZassertRaisesRegexry   )r   r†   r   )r   r   Ú%test_setting_unsupported_magic_method”  s
    		z=TestMockingMagicMethods.test_setting_unsupported_magic_methodc             C   sW   t  ƒ  } | j } d d „  } |  j | | ƒ t  ƒ | ƒ  } |  j | | ƒ t  ƒ d  S)Nc             S   s   t  |  ƒ j d S)Nrk   )ÚtypeÚ__mro__)Úobjr   r   r   Ú	_get_type¡  s    zKTestMockingMagicMethods.test_attributes_and_return_value.<locals>._get_type)r   r   r   )r   r   Úattrr‹   Zreturnedr   r   r   Ú test_attributes_and_return_valuež  s    			z8TestMockingMagicMethods.test_attributes_and_return_valuec             C   sP   t  ƒ  } |  j | j t  ƒ d | d d j _ |  j | d d d d ƒ d  S)Nr-   rk   rF   )r   ra   r   r   r   )r   r   r   r   r   Ú"test_magic_methods_are_magic_mocks«  s    	z:TestMockingMagicMethods.test_magic_methods_are_magic_mocksc             C   sG   t  ƒ  } t | ƒ |  j | j j ƒ | j ƒ  |  j | j j ƒ d  S)N)r   r&   r   r(   ZcalledZ
reset_mockr	   )r   r   r   r   r   Útest_magic_method_reset_mock³  s
    	

z4TestMockingMagicMethods.test_magic_method_reset_mockc             C   sO   xH t  ƒ  t ƒ  f D]4 } d d „  } | | _ |  j t | ƒ d g ƒ q Wd  S)Nc             S   s   d g S)Nr   r   )r   r   r   r   Ú_dir½  s    z.TestMockingMagicMethods.test_dir.<locals>._dirr   )r   r   Ú__dir__r   Údir)r   r   r   r   r   r   Útest_dirº  s    	z TestMockingMagicMethods.test_dirZPyPyzThis fails differently on pypyc             C   s/   t  ƒ  } d g j | _ |  j t t | ƒ d  S)Nr-   )r   r   r   r   r   )r   rV   r   r   r   Útest_bound_methodsÃ  s    	z*TestMockingMagicMethods.test_bound_methodsc             C   s6   Gd d „  d t  ƒ } | ƒ  } |  j | j | ƒ d  S)Nc               @   s   e  Z d  Z d S)z;TestMockingMagicMethods.test_magic_method_type.<locals>.FooN)r{   r|   r}   r   r   r   r   ÚFooÐ  s   r•   )r   ra   r   )r   r•   r   r   r   r   Útest_magic_method_typeÏ  s    	z.TestMockingMagicMethods.test_magic_method_typec             C   s5   t  ƒ  } d t | ƒ j _ |  j t | ƒ d ƒ d  S)Nr   )r   rˆ   r(   r   r   r&   )r   rV   r   r   r   Útest_descriptor_from_class×  s    	z2TestMockingMagicMethods.test_descriptor_from_classc             C   s°   t  ƒ  } d d d g | j _ |  j t | ƒ d d d g ƒ |  j t | ƒ d d d g ƒ t d d d g ƒ | j _ |  j t | ƒ d d d g ƒ |  j t | ƒ g  ƒ d  S)Nrk   rF   r-   rH   é   r<   )r   r   r   r   r   r   )r   rV   r   r   r   Ú"test_iterable_as_iter_return_valueÝ  s    	z:TestMockingMagicMethods.test_iterable_as_iter_return_valuer-   r˜   z@ added in Python 3.5c             C   s   t  j d ƒ } t | ƒ d  S)Nae              m = MagicMock()
            self.assertIsInstance(m @ 1, MagicMock)
            m.__matmul__.return_value = 42
            m.__rmatmul__.return_value = 666
            m.__imatmul__.return_value = 24
            self.assertEqual(m @ 1, 42)
            self.assertEqual(1 @ m, 666)
            m @= 24
            self.assertEqual(m, 24)
        )ÚtextwrapÚdedentÚexec)r   Úsrcr   r   r   Útest_matmulç  s    
	z#TestMockingMagicMethods.test_matmulc             C   sÐ   t  ƒ  } |  j t d | ƒ t  ƒ d | j _ |  j t | d ƒ d ƒ t  ƒ  } t d | ƒ } |  j | t  ƒ | j d ƒ } |  j | t  ƒ t | d ƒ } |  j | t  ƒ | j d ƒ } |  j | t  ƒ d  S)Nr˜   rF   rk   )rF   rk   )rF   rk   )r   ra   ÚdivmodÚ
__divmod__r   r   Ú__rdivmod__)r   rV   r   Z
foo_directr4   Z
bar_directr   r   r   Útest_divmod_and_rdivmodö  s    		z/TestMockingMagicMethods.test_divmod_and_rdivmodc             C   s,   t  d d i   } |  j t | ƒ d ƒ d  S)Nz__str__.return_valueÚ12)r   r   r&   )r   rV   r   r   r   Útest_magic_in_initialization  s    z4TestMockingMagicMethods.test_magic_in_initializationc             C   ss   t  d d i   } d | j _ |  j t | ƒ d ƒ t  d d i   } | j d d i   |  j t | ƒ d ƒ d  S)Nz__str__.return_valuer£   Z13Z14)r   r(   r   r   r&   Zconfigure_mock)r   rV   r   r   r   Ú)test_changing_magic_set_in_initialization  s    zATestMockingMagicMethods.test_changing_magic_set_in_initializationN)r-   r˜   )+r{   r|   r}   r   r   r   r    r%   r)   ÚunittestZskipIfr   r+   r8   rD   rN   rR   rW   r^   rd   rj   rn   ro   rw   rz   rƒ   r„   r‡   r   rŽ   r   r“   ÚsysÚversionr”   r–   r—   r™   Úversion_inforž   r¢   r¤   r¥   r   r   r   r   r      sD   		
	'
'r   Ú__main__)Z
__future__r   Z	unittest2r¦   Zmock.tests.supportr   r*   Ú	NameErrorr&   rq   rt   Úinspectr§   rš   r   r   r   Z	mock.mockr   ZTestCaser   r{   Úmainr   r   r   r   Ú<module>   s    ÿ û