
nUO                 @   s   d  d l  Z d  d l m Z m Z m Z d  d l m Z m Z m	 Z	 m
 Z
 m Z m Z m Z Gd d   d e j  Z e d k r e j   d S)    N)is_instanceX	SomeClass)Mock	MagicMockNonCallableMagicMockNonCallableMockpatchcreate_autospecCallableMixinc               @   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 S)TestCallablec             C   s0   |  j  t | t   |  j t | t   d  S)N)
assertTruer   r   assertFalser   )selfmock r   9/usr/lib/python3/dist-packages/mock/tests/testcallable.pyassertNotCallable   s    zTestCallable.assertNotCallablec             C   sc   x\ t    t   f D]H } |  j t |  |  j t | d   |  j | j j t	 |   q Wd  S)N__call__)
r   r   assertRaises	TypeErrorr   hasattrZassertIn	__class____name__repr)r   r   r   r   r   test_non_callable   s    zTestCallable.test_non_callablec             C   s0   |  j  t t t   |  j  t t t   d  S)N)r   
issubclassr   r   r   r   )r   r   r   r   test_heirarchy   s    zTestCallable.test_heirarchyc             C   sT   t    } |  j t t | j  t   t   } |  j t t | j  t   d  S)N)	r   r   r   typeoner   r   twor   )r   r   r    r   r   r   test_attributes#   s    		zTestCallable.test_attributesc             C   s   Gd d   d t   } |   } |  j t t | j  |   Gd d   d t  } |   } |  j t t | j  |   d  S)Nc               @   s   e  Z d  Z d S)z-TestCallable.test_subclasses.<locals>.MockSubN)r   
__module____qualname__r   r   r   r   MockSub,   s   r$   c               @   s   e  Z d  Z d S)z.TestCallable.test_subclasses.<locals>.MagicSubN)r   r"   r#   r   r   r   r   MagicSub2   s   r%   )r   r   r   r   r   r   r    )r   r$   r   r%   r    r   r   r   test_subclasses+   s    		zTestCallable.test_subclassesc             C   sf   t  d t d d } | j   } |  j | j  |   } | j   |  j |  |  j t |  d  S)Nz%s.XspecT)	r	   r   start
addCleanupstopassert_called_once_withr   r   r   )r   patcherr   instancer   r   r   test_patch_spec9   s    	
zTestCallable.test_patch_specc             C   sf   t  d t d d } | j   } |  j | j  |   } | j   |  j |  |  j t |  d  S)Nz%s.Xspec_setT)	r	   r   r(   r)   r*   r+   r   r   r   )r   r,   r   r-   r   r   r   test_patch_spec_setE   s    	
z TestCallable.test_patch_spec_setc             C   sV   t  d t d t   } | j   } |  j | j  |  j |  |  j t |  d  S)Nz%s.Xr'   )	r	   r   r   r(   r)   r*   r   r   r   )r   r,   r   r   r   r   test_patch_spec_instanceQ   s
    z%TestCallable.test_patch_spec_instancec             C   sV   t  d t d t   } | j   } |  j | j  |  j |  |  j t |  d  S)Nz%s.Xr/   )	r	   r   r   r(   r)   r*   r   r   r   )r   r,   r   r   r   r   test_patch_spec_set_instanceZ   s
    z)TestCallable.test_patch_spec_set_instancec             C   sd  Gd d   d t   } Gd d   d |  } Gd d   d t |  } Gd d   d  } Gd	 d
   d
 |  } x d D] } x | | | | | f D] } t d t | | i   } |   }	 | j   |  j t |	 t   |  j t	 t
 |	 d  |	   }
 |	 j   |
 d d d  |
 j d d d  |
 j d d d  |
 j j d d d  Wd  QRXq Wqu Wd  S)Nc               @   s   e  Z d  Z d d   Z d S)z>TestCallable.test_patch_spec_callable_class.<locals>.CallableXc             S   s   d  S)Nr   )r   r   r   r   r   e   s    zGTestCallable.test_patch_spec_callable_class.<locals>.CallableX.__call__N)r   r"   r#   r   r   r   r   r   	CallableXd   s   r3   c               @   s   e  Z d  Z d S)z8TestCallable.test_patch_spec_callable_class.<locals>.SubN)r   r"   r#   r   r   r   r   Subh   s   r4   c               @   s   e  Z d  Z d S)z:TestCallable.test_patch_spec_callable_class.<locals>.MultiN)r   r"   r#   r   r   r   r   Multik   s   r5   c               @   s   e  Z d  Z d d   Z d S)z=TestCallable.test_patch_spec_callable_class.<locals>.OldStylec             S   s   d  S)Nr   )r   r   r   r   r   o   s    zFTestCallable.test_patch_spec_callable_class.<locals>.OldStyle.__call__N)r   r"   r#   r   r   r   r   r   OldStylen   s   r6   c               @   s   e  Z d  Z d S)z@TestCallable.test_patch_spec_callable_class.<locals>.OldStyleSubN)r   r"   r#   r   r   r   r   OldStyleSubr   s   r7   r'   r/   z%s.XZ	foobarbaz         )zspeczspec_set)r   r   r	   r   r+   r   r   r   r   AttributeErrorgetattrZfoo)r   r3   r4   r5   r6   r7   argZKlassr   r-   resultr   r   r   test_patch_spec_callable_classc   s&    	
	
z+TestCallable.test_patch_spec_callable_classc             C   sH   t  t  } |   } |  j t |  t  t    } |  j t |  d  S)N)r
   r   r   r   )r   r   r-   r   r   r   test_create_autospec   s
    	z!TestCallable.test_create_autospecc             C   sV   t  t d d } |  j t |  | j   | j j   |  j t | j d d  d  S)Nr-   TZsomeargs)r
   r   r   r   Zwibbler+   )r   r   r   r   r   test_create_autospec_instance   s
    
z*TestCallable.test_create_autospec_instanceN)r   r"   r#   r   r   r   r!   r&   r.   r0   r1   r2   r?   r@   rB   r   r   r   r   r      s   		'	r   __main__)Z	unittest2ZunittestZmock.tests.supportr   r   r   r   r   r   r   r   r	   r
   r   ZTestCaser   r   mainr   r   r   r   <module>   s
   4