
    daf                         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  G d de j                        Zedk(  r e j                           yy)    N)is_instanceX	SomeClass)Mock	MagicMockNonCallableMagicMockNonCallableMockpatchcreate_autospecCallableMixinc                   T    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zy)TestCallablec                     | j                  t        |t                     | j                  t        |t                     y N)
assertTruer   r   assertFalser   selfmocks     C/root/Python-3.12.4/Lib/test/test_unittest/testmock/testcallable.pyassertNotCallablezTestCallable.assertNotCallable   s+    D*>?@T=9:    c                     t               t               fD ]b  }| j                  t        |       | j	                  t        |d             | j                  |j                  j                  t        |             d y )N__call__)
r   r	   assertRaises	TypeErrorr   hasattrassertIn	__class____name__reprr   s     r   test_non_callablezTestCallable.test_non_callable   s]    (*O,== 	?Di.WT:67MM$..114:>	?r   c                     | j                  t        t        t                     | j                  t        t        t
                     y r   )r   
issubclassr   r   r   r	   r   s    r   test_hierarchyzTestCallable.test_hierarchy   s)    
9d34
#7IJr   c                     t               }| j                  t        t        |j                        t
                     t               }| j                  t        t        |j                        t                     y r   )	r	   r   r$   typeoner   r   twor   )r   r)   r*   s      r   test_attributeszTestCallable.test_attributes#   sH    
4=$78"$
4=)<=r   c                     G d dt               } |       }| j                  t        t        |j                        |              G d dt
              } |       }| j                  t        t        |j                        |             y )Nc                       e Zd Zy)-TestCallable.test_subclasses.<locals>.MockSubNr    
__module____qualname__ r   r   MockSubr.   ,       r   r3   c                       e Zd Zy).TestCallable.test_subclasses.<locals>.MagicSubNr/   r2   r   r   MagicSubr6   2   r4   r   r7   )r   r   r$   r(   r)   r   r*   )r   r3   r)   r7   r*   s        r   test_subclasseszTestCallable.test_subclasses+   sb    	d 	 i
4=':;	y 	 j
4=(;<r   c                     t        dt        z  d      }|j                         }| j                  |j                          |       }|j                          | j                  |       | j                  t        |       y )N%s.XTspec	r
   r    start
addCleanupstopassert_called_once_withr   r   r   r   patcherr   instances       r   test_patch_speczTestCallable.test_patch_spec9   s_    )5}}%6$$&x()X.r   c                     t        dt        z  d      }|j                         }| j                  |j                          |       }|j                          | j                  |       | j                  t        |       y )Nr:   Tspec_setr=   rB   s       r   test_patch_spec_setz TestCallable.test_patch_spec_setE   s_    )D9}}%6$$&x()X.r   c                     t        dt        z  t                     }|j                         }| j	                  |j
                         | j                  |       | j                  t        |       y )Nr:   r;   	r
   r    r   r>   r?   r@   r   r   r   r   rC   r   s      r   test_patch_spec_instancez%TestCallable.test_patch_spec_instanceQ   sN    )4}}%t$)T*r   c                     t        dt        z  t                     }|j                         }| j	                  |j
                         | j                  |       | j                  t        |       y )Nr:   rG   rK   rL   s      r   test_patch_spec_set_instancez)TestCallable.test_patch_spec_set_instanceZ   sN    )AC8}}%t$)T*r   c           	      :    G d dt               } G d d|      } G d dt        |      }dD ]  }|||fD ]  }t        dt        z  fi ||i5 } |       }|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       d d d          y # 1 sw Y   xY w)Nc                       e Zd Zd Zy)>TestCallable.test_patch_spec_callable_class.<locals>.CallableXc                      y r   r2   r%   s    r   r   zGTestCallable.test_patch_spec_callable_class.<locals>.CallableX.__call__e   s    r   N)r    r0   r1   r   r2   r   r   	CallableXrR   d   s    $r   rT   c                       e Zd Zy)8TestCallable.test_patch_spec_callable_class.<locals>.SubNr/   r2   r   r   SubrV   g   r4   r   rW   c                       e Zd Zy):TestCallable.test_patch_spec_callable_class.<locals>.MultiNr/   r2   r   r   MultirY   j   r4   r   rZ   )r<   rH   r:   	foobarbaz         )r   r   r
   r    rA   r   r   r   r   AttributeErrorgetattrfoo)	r   rT   rW   rZ   argKlassr   rD   results	            r   test_patch_spec_callable_classz+TestCallable.test_patch_spec_callable_classc   s   	% 	%	) 		Is 	 & 	@C"C. @6H,=e= @#vH002OOK)$DE%%ngx&13 &ZF4461aO221a;JJq!Q'JJ66q!Q?!@ @@	@@ @s   B7DDc                     t        t              } |       }| j                  t        |       t        t                     }| j                  t        |       y r   )r   r   r   r   )r   r   rD   s      r   test_create_autospecz!TestCallable.test_create_autospec   s?    q!6)X.qs#)T*r   c                     t        t        d      }| j                  t        |       |j	                          |j                  j                          | j                  t        |j                  dd       y )NT)rD   someargs)r   r   r   r   wibblerA   r   s     r   test_create_autospec_instancez*TestCallable.test_create_autospec_instance   sO    y48)T*++-)T[[&6Br   N)r    r0   r1   r   r"   r&   r+   r8   rE   rI   rM   rO   re   rg   rl   r2   r   r   r   r      sA    ;
?K
>=	/	/++@>+Cr   r   __main__)unittest#test.test_unittest.testmock.supportr   r   r   unittest.mockr   r   r   r	   r
   r   r   TestCaser   r    mainr2   r   r   <module>rs      sP   
  I I  BC8$$ BCJ zHMMO r   