U
    ÌZj  ã                   @   sN   d Z ddlZG dd„ dejƒZG dd„ dejƒZG dd„ dejƒZd	d
„ ZdS )z!Test adapter declaration helpers
é    Nc                   @   sD   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S )ÚTest_adapterc                 C   s   ddl m} |S )Nr   )Úadapter)Úzope.component._declarationr   )Úselfr   © r   úi/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/site-packages/zope/component/tests/test__declaration.pyÚ_getTargetClass   s    zTest_adapter._getTargetClassc                 G   s   |   ¡ |Ž S ©N)r   )r   Ú
interfacesr   r   r   Ú_makeOne   s    zTest_adapter._makeOnec                 C   s   |   ¡ }|  t|jƒg ¡ d S r	   )r   ÚassertEqualÚlistr
   )r   Údecor   r   r   Útest_ctor_no_interfaces   s    z$Test_adapter.test_ctor_no_interfacesc                 C   sR   ddl m} G dd„ d|ƒ}G dd„ d|ƒ}|  ||¡}|  t|jƒ||g¡ d S )Nr   ©Ú	Interfacec                   @   s   e Zd ZdS )z1Test_adapter.test_ctor_w_interfaces.<locals>.IFooN©Ú__name__Ú
__module__Ú__qualname__r   r   r   r   ÚIFoo!   s   r   c                   @   s   e Zd ZdS )z1Test_adapter.test_ctor_w_interfaces.<locals>.IBarNr   r   r   r   r   ÚIBar#   s   r   )Úzope.interfacer   r   r   r   r
   )r   r   r   r   r   r   r   r   Útest_ctor_w_interfaces   s
    z#Test_adapter.test_ctor_w_interfacesc                 C   s^   ddl m} G dd„ d|ƒ}G dd„ d|ƒ}|  ||¡G dd„ dtƒƒ}|  |j||f¡ d S )	Nr   r   c                   @   s   e Zd ZdS )z/Test_adapter.test__call___w_class.<locals>.IFooNr   r   r   r   r   r   *   s   r   c                   @   s   e Zd ZdS )z/Test_adapter.test__call___w_class.<locals>.IBarNr   r   r   r   r   r   ,   s   r   c                   @   s   e Zd ZdS )z.Test_adapter.test__call___w_class.<locals>.BazNr   r   r   r   r   ÚBaz.   s   r   )r   r   r   Úobjectr   Ú__component_adapts__)r   r   r   r   r   r   r   r   Útest__call___w_class(   s    
z!Test_adapter.test__call___w_classc                 C   sb   ddl m} G dd„ d|ƒ}G dd„ d|ƒ}|  ||¡G dd„ dtƒƒ}|ƒ }|  tt|d	¡ d S )
Nr   r   c                   @   s   e Zd ZdS )zATest_adapter.test__call___w_inst_of_decorated_class.<locals>.IFooNr   r   r   r   r   r   5   s   r   c                   @   s   e Zd ZdS )zATest_adapter.test__call___w_inst_of_decorated_class.<locals>.IBarNr   r   r   r   r   r   7   s   r   c                   @   s   e Zd ZdS )z@Test_adapter.test__call___w_inst_of_decorated_class.<locals>.BazNr   r   r   r   r   r   9   s   r   Z__component_adapts_)r   r   r   r   ÚassertRaisesÚAttributeErrorÚgetattr©r   r   r   r   r   Úbazr   r   r   Ú&test__call___w_inst_of_decorated_class3   s    
  ÿz3Test_adapter.test__call___w_inst_of_decorated_classc                 C   sh   ddl m} G dd„ d|ƒ}G dd„ d|ƒ}G dd„ dtƒ}|  ||¡}||ƒ ƒ}|  |j||f¡ d S )	Nr   r   c                   @   s   e Zd ZdS )z3Test_adapter.test__call___w_non_class.<locals>.IFooNr   r   r   r   r   r   B   s   r   c                   @   s   e Zd ZdS )z3Test_adapter.test__call___w_non_class.<locals>.IBarNr   r   r   r   r   r   D   s   r   c                   @   s   e Zd ZdS )z2Test_adapter.test__call___w_non_class.<locals>.BazNr   r   r   r   r   r   F   s   r   )r   r   r   r   r   r   )r   r   r   r   r   r   r"   r   r   r   Útest__call___w_non_class@   s    
z%Test_adapter.test__call___w_non_classN)
r   r   r   r   r   r   r   r   r#   r$   r   r   r   r   r      s   	r   c                   @   s6   e Zd Zddd„Zdd„ Zdd„ Zdd	„ Zd
d„ ZdS )ÚTest_adaptsTc              	   C   sž   dd l }d}|jdd��|}| ¡  |sPt|||ƒ |  t|ƒd¡ W 5 Q R £ dS zt|||ƒ W n  tk
r€   Y W 5 Q R £ dS X |r�|  d¡ W 5 Q R X d S )Nr   FT©ÚrecordúDidn't raise TypeError)ÚwarningsÚcatch_warningsÚresetwarningsÚexecr   ÚlenÚ	TypeErrorÚfail)r   ÚcodeÚglobsÚlocsZfails_under_py3kr)   ÚPYTHON3Úlogr   r   r   Ú_run_generated_codeO   s    zTest_adapts._run_generated_codec                    sJ   ddl m‰ G ‡fdd„dtƒ‰ |  ˆ jd¡ ‡ fdd„}|  t|¡ d S )Nr   ©Úadaptsc                       s   e Zd Z” ƒ  dS )z2Test_adapts.test_instances_not_affected.<locals>.CNr   r   r6   r   r   ÚCf   s   r8   r   c                      s   ˆ ƒ j S r	   )r   r   )r8   r   r   Ú_tryj   s    z5Test_adapts.test_instances_not_affected.<locals>._try)r   r7   r   r   r   r   r   )r   r9   r   )r8   r7   r   Útest_instances_not_affectedd   s
    z'Test_adapts.test_instances_not_affectedc           
   	   C   s¤   dd l }ddlm} ddlm} G dd„ d|ƒ}||dœ}i }d dd	g¡}|  |||d
¡r |d }|jdd��*}	| ¡  |  	t
|¡ |  t|	ƒd¡ W 5 Q R X d S )Nr   r6   r   c                   @   s   e Zd ZdS )z3Test_adapts.test_called_from_function.<locals>.IFooNr   r   r   r   r   r   r   s   r   ©r7   r   Ú
z
def foo():ú    adapts(IFoo)FÚfooTr&   )r)   r   r7   r   r   Újoinr5   r*   r+   r   r.   r   r-   )
r   r)   r7   r   r   r1   r2   ÚCODEr>   r4   r   r   r   Útest_called_from_functionn   s     
þz%Test_adapts.test_called_from_functionc              	   C   sÔ   dd l }ddlm} ddlm} ddlm} G dd„ d|ƒ}G dd„ d|ƒ}|||d	œ}i }d
 dddg¡}	|jdd��R}
| 	¡  zt
|	||ƒ W n( tk
rº   |s¶|  t|
ƒd¡ Y nX |  d¡ W 5 Q R X d S )Nr   r6   r   )r3   c                   @   s   e Zd ZdS )z6Test_adapts.test_called_twice_from_class.<locals>.IFooNr   r   r   r   r   r   †   s   r   c                   @   s   e Zd ZdS )z6Test_adapts.test_called_twice_from_class.<locals>.IBarNr   r   r   r   r   r   ˆ   s   r   )r7   r   r   r<   úclass Foo(object):r=   z    adapts(IBar)Tr&   r(   )r)   r   r7   r   r   Zzope.interface._compatr3   r?   r*   r+   r,   r.   r   r-   r/   )r   r)   r7   r   r3   r   r   r1   r2   r@   r4   r   r   r   Útest_called_twice_from_class�   s*    ýz(Test_adapts.test_called_twice_from_classc           	      C   sv   ddl m} ddlm} G dd„ d|ƒ}||dœ}i }d dd	g¡}|  |||¡rr|d
 }|j}|  t|ƒ|g¡ d S )Nr   r6   r   c                   @   s   e Zd ZdS )z5Test_adapts.test_called_once_from_class.<locals>.IFooNr   r   r   r   r   r   ž   s   r   r;   r<   rB   r=   ÚFoo)	r   r7   r   r   r?   r5   r   r   r   )	r   r7   r   r   r1   r2   r@   rD   Úspecr   r   r   Útest_called_once_from_class›   s    
þz'Test_adapts.test_called_once_from_classN)T)r   r   r   r5   r:   rA   rC   rF   r   r   r   r   r%   M   s    ÿ

r%   c                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚTest_adaptedByc                 C   s   ddl m} ||ƒS )Nr   )Ú	adaptedBy)r   rH   )r   ÚobjrH   r   r   r   Ú_callFUT®   s    zTest_adaptedBy._callFUTc                 C   s   |   |  tƒ ¡d ¡ d S r	   )r   rJ   r   )r   r   r   r   Útest_obj_w_no_attr²   s    z!Test_adaptedBy.test_obj_w_no_attrc                    s\   ddl m} G dd„ d|ƒ‰G dd„ d|ƒ‰ G ‡ ‡fdd„dtƒ}|  |  |¡ˆˆ f¡ d S )	Nr   r   c                   @   s   e Zd ZdS )z1Test_adaptedBy.test__call___w_class.<locals>.IFooNr   r   r   r   r   r   ·   s   r   c                   @   s   e Zd ZdS )z1Test_adaptedBy.test__call___w_class.<locals>.IBarNr   r   r   r   r   r   ¹   s   r   c                       s   e Zd Z”” fZdS )z0Test_adaptedBy.test__call___w_class.<locals>.BazN©r   r   r   r   r   ©r   r   r   r   r   »   s   r   )r   r   r   r   rJ   )r   r   r   r   rM   r   r   µ   s
    z#Test_adaptedBy.test__call___w_classc                    sl   ddl m} ddlm‰ G dd„ d|ƒ‰G dd„ d|ƒ‰ G ‡ ‡‡fdd	„d	tƒ}|ƒ }|  |  |¡d ¡ d S )
Nr   r   )Ú_adapts_descrc                   @   s   e Zd ZdS )zCTest_adaptedBy.test__call___w_inst_of_decorated_class.<locals>.IFooNr   r   r   r   r   r   Â   s   r   c                   @   s   e Zd ZdS )zCTest_adaptedBy.test__call___w_inst_of_decorated_class.<locals>.IBarNr   r   r   r   r   r   Ä   s   r   c                       s   e Zd Z””” fƒZdS )zBTest_adaptedBy.test__call___w_inst_of_decorated_class.<locals>.BazNrL   r   ©r   r   rN   r   r   r   Æ   s   r   )r   r   r   rN   r   r   rJ   )r   r   r   r"   r   rO   r   r#   ¿   s    z5Test_adaptedBy.test__call___w_inst_of_decorated_classc                 C   sf   ddl m} G dd„ d|ƒ}G dd„ d|ƒ}G dd„ dtƒ}|ƒ }||f|_|  |  |¡||f¡ d S )	Nr   r   c                   @   s   e Zd ZdS )z5Test_adaptedBy.test__call___w_non_class.<locals>.IFooNr   r   r   r   r   r   Í   s   r   c                   @   s   e Zd ZdS )z5Test_adaptedBy.test__call___w_non_class.<locals>.IBarNr   r   r   r   r   r   Ï   s   r   c                   @   s   e Zd ZdS )z4Test_adaptedBy.test__call___w_non_class.<locals>.BazNr   r   r   r   r   r   Ñ   s   r   )r   r   r   r   r   rJ   r!   r   r   r   r$   Ë   s    
z'Test_adaptedBy.test__call___w_non_classN)r   r   r   rJ   rK   r   r#   r$   r   r   r   r   rG   ¬   s
   
rG   c                   C   s"   t  t  t¡t  t¡t  t¡f¡S r	   )ÚunittestZ	TestSuiteZ	makeSuiter   r%   rG   r   r   r   r   Ú
test_suiteØ   s
    ýrQ   )Ú__doc__rP   ZTestCaser   r%   rG   rQ   r   r   r   r   Ú<module>   s
   ;_,