U
    ,W!                     @   sr   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dd ZdS )z Tests for z.c._api
    Nc                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
Test_getGlobalSiteManagerc                 C   s   ddl m} | S )Nr   getGlobalSiteManager)zope.component.globalregistryr   )selfr    r   J/usr/lib/python3/dist-packages/zope/component/tests/test_globalregistry.py_callFUT   s    z"Test_getGlobalSiteManager._callFUTc                 C   sB   ddl m} ddlm} |  }| ||k | || d S )Nr   )base)IComponentLookup)r   r
   Zzope.component.interfacesr   r	   
assertTrue
providedBy)r   r
   r   gsmr   r   r   test_gsm_is_IComponentLookup   s
    z6Test_getGlobalSiteManager.test_gsm_is_IComponentLookupc                 C   s   |   }| |   |k d S N)r	   r   )r   r   r   r   r   test_gsm_is_singleton   s    z/Test_getGlobalSiteManager.test_gsm_is_singletonc           	      C   s   ddl m} |  }||}||}| ||k ||j}||}| ||jk ||j}||}| ||jk d S )Nr   )_pickle)Zzope.component._compatr   r	   dumpsloadsr   Z	utilitiesZadapters)	r   r   r   ZdumpedZloadedZdumped_utilitiesZloaded_utilitiesZdumped_adaptersZloaded_adaptersr   r   r   test_gsm_pickling#   s    



z+Test_getGlobalSiteManager.test_gsm_picklingN)__name__
__module____qualname__r	   r   r   r   r   r   r   r   r      s   r   c                   @   s4   e Zd ZddlmZmZ dd Zdd Zdd Zd	S )
Test_provideUtilityr   setUptearDownc                 O   s   ddl m} |||S )Nr   )provideUtility)r   r   )r   argskwr   r   r   r   r	   7   s    zTest_provideUtility._callFUTc                 C   s|   ddl m} ddl m} ddlm} G dd d|}||G dd dt}| }| | | }| ||d	|k d S )
Nr   	Interfaceimplementerr   c                   @   s   e Zd ZdS )z<Test_provideUtility.test_anonymous_no_provides.<locals>.IFooNr   r   r   r   r   r   r   IFoo?   s   r%   c                   @   s   e Zd ZdS )z;Test_provideUtility.test_anonymous_no_provides.<locals>.FooNr$   r   r   r   r   FooA   s   r&    )	zope.interfacer!   r#   r   r   objectr	   r   
getUtility)r   r!   r#   r   r%   r&   foor   r   r   r   test_anonymous_no_provides;   s    
z.Test_provideUtility.test_anonymous_no_providesc                 C   sl   ddl m} ddlm} G dd d|}G dd dt}| }| ||d | }| ||d|k d S )	Nr   r    r   c                   @   s   e Zd ZdS )z7Test_provideUtility.test_named_w_provides.<locals>.IFooNr$   r   r   r   r   r%   L   s   r%   c                   @   s   e Zd ZdS )z6Test_provideUtility.test_named_w_provides.<locals>.FooNr$   r   r   r   r   r&   N   s   r&   Znamed)r(   r!   r   r   r)   r	   r   r*   )r   r!   r   r%   r&   r+   r   r   r   r   test_named_w_providesI   s    z)Test_provideUtility.test_named_w_providesN)	r   r   r   zope.component.testingr   r   r	   r,   r-   r   r   r   r   r   3   s   r   c                   @   s4   e Zd ZddlmZmZ dd Zdd Zdd Zd	S )
Test_provideAdapterr   r   c                 O   s   ddl m} |||S )Nr   )provideAdapter)r   r0   )r   r   r   r0   r   r   r   r	   Z   s    zTest_provideAdapter._callFUTc                 C   s   ddl m} ddl m} ddlm} ddlm} G dd d|}G dd	 d	|}||G d
d dt}||||G dd dt}| | | }	| }
|		|
|}| 
t|| | 
|j|
k d S )Nr   r    r"   r   adapterc                   @   s   e Zd ZdS )zFTest_provideAdapter.test_anonymous_no_provides_no_adapts.<locals>.IFooNr$   r   r   r   r   r%   c   s   r%   c                   @   s   e Zd ZdS )zFTest_provideAdapter.test_anonymous_no_provides_no_adapts.<locals>.IBarNr$   r   r   r   r   IBare   s   r3   c                   @   s   e Zd ZdS )zETest_provideAdapter.test_anonymous_no_provides_no_adapts.<locals>.FooNr$   r   r   r   r   r&   g   s   r&   c                   @   s   e Zd Zdd ZdS )zETest_provideAdapter.test_anonymous_no_provides_no_adapts.<locals>.Barc                 S   s
   || _ d S r   contextr   r5   r   r   r   __init__m   s    zNTest_provideAdapter.test_anonymous_no_provides_no_adapts.<locals>.Bar.__init__Nr   r   r   r7   r   r   r   r   Barj   s   r9   )r(   r!   r#   r   r   zope.component._apir2   r)   r	   
getAdapterr   
isinstancer5   r   r!   r#   r   r2   r%   r3   r&   r9   r   r+   adaptedr   r   r   $test_anonymous_no_provides_no_adapts^   s"    
z8Test_provideAdapter.test_anonymous_no_provides_no_adaptsc                 C   s   ddl m} ddl m} ddlm} G dd d|}G dd d|}||G d	d
 d
t}G dd dt}| ||f|d | }| }	|j|	|dd}
| t	|
| | |
j
|	k d S )Nr   r    r"   r   c                   @   s   e Zd ZdS )z@Test_provideAdapter.test_named_w_provides_w_adapts.<locals>.IFooNr$   r   r   r   r   r%   z   s   r%   c                   @   s   e Zd ZdS )z@Test_provideAdapter.test_named_w_provides_w_adapts.<locals>.IBarNr$   r   r   r   r   r3   |   s   r3   c                   @   s   e Zd ZdS )z?Test_provideAdapter.test_named_w_provides_w_adapts.<locals>.FooNr$   r   r   r   r   r&   ~   s   r&   c                   @   s   e Zd Zdd ZdS )z?Test_provideAdapter.test_named_w_provides_w_adapts.<locals>.Barc                 S   s
   || _ d S r   r4   r6   r   r   r   r7      s    zHTest_provideAdapter.test_named_w_provides_w_adapts.<locals>.Bar.__init__Nr8   r   r   r   r   r9      s   r9   Ztest)name)r(   r!   r#   r   r   r)   r	   r;   r   r<   r5   r   r!   r#   r   r%   r3   r&   r9   r   r+   r>   r   r   r   test_named_w_provides_w_adaptsv   s    z2Test_provideAdapter.test_named_w_provides_w_adaptsN)	r   r   r   r.   r   r   r	   r?   rB   r   r   r   r   r/   V   s   r/   c                   @   s4   e Zd ZddlmZmZ dd Zdd Zdd Zd	S )
Test_provideSubscriptionAdapterr   r   c                 O   s   ddl m} |||S )Nr   )provideSubscriptionAdapter)r   rD   )r   r   r   rD   r   r   r   r	      s    z(Test_provideSubscriptionAdapter._callFUTc                 C   s   ddl m} ddl m} ddlm} ddlm} G dd d|}G dd	 d	|}||G d
d dt}||||G dd dt}| | | }	| }
|		|
f|}| 
t|d | t|d | | |d j|
k d S )Nr   r    r"   r   r1   c                   @   s   e Zd ZdS )zHTest_provideSubscriptionAdapter.test_no_provides_no_adapts.<locals>.IFooNr$   r   r   r   r   r%      s   r%   c                   @   s   e Zd ZdS )zHTest_provideSubscriptionAdapter.test_no_provides_no_adapts.<locals>.IBarNr$   r   r   r   r   r3      s   r3   c                   @   s   e Zd ZdS )zGTest_provideSubscriptionAdapter.test_no_provides_no_adapts.<locals>.FooNr$   r   r   r   r   r&      s   r&   c                   @   s   e Zd Zdd ZdS )zGTest_provideSubscriptionAdapter.test_no_provides_no_adapts.<locals>.Barc                 S   s
   || _ d S r   r4   r6   r   r   r   r7      s    zPTest_provideSubscriptionAdapter.test_no_provides_no_adapts.<locals>.Bar.__init__Nr8   r   r   r   r   r9      s   r9      )r(   r!   r#   r   r   r:   r2   r)   r	   subscribersassertEquallenr   r<   r5   r=   r   r   r   test_no_provides_no_adapts   s$    
z:Test_provideSubscriptionAdapter.test_no_provides_no_adaptsc                 C   s   ddl m} ddl m} ddlm} G dd d|}G dd d|}||G d	d
 d
t}G dd dt}| ||f| | }| }	||	f|}
| t	|
d | 
t|
d | | 
|
d j|	k d S )Nr   r    r"   r   c                   @   s   e Zd ZdS )zFTest_provideSubscriptionAdapter.test_w_provides_w_adapts.<locals>.IFooNr$   r   r   r   r   r%      s   r%   c                   @   s   e Zd ZdS )zFTest_provideSubscriptionAdapter.test_w_provides_w_adapts.<locals>.IBarNr$   r   r   r   r   r3      s   r3   c                   @   s   e Zd ZdS )zETest_provideSubscriptionAdapter.test_w_provides_w_adapts.<locals>.FooNr$   r   r   r   r   r&      s   r&   c                   @   s   e Zd Zdd ZdS )zETest_provideSubscriptionAdapter.test_w_provides_w_adapts.<locals>.Barc                 S   s
   || _ d S r   r4   r6   r   r   r   r7      s    zNTest_provideSubscriptionAdapter.test_w_provides_w_adapts.<locals>.Bar.__init__Nr8   r   r   r   r   r9      s   r9   rE   )r(   r!   r#   r   r   r)   r	   rF   rG   rH   r   r<   r5   rA   r   r   r   test_w_provides_w_adapts   s    z8Test_provideSubscriptionAdapter.test_w_provides_w_adaptsN)	r   r   r   r.   r   r   r	   rI   rJ   r   r   r   r   rC      s   rC   c                   @   s4   e Zd ZddlmZmZ dd Zdd Zdd Zd	S )
Test_provideHandlerr   r   c                 O   s   ddl m} |||S )Nr   )provideHandler)r   rL   )r   r   r   rL   r   r   r   r	      s    zTest_provideHandler._callFUTc                 C   s   ddl m} ddl m} ddl m} ddlm} ddlm} G dd d|}||G d	d
 d
t}||dd }| 	| | }	t
|	 }
| t|
d |
d }| t
|jt
||  | |jd | |j|k d S )Nr   r    r"   )r   r   r1   c                   @   s   e Zd ZdS )z0Test_provideHandler.test_no_adapts.<locals>.IFooNr$   r   r   r   r   r%      s   r%   c                   @   s   e Zd ZdS )z/Test_provideHandler.test_no_adapts.<locals>.FooNr$   r   r   r   r   r&      s   r&   c                 S   s   dst dd S Nr   zDON'T GO HEREAssertionErrorr4   r   r   r   _handler   s    z4Test_provideHandler.test_no_adapts.<locals>._handlerrE   r'   )r(   r!   r#   r   r   r   r:   r2   r)   r	   listregisteredHandlersrG   rH   requiredr@   r   factory)r   r!   r#   r   r   r2   r%   r&   rP   r   regshrr   r   r   test_no_adapts   s$    

z"Test_provideHandler.test_no_adaptsc                 C   s   ddl m} ddlm} G dd d|}dd }| ||f | }t| }| t|d |d }| t|j	|g | |j
d	 | |j|k d S )
Nr   r    r   c                   @   s   e Zd ZdS )z/Test_provideHandler.test_w_adapts.<locals>.IFooNr$   r   r   r   r   r%      s   r%   c                 S   s   dst dd S rM   rN   r4   r   r   r   rP      s    z3Test_provideHandler.test_w_adapts.<locals>._handlerrE   r'   )r(   r!   r   r   r	   rQ   rR   rG   rH   rS   r@   r   rT   )r   r!   r   r%   rP   r   rU   rV   r   r   r   test_w_adapts   s    z!Test_provideHandler.test_w_adaptsN)	r   r   r   r.   r   r   r	   rW   rX   r   r   r   r   rK      s   rK   c                	   C   s2   t t tt tt tt tt tfS r   )unittestZ	TestSuiteZ	makeSuiter   r   r/   rC   rK   r   r   r   r   
test_suite   s    rZ   )	__doc__rY   ZTestCaser   r   r/   rC   rK   rZ   r   r   r   r   <module>   s   !#680