U
    ,W/                     @   s   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G d	d
 d
ejZG dd dejZG dd dejZG dd dejZ	G dd dejZ
G dd dejZe ZG dd deZG dd deZdd ZdS )zTests for z.c.hooks
    Nc                   @   s$   e Zd Zdd Zdd Zdd ZdS )Test_read_propertyc                 C   s   ddl m} |S )Nr   )read_property)zope.component.hooksr   )selfr    r   A/usr/lib/python3/dist-packages/zope/component/tests/test_hooks.py_getTargetClass   s    z"Test_read_property._getTargetClassc                    sR   G  fdddt }| } |jd d|_ |jd |` |jd d S )Nc                       s   e Zd Z  dd ZdS )z1Test_read_property.test_via_instance.<locals>.Fooc                 S   s   dS NBARr   r   r   r   r   bar   s    z5Test_read_property.test_via_instance.<locals>.Foo.barN__name__
__module____qualname__r   r   r   r   r   r   Foo   s   r   r
   ZBAZ)objectassertEqualr   )r   r   Zfoor   r   r   test_via_instance   s    z$Test_read_property.test_via_instancec                    sF   G  fdddt }|j} t|    |t  d d S )Nc                       s   e Zd Z  dd ZdS )z.Test_read_property.test_via_class.<locals>.Fooc                 S   s   dS r	   r   r   r   r   r   r   '   s    z2Test_read_property.test_via_class.<locals>.Foo.barNr   r   r   r   r   r   &   s   r   r
   )r   r   
assertTrue
isinstancer   r   func)r   r   r   r   r   r   test_via_class%   s    z!Test_read_property.test_via_classN)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	S )
SiteInfoTestsc                 C   s   ddl m} |S )Nr   )SiteInfo)r   r   )r   r   r   r   r   r   1   s    zSiteInfoTests._getTargetClassc                 C   s
   |    S N)r   r   r   r   r   _makeOne5   s    zSiteInfoTests._makeOnec                 C   s<   ddl m} | }|  }| |jd  | |j|k d S )Nr   getGlobalSiteManager)zope.component.globalregistryr   r   r   siter   sm)r   r   gsmsir   r   r   test_initial8   s
    zSiteInfoTests.test_initialc                    s   t  G fdddt  G  fdddt }|  }| |_| d|jk | |jk | d|jk |`| d|jk d S )Nc                       s   e Zd Z ZdS )z2SiteInfoTests.test_adapter_hook.<locals>._RegistryN)r   r   r   adapter_hookr   )_hookr   r   	_RegistryA   s   r'   c                       s   e Zd Z  ZdS )z5SiteInfoTests.test_adapter_hook.<locals>._SiteManagerN)r   r   r   Zadaptersr   )r'   r   r   _SiteManagerC   s   r(   r%   )r   r   r!   assertFalse__dict__r   r%   )r   r(   r#   r   )r'   r&   r   test_adapter_hook?   s    zSiteInfoTests.test_adapter_hookN)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S )Test_setSitec                 C   s   ddl m} ||S )Nr   )setSite)r   r-   )r   r    r-   r   r   r   _callFUTP   s    zTest_setSite._callFUTc              	   C   s   ddl m} ddlm} | }t }t }t }t }||_||_||_t	||d | 
d  W 5 Q R X | |j|k | |jd k | d|jk d S )Nr   hooksr   siteinfor%   )zope.componentr0   r   r   r   _DummySiteInfor!   r    Zadapterhook_Monkeyr.   r   r)   r*   )r   r0   r   r"   _SM2_SITEZ_HOOKr2   r   r   r   test_w_NoneT   s    zTest_setSite.test_w_Nonec              	      s   ddl m} t  G  fdddt}t }| }t||d | | W 5 Q R X | |j k | |j|k | 	d|j
k d S )Nr   r/   c                       s   e Zd Z fddZdS )z'Test_setSite.test_w_site.<locals>._Sitec                    s    S r   r   r   r6   r   r   getSiteManageri   s    z6Test_setSite.test_w_site.<locals>._Site.getSiteManagerNr   r   r   r:   r   r9   r   r   _Siteh   s   r<   r1   r%   )r3   r0   r   r4   r5   r.   r   r!   r    r)   r*   )r   r0   r<   r2   _siter   r9   r   test_w_sitee   s    zTest_setSite.test_w_siteNr   r   r   r.   r8   r>   r   r   r   r   r,   N   s   r,   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )Test_getSitec                 C   s   ddl m} | S )Nr   )getSite)r   rA   )r   rA   r   r   r   r.   v   s    zTest_getSite._callFUTc              	   C   sR   ddl m} ddlm} | }t }t||d | |  d k W 5 Q R X d S Nr   r/   r   r1   )r3   r0   r   r   r4   r5   r   r.   )r   r0   r   r"   r2   r   r   r   r8   z   s    zTest_getSite.test_w_Nonec              	   C   sj   ddl m} ddlm} | }t }t }t }||_||_t||d | 	| 
 |k W 5 Q R X d S rB   )r3   r0   r   r   r   r4   r!   r    r5   r   r.   )r   r0   r   r"   r6   r7   r2   r   r   r   r>      s    zTest_getSite.test_w_siteNr?   r   r   r   r   r@   t   s   r@   c                   @   s   e Zd Zdd Zdd ZdS )	Test_sitec                 C   s   ddl m} ||S )Nr   )r    )r   r    )r   Znew_siter    r   r   r   r.      s    zTest_site._callFUTc              
      s   ddl m} ddlm} | }t  G  fdddt}| }t }| |jd k | |jt	k t
||d\ | |& | |j|k | |j k W 5 Q R X | |jd k | |j|k W 5 Q R X d S )Nr   r/   r   c                       s   e Zd Z fddZdS )z Test_site.test_it.<locals>._Sitec                    s    S r   r   r   r9   r   r   r:      s    z/Test_site.test_it.<locals>._Site.getSiteManagerNr;   r   r9   r   r   r<      s   r<   r1   )r3   r0   r   r   r   r4   r   r    r!   _SMr5   r.   )r   r0   r   r"   r<   r=   r2   r   r9   r   test_it   s    zTest_site.test_itNr   r   r   r.   rE   r   r   r   r   rC      s   rC   c                   @   s.   e Zd Zd
ddZdd Zdd Zdd	 ZdS )Test_getSiteManagerNc                 C   s   ddl m} ||S )Nr   )r:   )r   r:   )r   contextr:   r   r   r   r.      s    zTest_getSiteManager._callFUTc              	   C   s^   ddl m} ddlm} | }t }t }||_t||d | | 	 |k W 5 Q R X d S rB   
r3   r0   r   r   r   r4   r!   r5   r   r.   r   r0   r   r"   r6   r2   r   r   r   test_default   s    z Test_getSiteManager.test_defaultc              	   C   sb   ddl m} ddlm} | }t }t }||_t||d | | 	t |k W 5 Q R X d S rB   rI   rJ   r   r   r   +test_w_explicit_context_no_IComponentLookup   s    z?Test_getSiteManager.test_w_explicit_context_no_IComponentLookupc              	   C   s   ddl m} ddlm} ddlm} ddlm} G dd dt}| }|	||f|d t }t
 }||_t }	t||d	 | |	}
W 5 Q R X | t|
| | |
j|	k d S )
Nr   	Interfacer/   r   )IComponentLookupc                   @   s   e Zd Zdd ZdS )zOTest_getSiteManager.test_w_explicit_context_w_IComponentLookup.<locals>._Lookupc                 S   s
   || _ d S r   )rH   )r   rH   r   r   r   __init__   s    zXTest_getSiteManager.test_w_explicit_context_w_IComponentLookup.<locals>._Lookup.__init__N)r   r   r   rP   r   r   r   r   _Lookup   s   rQ    r1   )zope.interfacerN   r3   r0   r   r   zope.component.interfacesrO   r   ZregisterAdapterr4   r!   r5   r.   r   r   rH   )r   rN   r0   r   rO   rQ   r"   r6   r2   rH   r!   r   r   r   *test_w_explicit_context_w_IComponentLookup   s    z>Test_getSiteManager.test_w_explicit_context_w_IComponentLookup)N)r   r   r   r.   rK   rL   rU   r   r   r   r   rG      s   


rG   c                   @   s&   e Zd Zd	ddZdd Zdd ZdS )
Test_adapter_hookrR   Nc                 C   s   ddl m} |||||S )Nr   )r%   )r   r%   )r   	interfacer   namedefaultr%   r   r   r   r.      s    zTest_adapter_hook._callFUTc              	      s   ddl m} ddlm} ddlm} G dd d|}| }t  t }t }g  fdd}t }	||	_t	||	d	 | 
||d
|}
W 5 Q R X | |
 k | ||d
|fg d S )Nr   rM   r/   r   c                   @   s   e Zd ZdS )z,Test_adapter_hook.test_success.<locals>.IFooNr   r   r   r   r   r   r   IFoo   s   r[   c                    s    | |||f  S r   appendrW   r   rX   rY   Z_ADAPTER_calledr   r   _adapter_hook   s    z5Test_adapter_hook.test_success.<locals>._adapter_hookr1   r   )rS   rN   r3   r0   r   r   r   r4   r%   r5   r.   r   r   r   rN   r0   r   r[   r"   Z_DEFAULTZ_CONTEXTra   r2   Zadapterr   r_   r   test_success   s     zTest_adapter_hook.test_successc              	      s   ddl m} ddlm} ddlm} ddlm  G dd d|}| }t }t }g  fdd	}t	 }	||	_
t||	d
 | ||d|}
W 5 Q R X | |
|k | ||d|fg d S )Nr   rM   r/   r   )ComponentLookupErrorc                   @   s   e Zd ZdS )z0Test_adapter_hook.test_hook_raises.<locals>.IFooNrZ   r   r   r   r   r[      s   r[   c                    s    | |||f  dd S )NZtestingr\   r^   rd   r`   r   r   ra      s    z9Test_adapter_hook.test_hook_raises.<locals>._adapter_hookr1   r   )rS   rN   r3   r0   r   r   rT   rd   r   r4   r%   r5   r.   r   r   rb   r   re   r   test_hook_raises   s     z"Test_adapter_hook.test_hook_raises)rR   N)r   r   r   r.   rc   rf   r   r   r   r   rV      s   
rV   c                   @   s   e Zd Zdd Zdd ZdS )Test_setHooksc                 C   s   ddl m} | S )Nr   )setHooks)r   rh   )r   rh   r   r   r   r.   
  s    zTest_setHooks._callFUTc              	   C   sz   dd l }ddlm} G dd dt}| }| }t|jj||d |   W 5 Q R X | |j	|j
 | |j	|j d S )Nr   r/   c                   @   s   e Zd Zdd Zdd ZdS )z$Test_setHooks.test_it.<locals>._Hookc                 S   s
   d | _ d S r   _hookedr   r   r   r   rP     s    z-Test_setHooks.test_it.<locals>._Hook.__init__c                 S   s
   || _ d S r   ri   )r   valuer   r   r   sethook  s    z,Test_setHooks.test_it.<locals>._Hook.sethookN)r   r   r   rP   rl   r   r   r   r   _Hook  s   rm   r%   r:   )zope.component._apir3   r0   r   r5   	component_apir.   r   rj   r%   r:   r   zoper0   rm   r%   r:   r   r   r   rE     s    zTest_setHooks.test_itNrF   r   r   r   r   rg     s   rg   c                   @   s   e Zd Zdd Zdd ZdS )Test_resetHooksc                 C   s   ddl m} | S )Nr   )
resetHooks)r   ru   )r   ru   r   r   r   r.   "  s    zTest_resetHooks._callFUTc              	   C   s   dd l }ddlm} G dd dt}| }| }t|jj||d, t|jd | 	d|jj
k |   W 5 Q R X | 	|j | 	|j | d|jj
k d S )Nr   r/   c                   @   s   e Zd Zdd Zdd ZdS )z&Test_resetHooks.test_it.<locals>._Hookc                 S   s
   d| _ d S )NF_resetr   r   r   r   rP   *  s    z/Test_resetHooks.test_it.<locals>._Hook.__init__c                 S   s
   d| _ d S )NTrv   r   r   r   r   reset,  s    z,Test_resetHooks.test_it.<locals>._Hook.resetN)r   r   r   rP   rx   r   r   r   r   rm   )  s   rm   rn   r%   )ro   r3   r0   r   r5   rp   rq   getattrr2   r   r*   r.   rw   r)   rr   r   r   r   rE   &  s    zTest_resetHooks.test_itNrF   r   r   r   r   rt      s   rt   c                   @   s   e Zd ZeZdZdS )r4   N)r   r   r   rD   r!   r    r   r   r   r   r4   A  s   r4   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )r5   c                    s@    | _ t fdd|D | _| D ]\}}t || q&d S )Nc                    s   g | ]}|t  |fqS r   )ry   ).0keymoduler   r   
<listcomp>I  s     z$_Monkey.__init__.<locals>.<listcomp>)r}   dict
to_restoreitemssetattr)r   r}   kwr{   rk   r   r|   r   rP   G  s    z_Monkey.__init__c                 C   s   | S r   r   r   r   r   r   	__enter__M  s    z_Monkey.__enter__c                 C   s&   | j  D ]\}}t| j|| q
d S r   )r   r   r   r}   )r   exc_typeZexc_valexc_tbr{   rk   r   r   r   __exit__P  s    z_Monkey.__exit__N)r   r   r   rP   r   r   r   r   r   r   r5   E  s   r5   c                   C   sR   t t tt tt tt tt tt tt t	t t
t tf	S r   )unittestZ	TestSuiteZ	makeSuiter   r   r,   r@   rC   rG   rV   rg   rt   r   r   r   r   
test_suiteU  s    r   )__doc__r   ZTestCaser   r   r,   r@   rC   rG   rV   rg   rt   r   rD   r4   r5   r   r   r   r   r   <module>   s   &.1 