U
    ,W/                     @   sp   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Zdd Z	dS )zTests for z.c.registry
    Nc                   @   s,   e Zd ZddlmZmZ dd Zdd ZdS )%Test_dispatchUtilityRegistrationEventr   setUptearDownc                 O   s   ddl m} |||S )Nr   ) dispatchUtilityRegistrationEvent)zope.component.registryr   )selfargskwr    r   D/usr/lib/python3/dist-packages/zope/component/tests/test_registry.py_callFUT   s    z.Test_dispatchUtilityRegistrationEvent._callFUTc              	      sp   ddl m} G dd dt}t }g   fdd}t||d | | | W 5 Q R X |  |j|fg d S )Nr   registryc                   @   s   e Zd Ze ZdS )zDTest_dispatchUtilityRegistrationEvent.test_it.<locals>._RegistrationN)__name__
__module____qualname__object	componentr   r   r   r   _Registration   s   r   c                     s     |  d S Nappendr	   Z_handledr   r   _handle!   s    z>Test_dispatchUtilityRegistrationEvent.test_it.<locals>._handleZhandle)zope.componentr   r   _Monkeyr   assertEqualr   )r   r   r   _EVENTr   r   r   r   test_it   s    z-Test_dispatchUtilityRegistrationEvent.test_itNr   r   r   Zzope.component.testingr   r   r   r!   r   r   r   r   r      s   r   c                   @   s,   e Zd ZddlmZmZ dd Zdd ZdS )%Test_dispatchAdapterRegistrationEventr   r   c                 O   s   ddl m} |||S )Nr   ) dispatchAdapterRegistrationEvent)r   r$   )r   r	   r
   r$   r   r   r   r   ,   s    z.Test_dispatchAdapterRegistrationEvent._callFUTc              	      st   ddl m} G dd dt}| }t }g   fdd}t||d | || W 5 Q R X |  |j|fg d S )Nr   r   c                   @   s   e Zd Zdd ZdS )zDTest_dispatchAdapterRegistrationEvent.test_it.<locals>._Registrationc                 _   s   d S r   r   r   r	   r
   r   r   r   factory3   s    zLTest_dispatchAdapterRegistrationEvent.test_it.<locals>._Registration.factoryNr   r   r   r&   r   r   r   r   r   2   s   r   c                     s     |  d S r   r   r   r   r   r   r   8   s    z>Test_dispatchAdapterRegistrationEvent.test_it.<locals>._handler   r   r   r   r   r   r   r&   r   r   r   Z_registrationr    r   r   r   r   r!   0   s    z-Test_dispatchAdapterRegistrationEvent.test_itNr"   r   r   r   r   r#   (   s   r#   c                   @   s,   e Zd ZddlmZmZ dd Zdd ZdS )1Test_dispatchSubscriptionAdapterRegistrationEventr   r   c                 O   s   ddl m} |||S )Nr   ),dispatchSubscriptionAdapterRegistrationEvent)r   r+   )r   r	   r
   r+   r   r   r   r   C   s    z:Test_dispatchSubscriptionAdapterRegistrationEvent._callFUTc              	      st   ddl m} G dd dt}| }t }g   fdd}t||d | || W 5 Q R X |  |j|fg d S )Nr   r   c                   @   s   e Zd Zdd ZdS )zPTest_dispatchSubscriptionAdapterRegistrationEvent.test_it.<locals>._Registrationc                 _   s   d S r   r   r%   r   r   r   r&   K   s    zXTest_dispatchSubscriptionAdapterRegistrationEvent.test_it.<locals>._Registration.factoryNr'   r   r   r   r   r   J   s   r   c                     s     |  d S r   r   r   r   r   r   r   P   s    zJTest_dispatchSubscriptionAdapterRegistrationEvent.test_it.<locals>._handler   r(   r)   r   r   r   r!   H   s    z9Test_dispatchSubscriptionAdapterRegistrationEvent.test_itNr"   r   r   r   r   r*   ?   s   r*   c                   @   s,   e Zd ZddlmZmZ dd Zdd ZdS )%Test_dispatchHandlerRegistrationEventr   r   c                 O   s   ddl m} |||S )Nr   ) dispatchHandlerRegistrationEvent)r   r-   )r   r	   r
   r-   r   r   r   r   [   s    z.Test_dispatchHandlerRegistrationEvent._callFUTc              	      st   ddl m} G dd dt}| }t }g   fdd}t||d | || W 5 Q R X |  |j|fg d S )Nr   r   c                   @   s   e Zd Zdd ZdS )zDTest_dispatchHandlerRegistrationEvent.test_it.<locals>._Registrationc                 _   s   d S r   r   r%   r   r   r   handlerb   s    zLTest_dispatchHandlerRegistrationEvent.test_it.<locals>._Registration.handlerN)r   r   r   r.   r   r   r   r   r   a   s   r   c                     s     |  d S r   r   r   r   r   r   r   g   s    z>Test_dispatchHandlerRegistrationEvent.test_it.<locals>._handler   )r   r   r   r   r   r   r.   r)   r   r   r   r!   _   s    z-Test_dispatchHandlerRegistrationEvent.test_itNr"   r   r   r   r   r,   W   s   r,   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )r   c                    s@    | _ t fdd|D | _| D ]\}}t || q&d S )Nc                    s   g | ]}|t  |fqS r   )getattr).0keymoduler   r   
<listcomp>r   s     z$_Monkey.__init__.<locals>.<listcomp>)r3   dict
to_restoreitemssetattr)r   r3   r
   r1   valuer   r2   r   __init__p   s    z_Monkey.__init__c                 C   s   | S r   r   )r   r   r   r   	__enter__v   s    z_Monkey.__enter__c                 C   s&   | j  D ]\}}t| j|| q
d S r   )r6   r7   r8   r3   )r   exc_typeZexc_valexc_tbr1   r9   r   r   r   __exit__y   s    z_Monkey.__exit__N)r   r   r   r:   r;   r>   r   r   r   r   r   n   s   r   c                   C   s*   t t tt tt tt tfS r   )unittestZ	TestSuiteZ	makeSuiter   r#   r*   r,   r   r   r   r   
test_suite}   s    r@   )
__doc__r?   ZTestCaser   r#   r*   r,   r   r   r@   r   r   r   r   <module>   s   