U
    ÈZj%™ ã                   @   s$  d Z ddlZddlmZ ddlmZ ddlmZ G dd„ dejƒZ	G dd	„ d	e	ƒ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G dd„ deƒZG dd„ deeƒZG dd„ deeƒZG dd„ dejƒZG dd„ deƒZG dd„ deƒZG d d!„ d!eƒZdS )"zComponent Registry Testsé    N©Ú	Interface)ÚVerifyingAdapterRegistry©Ú
Componentsc                   @   sf  e Zd Zdd„ ZdÙdd„Zdd„ Zdd	„ Zd
d„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Zd2d3„ Zd4d5„ Zd6d7„ Zd8d9„ Zd:d;„ Zd<d=„ Z d>d?„ Z!d@dA„ Z"dBdC„ Z#dDdE„ Z$dFdG„ Z%dHdI„ Z&dJdK„ Z'dLdM„ Z(dNdO„ Z)dPdQ„ Z*dRdS„ Z+dTdU„ Z,dVdW„ Z-dXdY„ Z.dZd[„ Z/d\d]„ Z0d^d_„ Z1d`da„ Z2dbdc„ Z3ddde„ Z4dfdg„ Z5dhdi„ Z6djdk„ Z7dldm„ Z8dndo„ Z9dpdq„ Z:drds„ Z;dtdu„ Z<dvdw„ Z=dxdy„ Z>dzd{„ Z?d|d}„ Z@d~d„ ZAd€d�„ ZBd‚dƒ„ ZCd„d…„ ZDd†d‡„ ZEdˆd‰„ ZFdŠd‹„ ZGdŒd�„ ZHdŽd�„ ZId�d‘„ ZJd’d“„ ZKd”d•„ ZLd–d—„ ZMd˜d™„ ZNdšd›„ ZOdœd�„ ZPdždŸ„ ZQd d¡„ ZRd¢d£„ ZSd¤d¥„ ZTd¦d§„ ZUd¨d©„ ZVdªd«„ ZWd¬d­„ ZXd®d¯„ ZYd°d±„ ZZd²d³„ Z[d´dµ„ Z\d¶d·„ Z]d¸d¹„ Z^dºd»„ Z_d¼d½„ Z`d¾d¿„ ZadÀdÁ„ ZbdÂdÃ„ ZcdÄdÅ„ ZddÆdÇ„ ZedÈdÉ„ ZfdÊdË„ ZgdÌdÍ„ ZhdÎdÏ„ ZidÐdÑ„ ZjdÒdÓ„ ZkdÔdÕ„ ZldÖd×„ ZmdØS )ÚÚComponentsTestsc                 C   s   t S ©Nr   ©Úself© r   úe/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/site-packages/zope/interface/tests/test_registry.pyÚ_getTargetClass   s    zComponentsTests._getTargetClassÚtestc                 O   s   |   ¡ |f|ž|ŽS r   ©r   )r
   ÚnameÚargsÚkwr   r   r   Ú_makeOne   s    zComponentsTests._makeOnec                    s0   ddl m} g ‰ ‡ fdd„}t||d�}|ˆ fS )Nr   )Úregistryc                     s   ˆ   | |f¡ d S r   ©Úappend)r   r   ©Ú_eventsr   r   Ú_notify"   s    z,ComponentsTests._wrapEvents.<locals>._notify)Únotify)Úzope.interfacer   Ú_Monkey)r
   r   r   Ú_monkeyr   r   r   Ú_wrapEvents   s
    zComponentsTests._wrapEventsc                 C   s²   ddl m} |  d¡}|  |jd¡ |  |jd¡ |  t|j|ƒ¡ |  t|j	|ƒ¡ |  |jjd¡ |  |j	jd¡ |  |j
i ¡ |  |ji ¡ |  |jg ¡ |  |jg ¡ d S )Nr   )ÚAdapterRegistryÚtestingr   )Úzope.interface.adapterr   r   ÚassertEqualÚ__name__Ú	__bases__Ú
assertTrueÚ
isinstanceÚadaptersÚ	utilitiesÚ_utility_registrationsÚ_adapter_registrationsÚ_subscription_registrationsÚ_handler_registrations)r
   r   Úcompr   r   r   Útest_ctor_no_bases'   s    
z"ComponentsTests.test_ctor_no_basesc                 C   sb   |   d¡}|   d|f¡}|  |jd¡ |  |j|f¡ |  |jj|jf¡ |  |jj|jf¡ d S )NÚbaser    )r   r"   r#   r$   r'   r(   )r
   r/   r-   r   r   r   Útest_ctor_w_base5   s    
z ComponentsTests.test_ctor_w_basec                 C   s   |   d¡}|  t|ƒd¡ d S )Nr    z<Components testing>)r   r"   Úrepr©r
   r-   r   r   r   Útest___repr__=   s    
zComponentsTests.test___repr__c                 C   sl   |   d¡}|   d¡}|   ¡ }||f|_|  |j||f¡ |  |jj|j|jf¡ |  |jj|j|jf¡ d S )NÚbase1Úbase2)r   r$   r"   r'   r(   )r
   r4   r5   r-   r   r   r   Útest_assign_to___bases__C   s    




ÿ

ÿz(ComponentsTests.test_assign_to___bases__c           	      C   s‚   ddl m}m} G dd„ d|ƒ}|dƒ}|dƒG dd„ dtƒƒ}|ƒ }d}|  ¡ }|j|||d	� |  |j|df ||d f¡ d S )
Nr   ©ÚnamedÚInterfaceClassc                   @   s   e Zd ZdS )zFComponentsTests.test_registerUtility_with_component_name.<locals>.IFooN©r#   Ú
__module__Ú__qualname__r   r   r   r   ÚIFooR   s   r=   Úfooc                   @   s   e Zd ZdS )zEComponentsTests.test_registerUtility_with_component_name.<locals>.FooNr:   r   r   r   r   ÚFooV   s   r?   Úinfo©r@   )Úzope.interface.declarationsr8   r9   Úobjectr   ÚregisterUtilityr"   r)   )	r
   r8   r9   r=   Úifoor?   r>   Ú_infor-   r   r   r   Ú(test_registerUtility_with_component_nameN   s    þz8ComponentsTests.test_registerUtility_with_component_namec                 C   s.   dd„ }t ƒ }|  ¡ }| jt|j||d� d S )Nc                   S   s
   t ƒ ‚d S r   ©ÚNotImplementedErrorr   r   r   r   Ú_factoryc   s    zQComponentsTests.test_registerUtility_both_factory_and_component.<locals>._factory©Ú	componentÚfactory©rC   r   ÚassertRaisesÚ	TypeErrorrD   ©r
   rJ   Ú_to_regr-   r   r   r   Ú/test_registerUtility_both_factory_and_componentb   s    
 ÿz?ComponentsTests.test_registerUtility_both_factory_and_componentc              	   C   s–  ddl m} ddlm} ddlm} G dd„ d|ƒ}|dƒ}d}d}tƒ }|  ¡ }	|  ¡ \}
}|
� |	 	||||¡ W 5 Q R X |  
|	jjd | | |k¡ |  |	j||f ||d f¡ |  |	jjd | d	 |f¡ |  t|ƒd
¡ |d \}}|\}|  |i ¡ |  
t||ƒ¡ |  
t|j|ƒ¡ |  
|jj|	k¡ |  
|jj|k¡ |  
|jj|k¡ |  
|jj|k¡ |  
|jj|k¡ |  
|jjd k¡ d S )Nr   ©r9   ©Ú
Registered©ÚUtilityRegistrationc                   @   s   e Zd ZdS )z>ComponentsTests.test_registerUtility_w_component.<locals>.IFooNr:   r   r   r   r   r=   o   s   r=   r@   r   Ú é   )rB   r9   Úzope.interface.interfacesrV   Úzope.interface.registryrX   rC   r   r   rD   r%   r(   Ú	_adaptersr"   r)   Ú_subscribersÚlenr&   r   Úprovidedr   rL   r@   rM   )r
   r9   rV   rX   r=   rE   rF   Ú_namerR   r-   r   r   r   r   Úeventr   r   r   Ú test_registerUtility_w_componentj   s:    ÿz0ComponentsTests.test_registerUtility_w_componentc              	      sN  ddl m} ddlm} ddlm} G dd„ d|ƒ}|dƒ}d}d}tƒ ‰ ‡ fd	d
„}|  ¡ }	|  ¡ \}
}|
� |	j	d ||||d� W 5 Q R X |  
t|ƒd¡ |d \}}|\}|  
|i ¡ |  t||ƒ¡ |  t|j|ƒ¡ |  |jj|	k¡ |  |jj|k¡ |  |jj|k¡ |  |jjˆ k¡ |  |jj|k¡ |  |jj|k¡ d S )Nr   rT   rU   rW   c                   @   s   e Zd ZdS )z<ComponentsTests.test_registerUtility_w_factory.<locals>.IFooNr:   r   r   r   r   r=   �   s   r=   r@   r   c                      s   ˆ S r   r   r   ©rR   r   r   rJ   •   s    z@ComponentsTests.test_registerUtility_w_factory.<locals>._factory©rM   rZ   )rB   r9   r[   rV   r\   rX   rC   r   r   rD   r"   r_   r%   r&   r   r`   r   rL   r@   rM   )r
   r9   rV   rX   r=   rE   rF   ra   rJ   r-   r   r   r   r   rb   r   rd   r   Útest_registerUtility_w_factoryŠ   s2    z.ComponentsTests.test_registerUtility_w_factoryc                 C   s@   G dd„ dt ƒ}d}d}|ƒ }|  ¡ }|  t|j|d ||¡ d S )Nc                   @   s   e Zd ZdS )zGComponentsTests.test_registerUtility_no_provided_available.<locals>.FooNr:   r   r   r   r   r?   ©   s   r?   r@   r   rN   )r
   r?   rF   ra   rR   r-   r   r   r   Ú*test_registerUtility_no_provided_available¨   s        ÿz:ComponentsTests.test_registerUtility_no_provided_availablec              	   C   sd  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
}d}	|ƒ }
||
|ƒ |  ¡ }|  	¡ \}}|� | 
|
d |	|¡ W 5 Q R X |  t|ƒd¡ |d \}}|\}|  |i ¡ |  t||ƒ¡ |  t|j|ƒ¡ |  |jj|k¡ |  |jj|k¡ |  |jj|	k¡ |  |jj|
k¡ |  |jj|k¡ |  |jjd k¡ d S )Nr   ©ÚdirectlyProvidesrT   rU   rW   c                   @   s   e Zd ZdS )z>ComponentsTests.test_registerUtility_wo_provided.<locals>.IFooNr:   r   r   r   r   r=   ¹   s   r=   c                   @   s   e Zd ZdS )z=ComponentsTests.test_registerUtility_wo_provided.<locals>.FooNr:   r   r   r   r   r?   »   s   r?   r@   r   rZ   )rB   ri   r9   r[   rV   r\   rX   rC   r   r   rD   r"   r_   r%   r&   r   r`   r   rL   r@   rM   )r
   ri   r9   rV   rX   r=   r?   rE   rF   ra   rR   r-   r   r   r   r   rb   r   r   r   Ú test_registerUtility_wo_provided³   s6    
z0ComponentsTests.test_registerUtility_wo_providedc           
   	   C   sŠ   ddl m} G dd„ d|ƒ}|dƒ}d}d}tƒ }|  ¡ }| ||||¡ |  ¡ \}}	|� | ||||¡ W 5 Q R X |  t|	ƒd¡ d S )Nr   rT   c                   @   s   e Zd ZdS )zJComponentsTests.test_registerUtility_duplicates_existing_reg.<locals>.IFooNr:   r   r   r   r   r=   Ö   s   r=   r@   r   )rB   r9   rC   r   rD   r   r"   r_   ©
r
   r9   r=   rE   rF   ra   rR   r-   r   r   r   r   r   Ú,test_registerUtility_duplicates_existing_regÓ   s    z<ComponentsTests.test_registerUtility_duplicates_existing_regc              	   C   sÈ   ddl m} G dd„ d|ƒ}|dƒ}d}d}d}tƒ }|  ¡ }| ||||¡ |  ¡ \}	}
|	� | ||||¡ W 5 Q R X |  t|
ƒd¡ |  |j||f ||d f¡ |  |j	j
d | d	 |f¡ d S )
Nr   rT   c                   @   s   e Zd ZdS )zCComponentsTests.test_registerUtility_w_different_info.<locals>.IFooNr:   r   r   r   r   r=   æ   s   r=   Zinfo1Zinfo2r   é   rY   ©rB   r9   rC   r   rD   r   r"   r_   r)   r(   r^   )r
   r9   r=   rE   Z_info1Z_info2ra   rR   r-   r   r   r   r   r   Ú%test_registerUtility_w_different_infoã   s&    ÿÿz5ComponentsTests.test_registerUtility_w_different_infoc              	   C   sì   ddl m} G dd„ d|ƒ}|dƒ}d}d}d}tƒ }tƒ }|  ¡ }	|	 ||||¡ |  ¡ \}
}|
� |	 ||||¡ W 5 Q R X |  t|ƒd¡ |  |	j||f ||d f¡ |  |	j||f ||d f¡ |  |	j	j
d | d	 ||f¡ d S )
Nr   rT   c                   @   s   e Zd ZdS )zSComponentsTests.test_registerUtility_w_different_names_same_component.<locals>.IFooNr:   r   r   r   r   r=   û   s   r=   r@   Úname1Úname2rZ   rY   rn   ©r
   r9   r=   rE   rF   Ú_name1Ú_name2Z
_other_regrR   r-   r   r   r   r   r   Ú5test_registerUtility_w_different_names_same_componentø   s.    ÿÿÿzEComponentsTests.test_registerUtility_w_different_names_same_componentc              	   C   s  ddl m} ddlm} ddlm} ddlm} G dd„ d|ƒ}|dƒ}d}d	}tƒ tƒ  }	}
|  ¡ }| 	|	|||¡ |  
¡ \}}|� | 	|
|||¡ W 5 Q R X |  t|ƒd
¡ |d \}}|\}|  |i ¡ |  t||ƒ¡ |  t|j|ƒ¡ |  |jj|k¡ |  |jj|k¡ |  |jj|k¡ |  |jj|	k¡ |  |jj|k¡ |  |jjd k¡ |d \}}|\}|  |i ¡ |  t||ƒ¡ |  t|j|ƒ¡ |  |jj|k¡ |  |jj|k¡ |  |jj|k¡ |  |jj|
k¡ |  |jj|k¡ |  |jjd k¡ d S )Nr   rT   ©ÚUnregisteredrU   rW   c                   @   s   e Zd ZdS )zHComponentsTests.test_registerUtility_replaces_existing_reg.<locals>.IFooNr:   r   r   r   r   r=     s   r=   r@   r   rm   rZ   )rB   r9   r[   rw   rV   r\   rX   rC   r   rD   r   r"   r_   r%   r&   r   r`   r   rL   r@   rM   )r
   r9   rw   rV   rX   r=   rE   rF   ra   Z_beforeZ_afterr-   r   r   r   r   rb   r   r   r   Ú*test_registerUtility_replaces_existing_reg  sJ    z:ComponentsTests.test_registerUtility_replaces_existing_regc              	   C   sœ   ddl m} G dd„ d|ƒ}|dƒ}d}d}d}tƒ }|  ¡ }| ||||¡ |  ¡ \}	}
|	� | ||||¡ W 5 Q R X |  |jjd | d |f¡ d S )	Nr   rT   c                   @   s   e Zd ZdS )zDComponentsTests.test_registerUtility_w_existing_subscr.<locals>.IFooNr:   r   r   r   r   r=   <  s   r=   r@   rp   rq   rY   )	rB   r9   rC   r   rD   r   r"   r(   r^   ©r
   r9   r=   rE   rF   rs   rt   rR   r-   r   r   r   r   r   Ú&test_registerUtility_w_existing_subscr9  s    z6ComponentsTests.test_registerUtility_w_existing_subscrc           
   	   C   s|   ddl m} G dd„ d|ƒ}|dƒ}d}d}tƒ }|  ¡ }|  ¡ \}}	|� | ||||d¡ W 5 Q R X |  t|	ƒd¡ d S )Nr   rT   c                   @   s   e Zd ZdS )z;ComponentsTests.test_registerUtility_wo_event.<locals>.IFooNr:   r   r   r   r   r=   M  s   r=   r@   r   F)rB   r9   rC   r   r   rD   r"   r_   rk   r   r   r   Útest_registerUtility_wo_eventJ  s    z-ComponentsTests.test_registerUtility_wo_eventc                    s~   G ‡ fdd„d|   ¡ ƒ‰ ˆ ƒ }| tƒ t¡ |  tt| ¡ ƒƒd¡ G dd„ dtƒ}| tƒ |¡ |  tt| ¡ ƒƒd¡ d S )Nc                       s"   e Zd ZdZ‡‡ fdd„Z‡  ZS )zdComponentsTests.test_registerUtility_changes_object_identity_after.<locals>.CompThatChangesAfter1Regr   c                    s8   |  j d7  _ tˆ | ƒj|Ž  | j dkr4t| jƒ| _d S )NrZ   )Ú	reg_countÚsuperrD   Údictr)   ©r
   r   )ÚCompThatChangesAfter1RegÚ	__class__r   r   rD   ^  s    
ztComponentsTests.test_registerUtility_changes_object_identity_after.<locals>.CompThatChangesAfter1Reg.registerUtility©r#   r;   r<   r|   rD   Ú__classcell__r   ©r€   ©r�   r   r€   \  s   r€   rZ   c                   @   s   e Zd ZdS )zPComponentsTests.test_registerUtility_changes_object_identity_after.<locals>.IFooNr:   r   r   r   r   r=   i  s   r=   rm   ©r   rD   rC   r   r"   r_   ÚlistÚregisteredUtilities)r
   r-   r=   r   r„   r   Ú2test_registerUtility_changes_object_identity_afterY  s    zBComponentsTests.test_registerUtility_changes_object_identity_afterc                    s´   G ‡ fdd„d|   ¡ ƒ‰ ˆ ƒ }| tƒ t¡ |  tt| ¡ ƒƒd¡ G dd„ dtƒ}| tƒ |¡ |  tt| ¡ ƒƒd¡ G dd„ dtƒ}| tƒ |¡ |  tt| ¡ ƒƒd	¡ d S )
Nc                       s"   e Zd ZdZ‡‡ fdd„Z‡  ZS )zeComponentsTests.test_registerUtility_changes_object_identity_before.<locals>.CompThatChangesAfter2Regr   c                    s8   |  j d7  _ | j dkr$t| jƒ| _tˆ | ƒj|Ž  d S )NrZ   rm   )r|   r~   r)   r}   rD   r   )ÚCompThatChangesAfter2Regr�   r   r   rD   t  s    
zuComponentsTests.test_registerUtility_changes_object_identity_before.<locals>.CompThatChangesAfter2Reg.registerUtilityr‚   r   ©rŠ   r…   r   rŠ   r  s   rŠ   rZ   c                   @   s   e Zd ZdS )zQComponentsTests.test_registerUtility_changes_object_identity_before.<locals>.IFooNr:   r   r   r   r   r=   €  s   r=   rm   c                   @   s   e Zd ZdS )zQComponentsTests.test_registerUtility_changes_object_identity_before.<locals>.IBarNr:   r   r   r   r   ÚIBar‡  s   rŒ   é   r†   )r
   r-   r=   rŒ   r   r‹   r   Ú3test_registerUtility_changes_object_identity_beforeo  s    	zCComponentsTests.test_registerUtility_changes_object_identity_beforec                 C   s"   |   ¡ }| jt|jd d d d� d S )N)rL   r`   rM   )r   rO   rP   ÚunregisterUtilityr2   r   r   r   ÚAtest_unregisterUtility_neither_factory_nor_component_nor_providedŽ  s    
  ÿzQComponentsTests.test_unregisterUtility_neither_factory_nor_component_nor_providedc                 C   s.   dd„ }t ƒ }|  ¡ }| jt|j||d� d S )Nc                   S   s
   t ƒ ‚d S r   rH   r   r   r   r   rJ   ”  s    zSComponentsTests.test_unregisterUtility_both_factory_and_component.<locals>._factoryrK   )rC   r   rO   rP   r�   rQ   r   r   r   Ú1test_unregisterUtility_both_factory_and_component“  s    
 ÿzAComponentsTests.test_unregisterUtility_both_factory_and_componentc           
   	   C   sx   ddl m} G dd„ d|ƒ}|dƒ}d}tƒ }|  ¡ }|  ¡ \}}|� | |||¡}	W 5 Q R X |  |	¡ |  |¡ d S )Nr   rT   c                   @   s   e Zd ZdS )zEComponentsTests.test_unregisterUtility_w_component_miss.<locals>.IFooNr:   r   r   r   r   r=   ž  s   r=   r   )rB   r9   rC   r   r   r�   ÚassertFalse)
r
   r9   r=   rE   ra   rR   r-   r   r   Úunregr   r   r   Ú'test_unregisterUtility_w_component_miss›  s    
z7ComponentsTests.test_unregisterUtility_w_component_missc              	   C   sn  ddl m} ddlm} ddlm} G dd„ d|ƒ}|dƒ}d}tƒ }|  ¡ }| |||¡ |  	¡ \}	}
|	� | 
|||¡}W 5 Q R X |  |¡ |  |jj¡ |  ||f|jk¡ |  |jj¡ |  t|
ƒd¡ |
d \}}|\}|  |i ¡ |  t||ƒ¡ |  t|j|ƒ¡ |  |jj|k¡ |  |jj|k¡ |  |jj|k¡ |  |jj|k¡ |  |jjd k¡ d S )	Nr   rT   rv   rW   c                   @   s   e Zd ZdS )z@ComponentsTests.test_unregisterUtility_w_component.<locals>.IFooNr:   r   r   r   r   r=   ¯  s   r=   r   rZ   )rB   r9   r[   rw   r\   rX   rC   r   rD   r   r�   r%   r’   r(   r]   r)   r^   r"   r_   r&   r   r`   r   rL   rM   )r
   r9   rw   rX   r=   rE   ra   rR   r-   r   r   r“   r   r   rb   r   r   r   Ú"test_unregisterUtility_w_componentª  s6    
z2ComponentsTests.test_unregisterUtility_w_componentc              	      sX  ddl m} ddlm} ddlm} G dd„ d|ƒ}|dƒ}d}d}tƒ ‰ ‡ fd	d
„}|  ¡ }	|	jd ||||d� |  	¡ \}
}|
� |	j
d |||d�}W 5 Q R X |  |¡ |  t|ƒd¡ |d \}}|\}|  |i ¡ |  t||ƒ¡ |  t|j|ƒ¡ |  |jj|	k¡ |  |jj|k¡ |  |jj|k¡ |  |jjˆ k¡ |  |jj|k¡ d S )Nr   rT   rv   rW   c                   @   s   e Zd ZdS )z>ComponentsTests.test_unregisterUtility_w_factory.<locals>.IFooNr:   r   r   r   r   r=   Î  s   r=   r@   r   c                      s   ˆ S r   r   r   rd   r   r   rJ   Ô  s    zBComponentsTests.test_unregisterUtility_w_factory.<locals>._factoryre   rZ   )rB   r9   r[   rw   r\   rX   rC   r   rD   r   r�   r%   r"   r_   r&   r   r`   r   rL   rM   )r
   r9   rw   rX   r=   rE   rF   ra   rJ   r-   r   r   r“   r   r   rb   r   rd   r   Ú test_unregisterUtility_w_factoryÉ  s4    
z0ComponentsTests.test_unregisterUtility_w_factoryc              	   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	tƒ}|dƒ}d
}d}	|ƒ }
||
|ƒ |  ¡ }| 	|
||	|¡ |  
¡ \}}|� | |
d |	¡}W 5 Q R X |  |¡ |  t|ƒd¡ |d \}}|\}|  |i ¡ |  t||ƒ¡ |  t|j|ƒ¡ |  |jj|k¡ |  |jj|k¡ |  |jj|	k¡ |  |jj|
k¡ |  |jj|k¡ |  |jjd k¡ d S )Nr   rh   rT   rv   rW   c                   @   s   e Zd ZdS )zIComponentsTests.test_unregisterUtility_wo_explicit_provided.<locals>.IFooNr:   r   r   r   r   r=   î  s   r=   c                   @   s   e Zd ZdS )zHComponentsTests.test_unregisterUtility_wo_explicit_provided.<locals>.FooNr:   r   r   r   r   r?   ð  s   r?   r@   r   rZ   ©rB   ri   r9   r[   rw   r\   rX   rC   r   rD   r   r�   r%   r"   r_   r&   r   r`   r   rL   r@   rM   ©r
   ri   r9   rw   rX   r=   r?   rE   rF   ra   rR   r-   r   r   r“   r   r   rb   r   r   r   Ú+test_unregisterUtility_wo_explicit_providedè  s:    

z;ComponentsTests.test_unregisterUtility_wo_explicit_providedc              	   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	tƒ}|dƒ}d
}d}	|ƒ }
||
|ƒ |  ¡ }| 	|
||	|¡ |  
¡ \}}|� |j||	d�}W 5 Q R X |  |¡ |  t|ƒd¡ |d \}}|\}|  |i ¡ |  t||ƒ¡ |  t|j|ƒ¡ |  |jj|k¡ |  |jj|k¡ |  |jj|	k¡ |  |jj|
k¡ |  |jj|k¡ |  |jjd k¡ d S )Nr   rh   rT   rv   rW   c                   @   s   e Zd ZdS )zLComponentsTests.test_unregisterUtility_wo_component_or_factory.<locals>.IFooNr:   r   r   r   r   r=     s   r=   c                   @   s   e Zd ZdS )zKComponentsTests.test_unregisterUtility_wo_component_or_factory.<locals>.FooNr:   r   r   r   r   r?     s   r?   r@   r   )r`   r   rZ   r—   r˜   r   r   r   Ú.test_unregisterUtility_wo_component_or_factory
  s:    

z>ComponentsTests.test_unregisterUtility_wo_component_or_factoryc              	   C   sª   ddl m} G dd„ d|ƒ}|dƒ}d}d}d}tƒ }|  ¡ }| ||||¡ | ||||¡ |  ¡ \}	}
|	� | |||¡ W 5 Q R X |  |jj	d | d |f¡ d S )	Nr   rT   c                   @   s   e Zd ZdS )zFComponentsTests.test_unregisterUtility_w_existing_subscr.<locals>.IFooNr:   r   r   r   r   r=   0  s   r=   r@   rp   rq   rY   ©
rB   r9   rC   r   rD   r   r�   r"   r(   r^   ry   r   r   r   Ú(test_unregisterUtility_w_existing_subscr-  s    z8ComponentsTests.test_unregisterUtility_w_existing_subscrc              	   C   sª   ddl m} G dd„ d|ƒ}|dƒ}d}d}d}tƒ }|  ¡ }| ||||¡ | ||||¡ |  ¡ \}	}
|	� | |||¡ W 5 Q R X |  |jj	d | d |f¡ d S )	Nr   rT   c                   @   s   e Zd ZdS )zSComponentsTests.test_unregisterUtility_w_existing_subscr_non_hashable.<locals>.IFooNr:   r   r   r   r   r=   B  s   r=   r@   rp   rq   rY   )
rB   r9   r~   r   rD   r   r�   r"   r(   r^   ry   r   r   r   Ú5test_unregisterUtility_w_existing_subscr_non_hashable?  s    zEComponentsTests.test_unregisterUtility_w_existing_subscr_non_hashablec              	   C   s¶   ddl m} ddlm} G dd„ d|ƒ}|dƒ}d}d}d}tƒ }|  ¡ }	|	 ||||¡ |	 ||||¡ |  ¡ \}
}|
� |	 |||¡ W 5 Q R X |  	|	j
jd | d	 |f¡ d S )
Nr   rT   )Ú_UtilityRegistrationsc                   @   s   e Zd ZdS )z_ComponentsTests.test_unregisterUtility_w_existing_subscr_non_hashable_fresh_cache.<locals>.IFooNr:   r   r   r   r   r=   W  s   r=   r@   rp   rq   rY   )rB   r9   r\   rž   r~   r   rD   r   r�   r"   r(   r^   )r
   r9   rž   r=   rE   rF   rs   rt   rR   r-   r   r   r   r   r   ÚAtest_unregisterUtility_w_existing_subscr_non_hashable_fresh_cacheQ  s    zQComponentsTests.test_unregisterUtility_w_existing_subscr_non_hashable_fresh_cachec              	   C   sº   ddl m} G dd„ d|ƒ}|dƒ}d}d}d}tƒ }|  ¡ }| ||||¡ | ||||¡ | d¡ | ||||¡ |  ¡ \}	}
|	� | |||¡ W 5 Q R X |  dt	|j
jƒ¡ d S )	Nr   rT   c                   @   s   e Zd ZdS )z]ComponentsTests.test_unregisterUtility_w_existing_subscr_non_hashable_reinitted.<locals>.IFooNr:   r   r   r   r   r=   l  s   r=   r@   rp   rq   r/   )rB   r9   r~   r   rD   Ú__init__r   r�   r"   r_   r(   r^   ry   r   r   r   Ú?test_unregisterUtility_w_existing_subscr_non_hashable_reinittedg  s     
zOComponentsTests.test_unregisterUtility_w_existing_subscr_non_hashable_reinittedc              	   C   s°   ddl m} G dd„ d|ƒ}|dƒ}d}d}d}tƒ }tƒ }|  ¡ }	|	 ||||¡ |	 ||||¡ |  ¡ \}
}|
� |	 |||¡ W 5 Q R X |  |	jj	d | d |f¡ d S )	Nr   rT   c                   @   s   e Zd ZdS )zVComponentsTests.test_unregisterUtility_w_existing_subscr_other_component.<locals>.IFooNr:   r   r   r   r   r=   …  s   r=   r@   rp   rq   rY   r›   rr   r   r   r   Ú8test_unregisterUtility_w_existing_subscr_other_component‚  s"    ÿzHComponentsTests.test_unregisterUtility_w_existing_subscr_other_componentc              	   C   s°   ddl m} G dd„ d|ƒ}|dƒ}d}d}d}tƒ }tƒ }|  ¡ }	|	 ||||¡ |	 ||||¡ |  ¡ \}
}|
� |	 |||¡ W 5 Q R X |  |	j	j
d | d |f¡ d S )	Nr   rT   c                   @   s   e Zd ZdS )zaComponentsTests.test_unregisterUtility_w_existing_subscr_other_component_mixed_hash.<locals>.IFooNr:   r   r   r   r   r=   ™  s   r=   r@   rp   rq   rY   )rB   r9   rC   r~   r   rD   r   r�   r"   r(   r^   rr   r   r   r   ÚCtest_unregisterUtility_w_existing_subscr_other_component_mixed_hash–  s"    ÿzSComponentsTests.test_unregisterUtility_w_existing_subscr_other_component_mixed_hashc                 C   s    |   ¡ }|  t| ¡ ƒg ¡ d S r   )r   r"   r‡   rˆ   r2   r   r   r   Útest_registeredUtilities_empty¬  s    z.ComponentsTests.test_registeredUtilities_emptyc                 C   sª  ddl m} ddlm} G dd„ d|ƒ}|dƒ}d}d}d}tƒ }|  ¡ }	|	 ||||¡ |	 ||||¡ t|	 ¡ d	d
„ d�}
|  	t
|
ƒd¡ |  t|
d |ƒ¡ |  |
d j|	k¡ |  |
d j|k¡ |  |
d j|k¡ |  |
d j|k¡ |  |
d j|k¡ |  |
d jd k¡ |  t|
d |ƒ¡ |  |
d j|	k¡ |  |
d j|k¡ |  |
d j|k¡ |  |
d j|k¡ |  |
d j|k¡ |  |
d jd k¡ d S )Nr   rT   rW   c                   @   s   e Zd ZdS )z?ComponentsTests.test_registeredUtilities_notempty.<locals>.IFooNr:   r   r   r   r   r=   ´  s   r=   r@   rp   rq   c                 S   s   | j S r   ©r   ©Úrr   r   r   Ú<lambda>¾  ó    zCComponentsTests.test_registeredUtilities_notempty.<locals>.<lambda>©Úkeyrm   rZ   )rB   r9   r\   rX   rC   r   rD   Úsortedrˆ   r"   r_   r%   r&   r   r`   r   rL   r@   rM   )r
   r9   rX   r=   rE   rF   rs   rt   rR   r-   Úregr   r   r   Ú!test_registeredUtilities_notempty°  s6    z1ComponentsTests.test_registeredUtilities_notemptyc                 C   sD   ddl m} G dd„ d|ƒ}|dƒ}|  ¡ }|  | |¡d k¡ d S )Nr   rT   c                   @   s   e Zd ZdS )z?ComponentsTests.test_queryUtility_miss_no_default.<locals>.IFooNr:   r   r   r   r   r=   Ñ  s   r=   )rB   r9   r   r%   ÚqueryUtility©r
   r9   r=   rE   r-   r   r   r   Ú!test_queryUtility_miss_no_defaultÏ  s
    z1ComponentsTests.test_queryUtility_miss_no_defaultc                 C   sN   ddl m} G dd„ d|ƒ}|dƒ}|  ¡ }tƒ }|  |j||d�|k¡ d S )Nr   rT   c                   @   s   e Zd ZdS )z>ComponentsTests.test_queryUtility_miss_w_default.<locals>.IFooNr:   r   r   r   r   r=   Ù  s   r=   ©Údefault)rB   r9   r   rC   r%   r¯   )r
   r9   r=   rE   r-   Ú_defaultr   r   r   Ú test_queryUtility_miss_w_default×  s    z0ComponentsTests.test_queryUtility_miss_w_defaultc                 C   sV   ddl m} G dd„ d|ƒ}|dƒ}tƒ }|  ¡ }| ||¡ |  | |¡|k¡ d S )Nr   rT   c                   @   s   e Zd ZdS )z3ComponentsTests.test_queryUtility_hit.<locals>.IFooNr:   r   r   r   r   r=   â  s   r=   )rB   r9   rC   r   rD   r%   r¯   ©r
   r9   r=   rE   rR   r-   r   r   r   Útest_queryUtility_hità  s    z%ComponentsTests.test_queryUtility_hitc                 C   sL   ddl m} ddlm} G dd„ d|ƒ}|dƒ}|  ¡ }|  ||j|¡ d S )Nr   rT   ©ÚComponentLookupErrorc                   @   s   e Zd ZdS )z2ComponentsTests.test_getUtility_miss.<locals>.IFooNr:   r   r   r   r   r=   í  s   r=   )rB   r9   r[   r¹   r   rO   Ú
getUtility)r
   r9   r¹   r=   rE   r-   r   r   r   Útest_getUtility_missê  s    z$ComponentsTests.test_getUtility_missc                 C   sV   ddl m} G dd„ d|ƒ}|dƒ}tƒ }|  ¡ }| ||¡ |  | |¡|k¡ d S )Nr   rT   c                   @   s   e Zd ZdS )z1ComponentsTests.test_getUtility_hit.<locals>.IFooNr:   r   r   r   r   r=   õ  s   r=   )rB   r9   rC   r   rD   r%   rº   r¶   r   r   r   Útest_getUtility_hitó  s    z#ComponentsTests.test_getUtility_hitc                 C   sF   ddl m} G dd„ d|ƒ}|dƒ}|  ¡ }|  t| |¡ƒg ¡ d S )Nr   rT   c                   @   s   e Zd ZdS )z7ComponentsTests.test_getUtilitiesFor_miss.<locals>.IFooNr:   r   r   r   r   r=   ÿ  s   r=   )rB   r9   r   r"   r‡   ÚgetUtilitiesForr°   r   r   r   Útest_getUtilitiesFor_missý  s
    z)ComponentsTests.test_getUtilitiesFor_missc                 C   s€   ddl m} G dd„ d|ƒ}|dƒ}d}d}tƒ }|  ¡ }|j|||d� |j|||d� |  t| |¡ƒ||f||fg¡ d S )Nr   rT   c                   @   s   e Zd ZdS )z6ComponentsTests.test_getUtilitiesFor_hit.<locals>.IFooNr:   r   r   r   r   r=     s   r=   rp   rq   r¥   )rB   r9   rC   r   rD   r"   r¬   r½   ©r
   r9   r=   rE   rs   rt   rR   r-   r   r   r   Útest_getUtilitiesFor_hit  s    ÿz(ComponentsTests.test_getUtilitiesFor_hitc                 C   sF   ddl m} G dd„ d|ƒ}|dƒ}|  ¡ }|  t| |¡ƒg ¡ d S )Nr   rT   c                   @   s   e Zd ZdS )zDComponentsTests.test_getAllUtilitiesRegisteredFor_miss.<locals>.IFooNr:   r   r   r   r   r=     s   r=   )rB   r9   r   r"   r‡   ÚgetAllUtilitiesRegisteredForr°   r   r   r   Ú&test_getAllUtilitiesRegisteredFor_miss  s
    z6ComponentsTests.test_getAllUtilitiesRegisteredFor_missc                 C   sv   ddl m} G dd„ d|ƒ}|dƒ}d}d}tƒ }|  ¡ }|j|||d� |j|||d� |  t| |¡ƒ|g¡ d S )Nr   rT   c                   @   s   e Zd ZdS )zCComponentsTests.test_getAllUtilitiesRegisteredFor_hit.<locals>.IFooNr:   r   r   r   r   r=     s   r=   rp   rq   r¥   )rB   r9   rC   r   rD   r"   r‡   rÁ   r¿   r   r   r   Ú%test_getAllUtilitiesRegisteredFor_hit  s    ÿz5ComponentsTests.test_getAllUtilitiesRegisteredFor_hitc           	      C   sŠ   ddl m}m} G dd„ d|ƒ}|dƒ}|dƒ}|dƒG dd„ dtƒƒ}d	}|  ¡ }|j||f||d
� |  |j|f|df ||f¡ d S )Nr   r7   c                   @   s   e Zd ZdS )zFComponentsTests.test_registerAdapter_with_component_name.<locals>.IFooNr:   r   r   r   r   r=   /  s   r=   rŒ   r>   c                   @   s   e Zd ZdS )zEComponentsTests.test_registerAdapter_with_component_name.<locals>.FooNr:   r   r   r   r   r?   4  s   r?   r@   rA   )rB   r8   r9   rC   r   ÚregisterAdapterr"   r*   )	r
   r8   r9   r=   rE   Úibarr?   rF   r-   r   r   r   Ú(test_registerAdapter_with_component_name+  s    þz8ComponentsTests.test_registerAdapter_with_component_namec              	   C   sŒ  ddl m} ddlm} ddlm} G dd„ d|ƒ}|dƒ}|dƒ}d}d	}d
d„ }	|  ¡ }
|  ¡ \}}|� |
 |	|f|||¡ W 5 Q R X |  	|
j
jd | | | |	k¡ |  |
j|f||f |	|f¡ |  t|ƒd¡ |d \}}|\}|  |i ¡ |  	t||ƒ¡ |  	t|j|ƒ¡ |  	|jj|
k¡ |  	|jj|k¡ |  |jj|f¡ |  	|jj|k¡ |  	|jj|k¡ |  	|jj|	k¡ d S )Nr   rT   rU   ©ÚAdapterRegistrationc                   @   s   e Zd ZdS )zSComponentsTests.test_registerAdapter_w_explicit_provided_and_required.<locals>.IFooNr:   r   r   r   r   r=   E  s   r=   rŒ   r@   r   c                 S   s
   t ƒ ‚d S r   rH   ©Úcontextr   r   r   rJ   L  s    zWComponentsTests.test_registerAdapter_w_explicit_provided_and_required.<locals>._factoryrZ   )rB   r9   r[   rV   r\   rÈ   r   r   rÄ   r%   r'   r]   r"   r*   r_   r&   rC   r   r`   Úrequiredr   r@   rM   )r
   r9   rV   rÈ   r=   rE   rÅ   rF   ra   rJ   r-   r   r   r   r   rb   r   r   r   Ú5test_registerAdapter_w_explicit_provided_and_required@  s>    ÿÿzEComponentsTests.test_registerAdapter_w_explicit_provided_and_requiredc           	      C   sh   ddl m} G dd„ d|ƒ}|dƒ}d}d}tƒ }G dd	„ d	tƒ}|  ¡ }| jt|j||f||d
� d S )Nr   rT   c                   @   s   e Zd ZdS )zHComponentsTests.test_registerAdapter_no_provided_available.<locals>.IFooNr:   r   r   r   r   r=   f  s   r=   rŒ   r@   r   c                   @   s   e Zd ZdS )zLComponentsTests.test_registerAdapter_no_provided_available.<locals>._FactoryNr:   r   r   r   r   Ú_Factorym  s   rÍ   ©r   r@   ©rB   r9   rC   r   rO   rP   rÄ   )	r
   r9   r=   rÅ   rF   ra   rR   rÍ   r-   r   r   r   Ú*test_registerAdapter_no_provided_availablec  s     ÿz:ComponentsTests.test_registerAdapter_no_provided_availablec              	   C   s®  ddl m} ddl m} ddlm} ddlm} G dd„ d|ƒ}|dƒ}|dƒ}d	}d
}	tƒ }
||ƒG dd„ dtƒƒ}|  ¡ }|  	¡ \}}|� |j
||f|	|d� W 5 Q R X |  |jjd | | |	 |k¡ |  |j|f||	f ||f¡ |  t|ƒd¡ |d \}}|\}|  |i ¡ |  t||ƒ¡ |  t|j|ƒ¡ |  |jj|k¡ |  |jj|k¡ |  |jj|f¡ |  |jj|	k¡ |  |jj|k¡ |  |jj|k¡ d S )Nr   rT   ©ÚimplementerrU   rÇ   c                   @   s   e Zd ZdS )zGComponentsTests.test_registerAdapter_wo_explicit_provided.<locals>.IFooNr:   r   r   r   r   r=   z  s   r=   rŒ   r@   r   c                   @   s   e Zd ZdS )zKComponentsTests.test_registerAdapter_wo_explicit_provided.<locals>._FactoryNr:   r   r   r   r   rÍ   ‚  s   rÍ   rÎ   rZ   )rB   r9   rÒ   r[   rV   r\   rÈ   rC   r   r   rÄ   r%   r'   r]   r"   r*   r_   r&   r   r`   rË   r   r@   rM   )r
   r9   rÒ   rV   rÈ   r=   rE   rÅ   rF   ra   rR   rÍ   r-   r   r   r   r   rb   r   r   r   Ú)test_registerAdapter_wo_explicit_providedt  sD    ÿÿz9ComponentsTests.test_registerAdapter_wo_explicit_providedc                 C   s`   ddl m} G dd„ d|ƒ}|dƒ}d}d}G dd„ dtƒ}|  ¡ }| jt|j||||d	� d S )
Nr   rT   c                   @   s   e Zd ZdS )zHComponentsTests.test_registerAdapter_no_required_available.<locals>.IFooNr:   r   r   r   r   r=   ž  s   r=   r@   r   c                   @   s   e Zd ZdS )zLComponentsTests.test_registerAdapter_no_required_available.<locals>._FactoryNr:   r   r   r   r   rÍ   ¤  s   rÍ   ©r`   r   r@   rÏ   ©r
   r9   r=   rE   rF   ra   rÍ   r-   r   r   r   Ú*test_registerAdapter_no_required_available›  s      ÿz:ComponentsTests.test_registerAdapter_no_required_availablec           	   	   C   sj   ddl m} G dd„ d|ƒ}|dƒ}|dƒ}d}d}G dd	„ d	tƒ}|  ¡ }| jt|j|||||d
� d S )Nr   rT   c                   @   s   e Zd ZdS )zEComponentsTests.test_registerAdapter_w_invalid_required.<locals>.IFooNr:   r   r   r   r   r=   ®  s   r=   rŒ   r@   r   c                   @   s   e Zd ZdS )zIComponentsTests.test_registerAdapter_w_invalid_required.<locals>._FactoryNr:   r   r   r   r   rÍ   ´  s   rÍ   rÔ   rÏ   )	r
   r9   r=   rE   rÅ   rF   ra   rÍ   r-   r   r   r   Ú'test_registerAdapter_w_invalid_required«  s       ÿz7ComponentsTests.test_registerAdapter_w_invalid_requiredc              	   C   sš  ddl m} ddlm} ddlm} ddlm} G dd„ d|ƒ}|dƒ}d}d	}G d
d„ dtƒ}	|  	¡ }
|  
¡ \}}|� |
j|	d g|||d� W 5 Q R X |  |
jjd | | | |	k¡ |  |
j|f||f |	|f¡ |  t|ƒd¡ |d \}}|\}|  |i ¡ |  t||ƒ¡ |  t|j|ƒ¡ |  |jj|
k¡ |  |jj|k¡ |  |jj|f¡ |  |jj|k¡ |  |jj|k¡ |  |jj|	k¡ d S )Nr   rT   r   rU   rÇ   c                   @   s   e Zd ZdS )zMComponentsTests.test_registerAdapter_w_required_containing_None.<locals>.IFooNr:   r   r   r   r   r=   À  s   r=   r@   r   c                   @   s   e Zd ZdS )zQComponentsTests.test_registerAdapter_w_required_containing_None.<locals>._FactoryNr:   r   r   r   r   rÍ   Å  s   rÍ   rÔ   rZ   )rB   r9   Zzope.interface.interfacer   r[   rV   r\   rÈ   rC   r   r   rÄ   r%   r'   r]   r"   r*   r_   r&   r   r`   rË   r   r@   rM   )r
   r9   r   rV   rÈ   r=   rE   rF   ra   rÍ   r-   r   r   r   r   rb   r   r   r   Ú/test_registerAdapter_w_required_containing_Noneº  sD     ÿÿÿz?ComponentsTests.test_registerAdapter_w_required_containing_Nonec              	   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|ƒ}|dƒ}|d	ƒ}d
}	d}
G dd„ dtƒ}||ƒG dd„ dtƒƒ}||ƒ}|  	¡ }|  
¡ \}}|� |j||g||
|	d� W 5 Q R X |  |jjd | | |
 |k¡ |  |j|f||
f ||	f¡ |  t|ƒd¡ |d \}}|\}|  |i ¡ |  t||ƒ¡ |  t|j|ƒ¡ |  |jj|k¡ |  |jj|k¡ |  |jj|f¡ |  |jj|
k¡ |  |jj|	k¡ |  |jj|k¡ d S )Nr   rT   rÑ   )ÚimplementedByrU   rÇ   c                   @   s   e Zd ZdS )zNComponentsTests.test_registerAdapter_w_required_containing_class.<locals>.IFooNr:   r   r   r   r   r=   ä  s   r=   rŒ   r@   r   c                   @   s   e Zd ZdS )zRComponentsTests.test_registerAdapter_w_required_containing_class.<locals>._FactoryNr:   r   r   r   r   rÍ   ê  s   rÍ   c                   @   s   e Zd ZdS )zRComponentsTests.test_registerAdapter_w_required_containing_class.<locals>._ContextNr:   r   r   r   r   Ú_Contextí  s   rÚ   rÔ   rZ   )rB   r9   rÒ   rÙ   r[   rV   r\   rÈ   rC   r   r   rÄ   r%   r'   r]   r"   r*   r_   r&   r   r`   rË   r   r@   rM   )r
   r9   rÒ   rÙ   rV   rÈ   r=   rE   rÅ   rF   ra   rÍ   rÚ   Z	_ctx_implr-   r   r   r   r   rb   r   r   r   Ú0test_registerAdapter_w_required_containing_classÝ  sN     ÿÿÿz@ComponentsTests.test_registerAdapter_w_required_containing_classc              	   C   sf   ddl m} G dd„ d|ƒ}|dƒ}d}d}G dd„ dtƒ}|  ¡ }| jt|j|tƒ g|||d	� d S )
Nr   rT   c                   @   s   e Zd ZdS )zMComponentsTests.test_registerAdapter_w_required_containing_junk.<locals>.IFooNr:   r   r   r   r   r=   
  s   r=   r@   r   c                   @   s   e Zd ZdS )zQComponentsTests.test_registerAdapter_w_required_containing_junk.<locals>._FactoryNr:   r   r   r   r   rÍ     s   rÍ   rÔ   rÏ   rÕ   r   r   r   Ú/test_registerAdapter_w_required_containing_junk  s      ÿz?ComponentsTests.test_registerAdapter_w_required_containing_junkc              	      s–  ddl m} ddlm} ddlm} G dd„ d|ƒ}|dƒ}|dƒ‰ d}d	}G ‡ fd
d„dtƒ}|  ¡ }	|  ¡ \}
}|
� |	j	||||d� W 5 Q R X |  
|	jjd ˆ  | | |k¡ |  |	jˆ f||f ||f¡ |  t|ƒd¡ |d \}}|\}|  |i ¡ |  
t||ƒ¡ |  
t|j|ƒ¡ |  
|jj|	k¡ |  
|jj|k¡ |  |jjˆ f¡ |  
|jj|k¡ |  
|jj|k¡ |  
|jj|k¡ d S )Nr   rT   rU   rÇ   c                   @   s   e Zd ZdS )zGComponentsTests.test_registerAdapter_wo_explicit_required.<locals>.IFooNr:   r   r   r   r   r=     s   r=   rŒ   r@   r   c                       s   e Zd Z” fZdS )zKComponentsTests.test_registerAdapter_wo_explicit_required.<locals>._FactoryN©r#   r;   r<   Ú__component_adapts__r   ©rÅ   r   r   rÍ   !  s   rÍ   rÔ   rZ   )rB   r9   r[   rV   r\   rÈ   rC   r   r   rÄ   r%   r'   r]   r"   r*   r_   r&   r   r`   rË   r   r@   rM   )r
   r9   rV   rÈ   r=   rE   rF   ra   rÍ   r-   r   r   r   r   rb   r   rß   r   Ú)test_registerAdapter_wo_explicit_required  sB    
ÿÿÿz9ComponentsTests.test_registerAdapter_wo_explicit_requiredc              	   C   sŒ   ddl m} G dd„ d|ƒ}|dƒ}|dƒ}d}d}dd	„ }|  ¡ }|  ¡ \}	}
|	� |j||f|||d
d� W 5 Q R X |  t|
ƒd¡ d S )Nr   rT   c                   @   s   e Zd ZdS )z;ComponentsTests.test_registerAdapter_wo_event.<locals>.IFooNr:   r   r   r   r   r=   =  s   r=   rŒ   r@   r   c                 S   s
   t ƒ ‚d S r   rH   rÉ   r   r   r   rJ   D  s    z?ComponentsTests.test_registerAdapter_wo_event.<locals>._factoryF)rb   )rB   r9   r   r   rÄ   r"   r_   )r
   r9   r=   rE   rÅ   rF   ra   rJ   r-   r   r   r   r   r   Útest_registerAdapter_wo_event:  s    ÿz-ComponentsTests.test_registerAdapter_wo_eventc                 C   s    |   ¡ }| jt|jd d d� d S ©N)rM   r`   )r   rO   rP   ÚunregisterAdapterr2   r   r   r   Ú3test_unregisterAdapter_neither_factory_nor_providedM  s
    
 ÿzCComponentsTests.test_unregisterAdapter_neither_factory_nor_providedc                 C   sF   ddl m} G dd„ d|ƒ}|dƒ}|  ¡ }| jt|jd |d d� d S )Nr   rT   c                   @   s   e Zd ZdS )zQComponentsTests.test_unregisterAdapter_neither_factory_nor_required.<locals>.IFooNr:   r   r   r   r   r=   T  s   r=   ©rM   r`   rË   )rB   r9   r   rO   rP   rã   r°   r   r   r   Ú3test_unregisterAdapter_neither_factory_nor_requiredR  s    
  ÿzCComponentsTests.test_unregisterAdapter_neither_factory_nor_requiredc           
   	   C   s~   ddl m} G dd„ d|ƒ}|dƒ}|dƒ}G dd„ dtƒ}|  ¡ }|  ¡ \}}|� | ||f|¡}	W 5 Q R X |  |	¡ d S )Nr   rT   c                   @   s   e Zd ZdS )z9ComponentsTests.test_unregisterAdapter_miss.<locals>.IFooNr:   r   r   r   r   r=   ]  s   r=   rŒ   c                   @   s   e Zd ZdS )z=ComponentsTests.test_unregisterAdapter_miss.<locals>._FactoryNr:   r   r   r   r   rÍ   a  s   rÍ   )rB   r9   rC   r   r   rã   r’   ©
r
   r9   r=   rE   rÅ   rÍ   r-   r   r   r“   r   r   r   Útest_unregisterAdapter_miss[  s    z+ComponentsTests.test_unregisterAdapter_missc              	   C   sx  ddl m} ddlm} ddlm} G dd„ d|ƒ}|dƒ}|dƒ}G dd	„ d	tƒ}|  ¡ }| ||f|¡ |  	¡ \}	}
|	� | 
||f|¡}W 5 Q R X |  |¡ |  |jj¡ |  |j¡ |  t|
ƒd
¡ |
d \}}|\}|  |i ¡ |  t||ƒ¡ |  t|j|ƒ¡ |  |jj|k¡ |  |jj|k¡ |  |jj|f¡ |  |jjd¡ |  |jjd¡ |  |jj|k¡ d S )Nr   rT   rv   rÇ   c                   @   s   e Zd ZdS )zYComponentsTests.test_unregisterAdapter_hit_w_explicit_provided_and_required.<locals>.IFooNr:   r   r   r   r   r=   n  s   r=   rŒ   c                   @   s   e Zd ZdS )z]ComponentsTests.test_unregisterAdapter_hit_w_explicit_provided_and_required.<locals>._FactoryNr:   r   r   r   r   rÍ   r  s   rÍ   rZ   rY   )rB   r9   r[   rw   r\   rÈ   rC   r   rÄ   r   rã   r%   r’   r'   r]   r*   r"   r_   r&   r   r`   rË   r   r@   rM   )r
   r9   rw   rÈ   r=   rE   rÅ   rÍ   r-   r   r   r“   r   r   rb   r   r   r   Ú;test_unregisterAdapter_hit_w_explicit_provided_and_requiredj  s6    
zKComponentsTests.test_unregisterAdapter_hit_w_explicit_provided_and_requiredc              	   C   sp  ddl m} ddl m} ddlm} ddlm} G dd„ d|ƒ}|dƒ}|dƒ}||ƒG d	d
„ d
tƒƒ}|  ¡ }	|	 	||f|¡ |  
¡ \}
}|
� |	 ||f¡}W 5 Q R X |  |¡ |  t|ƒd¡ |d \}}|\}|  |i ¡ |  t||ƒ¡ |  t|j|ƒ¡ |  |jj|	k¡ |  |jj|k¡ |  |jj|f¡ |  |jjd¡ |  |jjd¡ |  |jj|k¡ d S )Nr   rT   rÑ   rv   rÇ   c                   @   s   e Zd ZdS )zIComponentsTests.test_unregisterAdapter_wo_explicit_provided.<locals>.IFooNr:   r   r   r   r   r=   �  s   r=   rŒ   c                   @   s   e Zd ZdS )zMComponentsTests.test_unregisterAdapter_wo_explicit_provided.<locals>._FactoryNr:   r   r   r   r   rÍ   “  s   rÍ   rZ   rY   )rB   r9   rÒ   r[   rw   r\   rÈ   rC   r   rÄ   r   rã   r%   r"   r_   r&   r   r`   rË   r   r@   rM   )r
   r9   rÒ   rw   rÈ   r=   rE   rÅ   rÍ   r-   r   r   r“   r   r   rb   r   r   r   Ú+test_unregisterAdapter_wo_explicit_providedŠ  s6    
z;ComponentsTests.test_unregisterAdapter_wo_explicit_providedc              	      s`  ddl m} ddlm} ddlm} G dd„ d|ƒ}|dƒ}|dƒ‰ G ‡ fdd	„d	tƒ}|  ¡ }| |ˆ f|¡ |  	¡ \}}	|� |j
||d
�}
W 5 Q R X |  |
¡ |  t|	ƒd¡ |	d \}}|\}|  |i ¡ |  t||ƒ¡ |  t|j|ƒ¡ |  |jj|k¡ |  |jj|k¡ |  |jjˆ f¡ |  |jjd¡ |  |jjd¡ |  |jj|k¡ d S )Nr   rT   rv   rÇ   c                   @   s   e Zd ZdS )zIComponentsTests.test_unregisterAdapter_wo_explicit_required.<locals>.IFooNr:   r   r   r   r   r=   ®  s   r=   rŒ   c                       s   e Zd Z” fZdS )zMComponentsTests.test_unregisterAdapter_wo_explicit_required.<locals>._FactoryNrÝ   r   rß   r   r   rÍ   ²  s   rÍ   ©r`   rZ   rY   )rB   r9   r[   rw   r\   rÈ   rC   r   rÄ   r   rã   r%   r"   r_   r&   r   r`   rË   r   r@   rM   )r
   r9   rw   rÈ   r=   rE   rÍ   r-   r   r   r“   r   r   rb   r   rß   r   Ú+test_unregisterAdapter_wo_explicit_requiredª  s2    
z;ComponentsTests.test_unregisterAdapter_wo_explicit_requiredc                 C   s    |   ¡ }|  t| ¡ ƒg ¡ d S r   )r   r"   r‡   ÚregisteredAdaptersr2   r   r   r   Útest_registeredAdapters_emptyÈ  s    z-ComponentsTests.test_registeredAdapters_emptyc                 C   sÄ  ddl m} ddlm} G dd„ d|ƒ}|dƒ}|dƒ}d}d}d}G d	d
„ d
tƒ}	|  ¡ }
|
 |	|f|||¡ |
 |	|f|||¡ t|
 ¡ dd„ d�}|  	t
|ƒd¡ |  t|d |ƒ¡ |  |d j|
k¡ |  |d j|k¡ |  	|d j|f¡ |  |d j|k¡ |  |d j|k¡ |  |d j|	k¡ |  t|d |ƒ¡ |  |d j|
k¡ |  |d j|k¡ |  	|d j|f¡ |  |d j|k¡ |  |d j|k¡ |  |d j|	k¡ d S )Nr   rT   rÇ   c                   @   s   e Zd ZdS )z>ComponentsTests.test_registeredAdapters_notempty.<locals>.IFooNr:   r   r   r   r   r=   Ð  s   r=   r@   rp   rq   c                   @   s   e Zd ZdS )zBComponentsTests.test_registeredAdapters_notempty.<locals>._FactoryNr:   r   r   r   r   rÍ   ×  s   rÍ   c                 S   s   | j S r   r¥   r¦   r   r   r   r¨   Ý  r©   zBComponentsTests.test_registeredAdapters_notempty.<locals>.<lambda>rª   rm   rZ   )rB   r9   r\   rÈ   rC   r   rÄ   r¬   rí   r"   r_   r%   r&   r   r`   rË   r   r@   rM   )r
   r9   rÈ   r=   rE   rÅ   rF   rs   rt   rÍ   r-   r­   r   r   r   Ú test_registeredAdapters_notemptyÌ  s8    z0ComponentsTests.test_registeredAdapters_notemptyc                 C   sL   ddl m} G dd„ d|ƒ}|dƒ}|  ¡ }tƒ }|  | ||¡d k¡ d S )Nr   rT   c                   @   s   e Zd ZdS )z?ComponentsTests.test_queryAdapter_miss_no_default.<locals>.IFooNr:   r   r   r   r   r=   ð  s   r=   ©rB   r9   r   rC   r%   ÚqueryAdapter)r
   r9   r=   rE   r-   Ú_contextr   r   r   Ú!test_queryAdapter_miss_no_defaultî  s    z1ComponentsTests.test_queryAdapter_miss_no_defaultc                 C   sV   ddl m} G dd„ d|ƒ}|dƒ}|  ¡ }tƒ }tƒ }|  |j|||d�|k¡ d S )Nr   rT   c                   @   s   e Zd ZdS )z>ComponentsTests.test_queryAdapter_miss_w_default.<locals>.IFooNr:   r   r   r   r   r=   ù  s   r=   r²   rð   )r
   r9   r=   rE   r-   rò   r´   r   r   r   Ú test_queryAdapter_miss_w_default÷  s    ÿz0ComponentsTests.test_queryAdapter_miss_w_defaultc                 C   s®   ddl m} ddl m} G dd„ d|ƒ}|dƒ}|dƒ}G dd„ dtƒ}||ƒG d	d
„ d
tƒƒ}|ƒ }|  ¡ }	|	 ||f|¡ |	 ||¡}
|  t|
|ƒ¡ |  |
j	|k¡ d S )Nr   rT   rÑ   c                   @   s   e Zd ZdS )z3ComponentsTests.test_queryAdapter_hit.<locals>.IFooNr:   r   r   r   r   r=     s   r=   rŒ   c                   @   s   e Zd Zdd„ ZdS )z7ComponentsTests.test_queryAdapter_hit.<locals>._Factoryc                 S   s
   || _ d S r   rÉ   ©r
   rÊ   r   r   r   r    
  s    z@ComponentsTests.test_queryAdapter_hit.<locals>._Factory.__init__N©r#   r;   r<   r    r   r   r   r   rÍ   	  s   rÍ   c                   @   s   e Zd ZdS )z7ComponentsTests.test_queryAdapter_hit.<locals>._ContextNr:   r   r   r   r   rÚ     s   rÚ   )
rB   r9   rÒ   rC   r   rÄ   rñ   r%   r&   rÊ   ©r
   r9   rÒ   r=   rE   rÅ   rÍ   rÚ   rò   r-   Úadapterr   r   r   Útest_queryAdapter_hit  s    z%ComponentsTests.test_queryAdapter_hitc           
      C   s€   ddl m} ddl m} ddlm} G dd„ d|ƒ}|dƒ}|dƒ}||ƒG dd	„ d	tƒƒ}|ƒ }|  ¡ }	|  ||	j||¡ d S )
Nr   rT   rÑ   r¸   c                   @   s   e Zd ZdS )z2ComponentsTests.test_getAdapter_miss.<locals>.IFooNr:   r   r   r   r   r=     s   r=   rŒ   c                   @   s   e Zd ZdS )z6ComponentsTests.test_getAdapter_miss.<locals>._ContextNr:   r   r   r   r   rÚ     s   rÚ   )	rB   r9   rÒ   r[   r¹   rC   r   rO   Ú
getAdapter)
r
   r9   rÒ   r¹   r=   rE   rÅ   rÚ   rò   r-   r   r   r   Útest_getAdapter_miss  s      ÿz$ComponentsTests.test_getAdapter_missc                 C   s®   ddl m} ddl m} G dd„ d|ƒ}|dƒ}|dƒ}G dd„ dtƒ}||ƒG d	d
„ d
tƒƒ}|ƒ }|  ¡ }	|	 ||f|¡ |	 ||¡}
|  t|
|ƒ¡ |  |
j	|k¡ d S )Nr   rT   rÑ   c                   @   s   e Zd ZdS )z1ComponentsTests.test_getAdapter_hit.<locals>.IFooNr:   r   r   r   r   r=   )  s   r=   rŒ   c                   @   s   e Zd Zdd„ ZdS )z5ComponentsTests.test_getAdapter_hit.<locals>._Factoryc                 S   s
   || _ d S r   rÉ   rõ   r   r   r   r    .  s    z>ComponentsTests.test_getAdapter_hit.<locals>._Factory.__init__Nrö   r   r   r   r   rÍ   -  s   rÍ   c                   @   s   e Zd ZdS )z5ComponentsTests.test_getAdapter_hit.<locals>._ContextNr:   r   r   r   r   rÚ   0  s   rÚ   )
rB   r9   rÒ   rC   r   rÄ   rú   r%   r&   rÊ   r÷   r   r   r   Útest_getAdapter_hit&  s    z#ComponentsTests.test_getAdapter_hitc                 C   s    ddl m} ddl m} G dd„ d|ƒ}|dƒ}|dƒ}|dƒ}||ƒG dd	„ d	tƒƒ}||ƒG d
d„ dtƒƒ}|ƒ }	|ƒ }
|  ¡ }|  | |	|
f|¡d ¡ d S )Nr   rT   rÑ   c                   @   s   e Zd ZdS )z9ComponentsTests.test_queryMultiAdapter_miss.<locals>.IFooNr:   r   r   r   r   r=   =  s   r=   rŒ   ÚIBazc                   @   s   e Zd ZdS )z>ComponentsTests.test_queryMultiAdapter_miss.<locals>._Context1Nr:   r   r   r   r   Ú	_Context1B  s   rþ   c                   @   s   e Zd ZdS )z>ComponentsTests.test_queryMultiAdapter_miss.<locals>._Context2Nr:   r   r   r   r   Ú	_Context2E  s   rÿ   )rB   r9   rÒ   rC   r   r"   ÚqueryMultiAdapter©r
   r9   rÒ   r=   rE   rÅ   Úibazrþ   rÿ   Ú	_context1Ú	_context2r-   r   r   r   Útest_queryMultiAdapter_miss:  s     ÿz+ComponentsTests.test_queryMultiAdapter_missc                 C   s¬   ddl m} ddl m} G dd„ d|ƒ}|dƒ}|dƒ}|dƒ}||ƒG dd	„ d	tƒƒ}||ƒG d
d„ dtƒƒ}|ƒ }	|ƒ }
tƒ }|  ¡ }|  |j|	|
f||d�|k¡ d S )Nr   rT   rÑ   c                   @   s   e Zd ZdS )zCComponentsTests.test_queryMultiAdapter_miss_w_default.<locals>.IFooNr:   r   r   r   r   r=   Q  s   r=   rŒ   rý   c                   @   s   e Zd ZdS )zHComponentsTests.test_queryMultiAdapter_miss_w_default.<locals>._Context1Nr:   r   r   r   r   rþ   V  s   rþ   c                   @   s   e Zd ZdS )zHComponentsTests.test_queryMultiAdapter_miss_w_default.<locals>._Context2Nr:   r   r   r   r   rÿ   Y  s   rÿ   r²   )rB   r9   rÒ   rC   r   r%   r   )r
   r9   rÒ   r=   rE   rÅ   r  rþ   rÿ   r  r  r´   r-   r   r   r   Ú%test_queryMultiAdapter_miss_w_defaultN  s*    ÿÿÿz5ComponentsTests.test_queryMultiAdapter_miss_w_defaultc                 C   sÜ   ddl m} ddl m} G dd„ d|ƒ}|dƒ}|dƒ}|dƒ}||ƒG dd	„ d	tƒƒ}||ƒG d
d„ dtƒƒ}|ƒ }	|ƒ }
G dd„ dtƒ}|  ¡ }| |||f|¡ | |	|
f|¡}|  t||ƒ¡ |  	|j
|	|
f¡ d S )Nr   rT   rÑ   c                   @   s   e Zd ZdS )z8ComponentsTests.test_queryMultiAdapter_hit.<locals>.IFooNr:   r   r   r   r   r=   g  s   r=   rŒ   rý   c                   @   s   e Zd ZdS )z=ComponentsTests.test_queryMultiAdapter_hit.<locals>._Context1Nr:   r   r   r   r   rþ   l  s   rþ   c                   @   s   e Zd ZdS )z=ComponentsTests.test_queryMultiAdapter_hit.<locals>._Context2Nr:   r   r   r   r   rÿ   o  s   rÿ   c                   @   s   e Zd Zdd„ ZdS )z<ComponentsTests.test_queryMultiAdapter_hit.<locals>._Factoryc                 S   s   ||f| _ d S r   rÉ   ©r
   Úcontext1Úcontext2r   r   r   r    u  s    zEComponentsTests.test_queryMultiAdapter_hit.<locals>._Factory.__init__Nrö   r   r   r   r   rÍ   t  s   rÍ   )rB   r9   rÒ   rC   r   rÄ   r   r%   r&   r"   rÊ   ©r
   r9   rÒ   r=   rE   rÅ   r  rþ   rÿ   r  r  rÍ   r-   rø   r   r   r   Útest_queryMultiAdapter_hitd  s$    z*ComponentsTests.test_queryMultiAdapter_hitc                 C   sª   ddl m} ddl m} ddlm} G dd„ d|ƒ}|dƒ}|dƒ}|dƒ}||ƒG d	d
„ d
tƒƒ}||ƒG dd„ dtƒƒ}	|ƒ }
|	ƒ }|  ¡ }|  ||j|
|f|¡ d S )Nr   rT   rÑ   r¸   c                   @   s   e Zd ZdS )z7ComponentsTests.test_getMultiAdapter_miss.<locals>.IFooNr:   r   r   r   r   r=   �  s   r=   rŒ   rý   c                   @   s   e Zd ZdS )z<ComponentsTests.test_getMultiAdapter_miss.<locals>._Context1Nr:   r   r   r   r   rþ   †  s   rþ   c                   @   s   e Zd ZdS )z<ComponentsTests.test_getMultiAdapter_miss.<locals>._Context2Nr:   r   r   r   r   rÿ   ‰  s   rÿ   )	rB   r9   rÒ   r[   r¹   rC   r   rO   ÚgetMultiAdapter)r
   r9   rÒ   r¹   r=   rE   rÅ   r  rþ   rÿ   r  r  r-   r   r   r   Útest_getMultiAdapter_miss}  s&      ÿz)ComponentsTests.test_getMultiAdapter_missc                 C   sÜ   ddl m} ddl m} G dd„ d|ƒ}|dƒ}|dƒ}|dƒ}||ƒG dd	„ d	tƒƒ}||ƒG d
d„ dtƒƒ}|ƒ }	|ƒ }
G dd„ dtƒ}|  ¡ }| |||f|¡ | |	|
f|¡}|  t||ƒ¡ |  	|j
|	|
f¡ d S )Nr   rT   rÑ   c                   @   s   e Zd ZdS )z6ComponentsTests.test_getMultiAdapter_hit.<locals>.IFooNr:   r   r   r   r   r=   •  s   r=   rŒ   rý   c                   @   s   e Zd ZdS )z;ComponentsTests.test_getMultiAdapter_hit.<locals>._Context1Nr:   r   r   r   r   rþ   š  s   rþ   c                   @   s   e Zd ZdS )z;ComponentsTests.test_getMultiAdapter_hit.<locals>._Context2Nr:   r   r   r   r   rÿ   �  s   rÿ   c                   @   s   e Zd Zdd„ ZdS )z:ComponentsTests.test_getMultiAdapter_hit.<locals>._Factoryc                 S   s   ||f| _ d S r   rÉ   r  r   r   r   r    £  s    zCComponentsTests.test_getMultiAdapter_hit.<locals>._Factory.__init__Nrö   r   r   r   r   rÍ   ¢  s   rÍ   )rB   r9   rÒ   rC   r   rÄ   r  r%   r&   r"   rÊ   r
  r   r   r   Útest_getMultiAdapter_hit’  s$    z(ComponentsTests.test_getMultiAdapter_hitc                 C   s¤   ddl m} ddl m} G dd„ d|ƒ}|dƒ}|dƒ}|dƒ}||ƒG dd	„ d	tƒƒ}||ƒG d
d„ dtƒƒ}|ƒ }	|ƒ }
|  ¡ }|  t| |	|
f|¡ƒg ¡ d S )Nr   rT   rÑ   c                   @   s   e Zd ZdS )z4ComponentsTests.test_getAdapters_empty.<locals>.IFooNr:   r   r   r   r   r=   ®  s   r=   rŒ   rý   c                   @   s   e Zd ZdS )z9ComponentsTests.test_getAdapters_empty.<locals>._Context1Nr:   r   r   r   r   rþ   ³  s   rþ   c                   @   s   e Zd ZdS )z9ComponentsTests.test_getAdapters_empty.<locals>._Context2Nr:   r   r   r   r   rÿ   ¶  s   rÿ   )rB   r9   rÒ   rC   r   r"   r‡   ÚgetAdaptersr  r   r   r   Útest_getAdapters_empty«  s"     ÿz&ComponentsTests.test_getAdapters_emptyc                    sØ   ddl m} ddl m} G dd„ d|ƒ}|dƒ}|dƒ}|dƒ}||ƒG dd	„ d	tƒƒ}||ƒG d
d„ dtƒƒ}|ƒ }	|ƒ }
|  ¡ }g ‰ ‡ fdd„}| |||f|¡ |  t| |	|
f|¡ƒg ¡ |  ˆ |	|
fg¡ d S )Nr   rT   rÑ   c                   @   s   e Zd ZdS )zCComponentsTests.test_getAdapters_factory_returns_None.<locals>.IFooNr:   r   r   r   r   r=   Â  s   r=   rŒ   rý   c                   @   s   e Zd ZdS )zHComponentsTests.test_getAdapters_factory_returns_None.<locals>._Context1Nr:   r   r   r   r   rþ   Ç  s   rþ   c                   @   s   e Zd ZdS )zHComponentsTests.test_getAdapters_factory_returns_None.<locals>._Context2Nr:   r   r   r   r   rÿ   Ê  s   rÿ   c                    s   ˆ   | |f¡ d S r   r   )r  r	  ©Z_called_withr   r   Ú_side_effect_onlyÑ  s    zPComponentsTests.test_getAdapters_factory_returns_None.<locals>._side_effect_only)	rB   r9   rÒ   rC   r   rÄ   r"   r‡   r  )r
   r9   rÒ   r=   rE   rÅ   r  rþ   rÿ   r  r  r-   r  r   r  r   Ú%test_getAdapters_factory_returns_None¿  s*     ÿz5ComponentsTests.test_getAdapters_factory_returns_Nonec                 C   sX  ddl m} ddl m} G dd„ d|ƒ}|dƒ}|dƒ}|dƒ}||ƒG dd	„ d	tƒƒ}||ƒG d
d„ dtƒƒ}|ƒ }	|ƒ }
G dd„ dtƒ}G dd„ dtƒ}d}d}|  ¡ }|j|||f||d� |j|||f||d� t| |	|
f|¡ƒ}|  t	|ƒd¡ |  |d d |¡ |  
t|d d |ƒ¡ |  |d d |¡ |  
t|d d |ƒ¡ d S )Nr   rT   rÑ   c                   @   s   e Zd ZdS )z8ComponentsTests.test_getAdapters_non_empty.<locals>.IFooNr:   r   r   r   r   r=   Ý  s   r=   rŒ   rý   c                   @   s   e Zd ZdS )z=ComponentsTests.test_getAdapters_non_empty.<locals>._Context1Nr:   r   r   r   r   rþ   â  s   rþ   c                   @   s   e Zd ZdS )z=ComponentsTests.test_getAdapters_non_empty.<locals>._Context2Nr:   r   r   r   r   rÿ   å  s   rÿ   c                   @   s   e Zd Zdd„ ZdS )z=ComponentsTests.test_getAdapters_non_empty.<locals>._Factory1c                 S   s   ||f| _ d S r   rÉ   r  r   r   r   r    ë  s    zFComponentsTests.test_getAdapters_non_empty.<locals>._Factory1.__init__Nrö   r   r   r   r   Ú	_Factory1ê  s   r  c                   @   s   e Zd Zdd„ ZdS )z=ComponentsTests.test_getAdapters_non_empty.<locals>._Factory2c                 S   s   ||f| _ d S r   rÉ   r  r   r   r   r    î  s    zFComponentsTests.test_getAdapters_non_empty.<locals>._Factory2.__init__Nrö   r   r   r   r   Ú	_Factory2í  s   r  rp   rq   r¥   rm   rZ   )rB   r9   rÒ   rC   r   rÄ   r¬   r  r"   r_   r%   r&   )r
   r9   rÒ   r=   rE   rÅ   r  rþ   rÿ   r  r  r  r  rs   rt   r-   Úfoundr   r   r   Útest_getAdapters_non_emptyÙ  s2    z*ComponentsTests.test_getAdapters_non_emptyc           	   	   C   sb   ddl m} G dd„ d|ƒ}|dƒ}|dƒ}d}d}dd	„ }|  ¡ }|  t|j||f|||¡ d S )
Nr   rT   c                   @   s   e Zd ZdS )zNComponentsTests.test_registerSubscriptionAdapter_w_nonblank_name.<locals>.IFooNr:   r   r   r   r   r=   ÿ  s   r=   rŒ   r   r@   c                 S   s
   t ƒ ‚d S r   rH   rÉ   r   r   r   rJ     s    zRComponentsTests.test_registerSubscriptionAdapter_w_nonblank_name.<locals>._factory)rB   r9   r   rO   rP   ÚregisterSubscriptionAdapter)	r
   r9   r=   rE   rÅ   ra   rF   rJ   r-   r   r   r   Ú0test_registerSubscriptionAdapter_w_nonblank_nameü  s    
    ÿz@ComponentsTests.test_registerSubscriptionAdapter_w_nonblank_namec              	   C   s   ddl m} ddlm} ddlm} G dd„ d|ƒ}|dƒ}|dƒ}d}d	}d
d„ }	|  ¡ }
|  ¡ \}}|� |
j|	|f||d� W 5 Q R X |
j	j
d | | | }|  t|ƒd¡ |  |d |	k¡ |  |
j|f|||	|fg¡ |  t|ƒd¡ |d \}}|\}|  |i ¡ |  t||ƒ¡ |  t|j|ƒ¡ |  |jj|
k¡ |  |jj|k¡ |  |jj|f¡ |  |jj|¡ |  |jj|k¡ |  |jj|	k¡ d S )Nr   rT   rU   ©ÚSubscriptionRegistrationc                   @   s   e Zd ZdS )z_ComponentsTests.test_registerSubscriptionAdapter_w_explicit_provided_and_required.<locals>.IFooNr:   r   r   r   r   r=     s   r=   rŒ   rY   r@   c                 S   s
   t ƒ ‚d S r   rH   rÉ   r   r   r   rJ     s    zcComponentsTests.test_registerSubscriptionAdapter_w_explicit_provided_and_required.<locals>._factoryrA   rZ   )rB   r9   r[   rV   r\   r  r   r   r  r'   r^   r"   r_   r%   r+   r&   rC   r   r`   rË   r   r@   rM   )r
   r9   rV   r  r=   rE   rÅ   Ú_blankrF   rJ   r-   r   r   r­   r   r   rb   r   r   r   ÚAtest_registerSubscriptionAdapter_w_explicit_provided_and_required  sB    ÿÿzQComponentsTests.test_registerSubscriptionAdapter_w_explicit_provided_and_requiredc              	   C   sº  ddl m} ddl m} ddlm} ddlm} G dd„ d|ƒ}|dƒ}|dƒ}d	}d
}	||ƒG dd„ dtƒƒ}
|  ¡ }|  	¡ \}}|� |j
|
|f|d� W 5 Q R X |jjd | | |	 }|  t|ƒd¡ |  |d |
k¡ |  |j|f||	|
|fg¡ |  t|ƒd¡ |d \}}|\}|  |i ¡ |  t||ƒ¡ |  t|j|ƒ¡ |  |jj|k¡ |  |jj|k¡ |  |jj|f¡ |  |jj|	¡ |  |jj|k¡ |  |jj|
k¡ d S )Nr   rT   rÑ   rU   r  c                   @   s   e Zd ZdS )zSComponentsTests.test_registerSubscriptionAdapter_wo_explicit_provided.<locals>.IFooNr:   r   r   r   r   r=   6  s   r=   rŒ   r@   rY   c                   @   s   e Zd ZdS )zWComponentsTests.test_registerSubscriptionAdapter_wo_explicit_provided.<locals>._FactoryNr:   r   r   r   r   rÍ   =  s   rÍ   rA   rZ   )rB   r9   rÒ   r[   rV   r\   r  rC   r   r   r  r'   r^   r"   r_   r%   r+   r&   r   r`   rË   r   r@   rM   )r
   r9   rÒ   rV   r  r=   rE   rÅ   rF   r  rÍ   r-   r   r   r­   r   r   rb   r   r   r   Ú5test_registerSubscriptionAdapter_wo_explicit_provided0  sB    ÿzEComponentsTests.test_registerSubscriptionAdapter_wo_explicit_providedc              	      s¨  ddl m} ddlm} ddlm} G dd„ d|ƒ}|dƒ}|dƒ‰ d}d	}G ‡ fd
d„dtƒ}|  ¡ }	|  ¡ \}
}|
� |	j	|||d� W 5 Q R X |	j
jd ˆ  | | }|  t|ƒd¡ |  |d |k¡ |  |	jˆ f||||fg¡ |  t|ƒd¡ |d \}}|\}|  |i ¡ |  t||ƒ¡ |  t|j|ƒ¡ |  |jj|	k¡ |  |jj|k¡ |  |jjˆ f¡ |  |jj|¡ |  |jj|k¡ |  |jj|k¡ d S )Nr   rT   rU   r  c                   @   s   e Zd ZdS )zSComponentsTests.test_registerSubscriptionAdapter_wo_explicit_required.<locals>.IFooNr:   r   r   r   r   r=   \  s   r=   rŒ   r@   rY   c                       s   e Zd Z” fZdS )zWComponentsTests.test_registerSubscriptionAdapter_wo_explicit_required.<locals>._FactoryNrÝ   r   rß   r   r   rÍ   b  s   rÍ   )r`   r@   rZ   )rB   r9   r[   rV   r\   r  rC   r   r   r  r'   r^   r"   r_   r%   r+   r&   r   r`   rË   r   r@   rM   )r
   r9   rV   r  r=   rE   rF   r  rÍ   r-   r   r   r­   r   r   rb   r   rß   r   Ú5test_registerSubscriptionAdapter_wo_explicit_requiredW  sF      ÿÿzEComponentsTests.test_registerSubscriptionAdapter_wo_explicit_requiredc              	   C   sŠ   ddl m} G dd„ d|ƒ}|dƒ}|dƒ}d}d}dd	„ }|  ¡ }|  ¡ \}	}
|	� |j||f||d
d� W 5 Q R X |  t|
ƒd¡ d S )Nr   rT   c                   @   s   e Zd ZdS )zGComponentsTests.test_registerSubscriptionAdapter_wo_event.<locals>.IFooNr:   r   r   r   r   r=     s   r=   rŒ   rY   r@   c                 S   s
   t ƒ ‚d S r   rH   rÉ   r   r   r   rJ   †  s    zKComponentsTests.test_registerSubscriptionAdapter_wo_event.<locals>._factoryF©r@   rb   )rB   r9   r   r   r  r"   r_   )r
   r9   r=   rE   rÅ   r  rF   rJ   r-   r   r   r   r   r   Ú)test_registerSubscriptionAdapter_wo_event|  s     ÿz9ComponentsTests.test_registerSubscriptionAdapter_wo_eventc                 C   s    |   ¡ }|  t| ¡ ƒg ¡ d S r   )r   r"   r‡   ÚregisteredSubscriptionAdaptersr2   r   r   r   Ú)test_registeredSubscriptionAdapters_empty�  s    z9ComponentsTests.test_registeredSubscriptionAdapters_emptyc                 C   s´  ddl m} ddlm} G dd„ d|ƒ}|dƒ}|dƒ}d}d}G dd	„ d	tƒ}|  ¡ }	|	j||f||d
� |	j||f||d
� t|	 ¡ ƒ}
|  	t
|
ƒd¡ |  t|
d |ƒ¡ |  |
d j|	k¡ |  |
d j|k¡ |  	|
d j|f¡ |  	|
d j|¡ |  |
d j|k¡ |  |
d j|k¡ |  t|
d |ƒ¡ |  |
d j|	k¡ |  |
d j|k¡ |  	|
d j|f¡ |  	|
d j|¡ |  |
d j|k¡ |  |
d j|k¡ d S )Nr   rT   r  c                   @   s   e Zd ZdS )zJComponentsTests.test_registeredSubscriptionAdapters_notempty.<locals>.IFooNr:   r   r   r   r   r=   ˜  s   r=   r@   rY   c                   @   s   e Zd ZdS )zNComponentsTests.test_registeredSubscriptionAdapters_notempty.<locals>._FactoryNr:   r   r   r   r   rÍ   ž  s   rÍ   rA   rm   rZ   )rB   r9   r\   r  rC   r   r  r‡   r"  r"   r_   r%   r&   r   r`   rË   r   r@   rM   )r
   r9   r  r=   rE   rÅ   rF   r  rÍ   r-   r­   r   r   r   Ú,test_registeredSubscriptionAdapters_notempty”  s6    z<ComponentsTests.test_registeredSubscriptionAdapters_notemptyc                 C   sR   ddl m} G dd„ d|ƒ}|dƒ}|dƒ}d}|  ¡ }| jt|j|||d� d S )Nr   rT   c                   @   s   e Zd ZdS )zPComponentsTests.test_unregisterSubscriptionAdapter_w_nonblank_name.<locals>.IFooNr:   r   r   r   r   r=   ¸  s   r=   rŒ   Únonblank)rË   r`   r   ©rB   r9   r   rO   rP   ÚunregisterSubscriptionAdapter)r
   r9   r=   rE   rÅ   Ú	_nonblankr-   r   r   r   Ú2test_unregisterSubscriptionAdapter_w_nonblank_nameµ  s    
  ÿzBComponentsTests.test_unregisterSubscriptionAdapter_w_nonblank_namec                 C   s    |   ¡ }| jt|jd d d� d S râ   )r   rO   rP   r'  r2   r   r   r   Ú?test_unregisterSubscriptionAdapter_neither_factory_nor_providedÁ  s
    
 ÿzOComponentsTests.test_unregisterSubscriptionAdapter_neither_factory_nor_providedc                 C   sF   ddl m} G dd„ d|ƒ}|dƒ}|  ¡ }| jt|jd |d d� d S )Nr   rT   c                   @   s   e Zd ZdS )z]ComponentsTests.test_unregisterSubscriptionAdapter_neither_factory_nor_required.<locals>.IFooNr:   r   r   r   r   r=   È  s   r=   rå   r&  r°   r   r   r   Ú?test_unregisterSubscriptionAdapter_neither_factory_nor_requiredÆ  s    
  ÿzOComponentsTests.test_unregisterSubscriptionAdapter_neither_factory_nor_requiredc           
   	   C   sˆ   ddl m} G dd„ d|ƒ}|dƒ}|dƒ}G dd„ dtƒ}|  ¡ }|  ¡ \}}|� | ||f|¡}	W 5 Q R X |  |	¡ |  |¡ d S )Nr   rT   c                   @   s   e Zd ZdS )zEComponentsTests.test_unregisterSubscriptionAdapter_miss.<locals>.IFooNr:   r   r   r   r   r=   Ñ  s   r=   rŒ   c                   @   s   e Zd ZdS )zIComponentsTests.test_unregisterSubscriptionAdapter_miss.<locals>._FactoryNr:   r   r   r   r   rÍ   Õ  s   rÍ   )rB   r9   rC   r   r   r'  r’   rç   r   r   r   Ú'test_unregisterSubscriptionAdapter_missÏ  s    
z7ComponentsTests.test_unregisterSubscriptionAdapter_missc              	   C   sx  ddl m} ddlm} ddlm} G dd„ d|ƒ}|dƒ}|dƒ}G dd	„ d	tƒ}|  ¡ }| ||f|¡ |  	¡ \}	}
|	� | 
d |f|¡}W 5 Q R X |  |¡ |  |jj¡ |  |j¡ |  t|
ƒd
¡ |
d \}}|\}|  |i ¡ |  t||ƒ¡ |  t|j|ƒ¡ |  |jj|k¡ |  |jj|k¡ |  |jj|f¡ |  |jjd¡ |  |jjd¡ |  |jjd k¡ d S )Nr   rT   rv   r  c                   @   s   e Zd ZdS )zOComponentsTests.test_unregisterSubscriptionAdapter_hit_wo_factory.<locals>.IFooNr:   r   r   r   r   r=   ã  s   r=   rŒ   c                   @   s   e Zd ZdS )zSComponentsTests.test_unregisterSubscriptionAdapter_hit_wo_factory.<locals>._FactoryNr:   r   r   r   r   rÍ   ç  s   rÍ   rZ   rY   ©rB   r9   r[   rw   r\   r  rC   r   r  r   r'  r%   r’   r'   r^   r+   r"   r_   r&   r   r`   rË   r   r@   rM   ©r
   r9   rw   r  r=   rE   rÅ   rÍ   r-   r   r   r“   r   r   rb   r   r   r   Ú1test_unregisterSubscriptionAdapter_hit_wo_factoryß  s6    
zAComponentsTests.test_unregisterSubscriptionAdapter_hit_wo_factoryc              	   C   sx  ddl m} ddlm} ddlm} G dd„ d|ƒ}|dƒ}|dƒ}G dd	„ d	tƒ}|  ¡ }| ||f|¡ |  	¡ \}	}
|	� | 
||f|¡}W 5 Q R X |  |¡ |  |jj¡ |  |j¡ |  t|
ƒd
¡ |
d \}}|\}|  |i ¡ |  t||ƒ¡ |  t|j|ƒ¡ |  |jj|k¡ |  |jj|k¡ |  |jj|f¡ |  |jjd¡ |  |jjd¡ |  |jj|k¡ d S )Nr   rT   rv   r  c                   @   s   e Zd ZdS )zNComponentsTests.test_unregisterSubscriptionAdapter_hit_w_factory.<locals>.IFooNr:   r   r   r   r   r=     s   r=   rŒ   c                   @   s   e Zd ZdS )zRComponentsTests.test_unregisterSubscriptionAdapter_hit_w_factory.<locals>._FactoryNr:   r   r   r   r   rÍ     s   rÍ   rZ   rY   r-  r.  r   r   r   Ú0test_unregisterSubscriptionAdapter_hit_w_factoryÿ  s6    
z@ComponentsTests.test_unregisterSubscriptionAdapter_hit_w_factoryc              	   C   sp  ddl m} ddl m} ddlm} ddlm} G dd„ d|ƒ}|dƒ}|dƒ}||ƒG d	d
„ d
tƒƒ}|  ¡ }	|	 	||f|¡ |  
¡ \}
}|
� |	 ||f¡}W 5 Q R X |  |¡ |  t|ƒd¡ |d \}}|\}|  |i ¡ |  t||ƒ¡ |  t|j|ƒ¡ |  |jj|	k¡ |  |jj|k¡ |  |jj|f¡ |  |jjd¡ |  |jjd¡ |  |jj|k¡ d S )Nr   rT   rÑ   rv   r  c                   @   s   e Zd ZdS )zUComponentsTests.test_unregisterSubscriptionAdapter_wo_explicit_provided.<locals>.IFooNr:   r   r   r   r   r=   $  s   r=   rŒ   c                   @   s   e Zd ZdS )zYComponentsTests.test_unregisterSubscriptionAdapter_wo_explicit_provided.<locals>._FactoryNr:   r   r   r   r   rÍ   (  s   rÍ   rZ   rY   )rB   r9   rÒ   r[   rw   r\   r  rC   r   r  r   r'  r%   r"   r_   r&   r   r`   rË   r   r@   rM   )r
   r9   rÒ   rw   r  r=   rE   rÅ   rÍ   r-   r   r   r“   r   r   rb   r   r   r   Ú7test_unregisterSubscriptionAdapter_wo_explicit_provided  s6    
zGComponentsTests.test_unregisterSubscriptionAdapter_wo_explicit_providedc              	      s`  ddl m} ddlm} ddlm} G dd„ d|ƒ}|dƒ}|dƒ‰ G ‡ fdd	„d	tƒ}|  ¡ }| |ˆ f|¡ |  	¡ \}}	|� |j
||d
�}
W 5 Q R X |  |
¡ |  t|	ƒd¡ |	d \}}|\}|  |i ¡ |  t||ƒ¡ |  t|j|ƒ¡ |  |jj|k¡ |  |jj|k¡ |  |jjˆ f¡ |  |jjd¡ |  |jjd¡ |  |jj|k¡ d S )Nr   rT   rv   r  c                   @   s   e Zd ZdS )zUComponentsTests.test_unregisterSubscriptionAdapter_wo_explicit_required.<locals>.IFooNr:   r   r   r   r   r=   C  s   r=   rŒ   c                       s   e Zd Z” fZdS )zYComponentsTests.test_unregisterSubscriptionAdapter_wo_explicit_required.<locals>._FactoryNrÝ   r   rß   r   r   rÍ   G  s   rÍ   rë   rZ   rY   )rB   r9   r[   rw   r\   r  rC   r   r  r   r'  r%   r"   r_   r&   r   r`   rË   r   r@   rM   )r
   r9   rw   r  r=   rE   rÍ   r-   r   r   r“   r   r   rb   r   rß   r   Ú7test_unregisterSubscriptionAdapter_wo_explicit_required?  s2    
zGComponentsTests.test_unregisterSubscriptionAdapter_wo_explicit_requiredc           	      C   s|   ddl m} ddl m} G dd„ d|ƒ}|dƒ}|dƒ}|  ¡ }||ƒG dd„ dtƒƒ}|ƒ }|  t| |f|¡ƒg ¡ d S )	Nr   rT   rÑ   c                   @   s   e Zd ZdS )z4ComponentsTests.test_subscribers_empty.<locals>.IFooNr:   r   r   r   r   r=   `  s   r=   rŒ   c                   @   s   e Zd ZdS )z3ComponentsTests.test_subscribers_empty.<locals>.BarNr:   r   r   r   r   ÚBare  s   r3  )rB   r9   rÒ   r   rC   r"   r‡   Úsubscribers)	r
   r9   rÒ   r=   rE   rÅ   r-   r3  Úbarr   r   r   Útest_subscribers_empty]  s    z&ComponentsTests.test_subscribers_emptyc                    s   ddl m} ddl m} G dd„ d|ƒ}|dƒ}|dƒ‰ G ‡ fdd„dtƒ}G d	d
„ d
|ƒ}|  ¡ }| |ˆ f|¡ | |ˆ f|¡ |ˆ ƒG dd„ dtƒƒ}|ƒ }	| |	f|¡}
dd„ }t|
|d�}
|  t	|
ƒd¡ |  
t|
d |ƒ¡ |  
t|
d |ƒ¡ d S )Nr   rT   rÑ   c                   @   s   e Zd ZdS )z8ComponentsTests.test_subscribers_non_empty.<locals>.IFooNr:   r   r   r   r   r=   n  s   r=   rŒ   c                       s   e Zd Z” fZdd„ ZdS )z<ComponentsTests.test_subscribers_non_empty.<locals>._Factoryc                 S   s
   || _ d S r   )rò   rõ   r   r   r   r    t  s    zEComponentsTests.test_subscribers_non_empty.<locals>._Factory.__init__N)r#   r;   r<   rÞ   r    r   rß   r   r   rÍ   r  s   rÍ   c                   @   s   e Zd ZdS )z<ComponentsTests.test_subscribers_non_empty.<locals>._DerivedNr:   r   r   r   r   Ú_Derivedv  s   r7  c                   @   s   e Zd ZdS )z7ComponentsTests.test_subscribers_non_empty.<locals>.BarNr:   r   r   r   r   r3  {  s   r3  c                 S   s   | j jS r   )r�   r#   ©Úxr   r   r   Ú
_klassname€  s    z>ComponentsTests.test_subscribers_non_empty.<locals>._klassnamerª   rm   rZ   )rB   r9   rÒ   rC   r   r  r4  r¬   r"   r_   r%   r&   )r
   r9   rÒ   r=   rE   rÍ   r7  r-   r3  r5  r4  r:  r   rß   r   Útest_subscribers_non_emptyk  s&    z*ComponentsTests.test_subscribers_non_emptyc                 C   sR   ddl m} G dd„ d|ƒ}|dƒ}d}|  ¡ }dd„ }| jt|j|||d� d S )	Nr   rT   c                   @   s   e Zd ZdS )zBComponentsTests.test_registerHandler_w_nonblank_name.<locals>.IFooNr:   r   r   r   r   r=   Š  s   r=   r%  c                 S   s
   t ƒ ‚d S r   rH   rÉ   r   r   r   rJ   �  s    zFComponentsTests.test_registerHandler_w_nonblank_name.<locals>._factory©rË   r   )rB   r9   r   rO   rP   ÚregisterHandler)r
   r9   r=   rE   r(  r-   rJ   r   r   r   Ú$test_registerHandler_w_nonblank_name‡  s     ÿz4ComponentsTests.test_registerHandler_w_nonblank_namec              	   C   s‚  ddl m} ddlm} ddlm} G dd„ d|ƒ}|dƒ}d}d}d	d
„ }|  ¡ }	|  ¡ \}
}|
� |	j||f|d� W 5 Q R X |	j	j
d | d  | }|  t|ƒd¡ |  |d |k¡ |  |	j|f|||fg¡ |  t|ƒd¡ |d \}}|\}|  |i ¡ |  t||ƒ¡ |  t|j|ƒ¡ |  |jj|	k¡ |  |jj|f¡ |  |jj|¡ |  |jj|k¡ |  |jj|k¡ d S )Nr   rT   rU   ©ÚHandlerRegistrationc                   @   s   e Zd ZdS )zFComponentsTests.test_registerHandler_w_explicit_required.<locals>.IFooNr:   r   r   r   r   r=   š  s   r=   rY   r@   c                 S   s
   t ƒ ‚d S r   rH   rÉ   r   r   r   rJ   Ÿ  s    zJComponentsTests.test_registerHandler_w_explicit_required.<locals>._factoryrA   rZ   )rB   r9   r[   rV   r\   r@  r   r   r=  r'   r^   r"   r_   r%   r,   r&   rC   r   rË   r   r@   rM   )r
   r9   rV   r@  r=   rE   r  rF   rJ   r-   r   r   r­   r   r   rb   r   r   r   Ú(test_registerHandler_w_explicit_required•  s:    ÿz8ComponentsTests.test_registerHandler_w_explicit_requiredc           
   	      sÜ   ddl m} G dd„ d|ƒ}|dƒ‰ d}d}G ‡ fdd„dtƒ}|  ¡ }|  ¡ \}}|� |j||d	d
� W 5 Q R X |jjd ˆ  d  | }	|  t	|	ƒd¡ |  
|	d |k¡ |  |jˆ f|||fg¡ |  t	|ƒd¡ d S )Nr   rT   c                   @   s   e Zd ZdS )zPComponentsTests.test_registerHandler_wo_explicit_required_no_event.<locals>.IFooNr:   r   r   r   r   r=   º  s   r=   r@   rY   c                       s   e Zd Z” fZdS )zTComponentsTests.test_registerHandler_wo_explicit_required_no_event.<locals>._FactoryNrÝ   r   ©rE   r   r   rÍ   ¿  s   rÍ   Fr   rZ   )rB   r9   rC   r   r   r=  r'   r^   r"   r_   r%   r,   )
r
   r9   r=   rF   r  rÍ   r-   r   r   r­   r   rB  r   Ú2test_registerHandler_wo_explicit_required_no_event·  s"    ÿzBComponentsTests.test_registerHandler_wo_explicit_required_no_eventc                 C   s   |   ¡ }|  t| ¡ ƒ¡ d S r   )r   r’   r‡   ÚregisteredHandlersr2   r   r   r   Útest_registeredHandlers_emptyÎ  s    z-ComponentsTests.test_registeredHandlers_emptyc           
      C   sL  ddl m} ddlm} G dd„ d|ƒ}|dƒ}dd„ }dd	„ }|  ¡ }| ||f¡ | ||f¡ d
d„ }t| ¡ |d�}	|  t	|	ƒd¡ |  
t|	d |ƒ¡ |  |	d j|f¡ |  |	d jd¡ |  |	d j|¡ |  |	d jd¡ |  
t|	d |ƒ¡ |  |	d j|f¡ |  |	d jd¡ |  |	d j|¡ |  |	d jd¡ d S )Nr   rT   r?  c                   @   s   e Zd ZdS )z?ComponentsTests.test_registeredHandlers_non_empty.<locals>.IFooNr:   r   r   r   r   r=   Õ  s   r=   c                 S   s
   t ƒ ‚d S r   rH   rÉ   r   r   r   Ú	_factory1Ø  s    zDComponentsTests.test_registeredHandlers_non_empty.<locals>._factory1c                 S   s
   t ƒ ‚d S r   rH   rÉ   r   r   r   Ú	_factory2Ú  s    zDComponentsTests.test_registeredHandlers_non_empty.<locals>._factory2c                 S   s
   | j jjS r   )rM   Ú__code__Úco_namer8  r   r   r   Ú_factory_nameß  s    zHComponentsTests.test_registeredHandlers_non_empty.<locals>._factory_namerª   rm   rY   rZ   )rB   r9   r\   r@  r   r=  r¬   rD  r"   r_   r%   r&   rË   r   rM   r@   )
r
   r9   r@  r=   rE   rF  rG  r-   rJ  r4  r   r   r   Ú!test_registeredHandlers_non_emptyÒ  s,    z1ComponentsTests.test_registeredHandlers_non_emptyc                 C   sJ   ddl m} G dd„ d|ƒ}|dƒ}d}|  ¡ }| jt|j|f|d� d S )Nr   rT   c                   @   s   e Zd ZdS )zDComponentsTests.test_unregisterHandler_w_nonblank_name.<locals>.IFooNr:   r   r   r   r   r=   ñ  s   r=   r%  r<  )rB   r9   r   rO   rP   ÚunregisterHandler)r
   r9   r=   rE   r(  r-   r   r   r   Ú&test_unregisterHandler_w_nonblank_nameî  s    
 ÿz6ComponentsTests.test_unregisterHandler_w_nonblank_namec                 C   s   |   ¡ }|  t|j¡ d S r   )r   rO   rP   rL  r2   r   r   r   Ú3test_unregisterHandler_neither_factory_nor_requiredù  s    zCComponentsTests.test_unregisterHandler_neither_factory_nor_requiredc                 C   sH   ddl m} G dd„ d|ƒ}|dƒ}|  ¡ }|j|fd�}|  |¡ d S )Nr   rT   c                   @   s   e Zd ZdS )z9ComponentsTests.test_unregisterHandler_miss.<locals>.IFooNr:   r   r   r   r   r=   ÿ  s   r=   ©rË   )rB   r9   r   rL  r’   )r
   r9   r=   rE   r-   r“   r   r   r   Útest_unregisterHandler_missý  s    z+ComponentsTests.test_unregisterHandler_missc              	   C   s0  ddl m} ddlm} ddlm} G dd„ d|ƒ}|dƒ}|  ¡ }dd„ }|  ¡ }| ||f¡ |  ¡ \}}	|� | 	||f¡}
W 5 Q R X |  
|
¡ |  t|	ƒd	¡ |	d \}}|\}|  |i ¡ |  
t||ƒ¡ |  
t|j|ƒ¡ |  
|jj|k¡ |  |jj|f¡ |  |jjd
¡ |  
|jj|k¡ d S )Nr   rT   rv   r?  c                   @   s   e Zd ZdS )zXComponentsTests.test_unregisterHandler_hit_w_factory_and_explicit_provided.<locals>.IFooNr:   r   r   r   r   r=   
  s   r=   c                 S   s
   t ƒ ‚d S r   rH   rÉ   r   r   r   rJ     s    z\ComponentsTests.test_unregisterHandler_hit_w_factory_and_explicit_provided.<locals>._factoryrZ   rY   ©rB   r9   r[   rw   r\   r@  r   r=  r   rL  r%   r"   r_   r&   rC   r   rË   r   rM   ©r
   r9   rw   r@  r=   rE   r-   rJ   r   r   r“   r   r   rb   r   r   r   Ú:test_unregisterHandler_hit_w_factory_and_explicit_provided  s.    
zJComponentsTests.test_unregisterHandler_hit_w_factory_and_explicit_providedc              	   C   s0  ddl m} ddlm} ddlm} G dd„ d|ƒ}|dƒ}|  ¡ }dd„ }|  ¡ }| ||f¡ |  ¡ \}}	|� |j	|fd	�}
W 5 Q R X |  
|
¡ |  t|	ƒd
¡ |	d \}}|\}|  |i ¡ |  
t||ƒ¡ |  
t|j|ƒ¡ |  
|jj|k¡ |  |jj|f¡ |  |jjd¡ |  
|jjd k¡ d S )Nr   rT   rv   r?  c                   @   s   e Zd ZdS )zQComponentsTests.test_unregisterHandler_hit_w_only_explicit_provided.<locals>.IFooNr:   r   r   r   r   r=   %  s   r=   c                 S   s
   t ƒ ‚d S r   rH   rÉ   r   r   r   rJ   )  s    zUComponentsTests.test_unregisterHandler_hit_w_only_explicit_provided.<locals>._factoryrO  rZ   rY   rQ  rR  r   r   r   Ú3test_unregisterHandler_hit_w_only_explicit_provided!  s.    
zCComponentsTests.test_unregisterHandler_hit_w_only_explicit_providedc              	      s<  ddl m} ddlm} ddlm} G dd„ d|ƒ}|dƒ‰ G ‡ fdd„dtƒ}|  ¡ }| |¡ |  	¡ \}}|� | 
|¡}	W 5 Q R X |  |	¡ |  t|ƒd	¡ |d \}
}|
\}|  |i ¡ |  t||ƒ¡ |  t|j|ƒ¡ |  |jj|k¡ |  |jjˆ f¡ |  |jjd
¡ |  |jjd
¡ |  |jj|k¡ d S )Nr   rT   rv   r?  c                   @   s   e Zd ZdS )zIComponentsTests.test_unregisterHandler_wo_explicit_required.<locals>.IFooNr:   r   r   r   r   r=   @  s   r=   c                       s   e Zd Z” fZdS )zMComponentsTests.test_unregisterHandler_wo_explicit_required.<locals>._FactoryNrÝ   r   rB  r   r   rÍ   C  s   rÍ   rZ   rY   )rB   r9   r[   rw   r\   r@  rC   r   r=  r   rL  r%   r"   r_   r&   r   rË   r   r@   rM   )r
   r9   rw   r@  r=   rÍ   r-   r   r   r“   r   r   rb   r   rB  r   Ú+test_unregisterHandler_wo_explicit_required<  s.    

z;ComponentsTests.test_unregisterHandler_wo_explicit_requiredc                 C   sf   ddl m} ddl m} G dd„ d|ƒ}|dƒ}|  ¡ }||ƒG dd„ dtƒƒ}|ƒ }| |f¡ d S )Nr   rT   rÑ   c                   @   s   e Zd ZdS )z/ComponentsTests.test_handle_empty.<locals>.IFooNr:   r   r   r   r   r=   [  s   r=   c                   @   s   e Zd ZdS )z.ComponentsTests.test_handle_empty.<locals>.BarNr:   r   r   r   r   r3  _  s   r3  )rB   r9   rÒ   r   rC   Úhandle)r
   r9   rÒ   r=   rE   r-   r3  r5  r   r   r   Útest_handle_emptyX  s    z!ComponentsTests.test_handle_emptyc           
         s¼   ddl m} ddl m} G dd„ d|ƒ}|dƒ}g ‰ ‡ fdd„}g ‰‡fdd	„}|  ¡ }| ||f¡ | ||f¡ ||ƒG d
d„ dtƒƒ}|ƒ }	| |	¡ |  ˆ |	g¡ |  ˆ|	g¡ d S )Nr   rT   rÑ   c                   @   s   e Zd ZdS )z3ComponentsTests.test_handle_non_empty.<locals>.IFooNr:   r   r   r   r   r=   h  s   r=   c                    s   ˆ   | ¡ d S r   r   rÉ   )Ú	_called_1r   r   Ú
_factory_1l  s    z9ComponentsTests.test_handle_non_empty.<locals>._factory_1c                    s   ˆ   | ¡ d S r   r   rÉ   )Ú	_called_2r   r   Ú
_factory_2o  s    z9ComponentsTests.test_handle_non_empty.<locals>._factory_2c                   @   s   e Zd ZdS )z2ComponentsTests.test_handle_non_empty.<locals>.BarNr:   r   r   r   r   r3  t  s   r3  )rB   r9   rÒ   r   r=  rC   rV  r"   )
r
   r9   rÒ   r=   rE   rY  r[  r-   r3  r5  r   )rX  rZ  r   Útest_handle_non_emptye  s"    
z%ComponentsTests.test_handle_non_emptyN)r   )nr#   r;   r<   r   r   r   r.   r0   r3   r6   rG   rS   rc   rf   rg   rj   rl   ro   ru   rx   rz   r{   r‰   rŽ   r�   r‘   r”   r•   r–   r™   rš   rœ   r�   rŸ   r¡   r¢   r£   r¤   r®   r±   rµ   r·   r»   r¼   r¾   rÀ   rÂ   rÃ   rÆ   rÌ   rÐ   rÓ   rÖ   r×   rØ   rÛ   rÜ   rà   rá   rä   ræ   rè   ré   rê   rì   rî   rï   ró   rô   rù   rû   rü   r  r  r  r  r  r  r  r  r  r  r  r  r!  r#  r$  r)  r*  r+  r,  r/  r0  r1  r2  r6  r;  r>  rA  rC  rE  rK  rM  rN  rP  rS  rT  rU  rW  r\  r   r   r   r   r      sÖ   
  )"#	
	
#'#*$	  "	#$'%!	   "	r   c                       s   e Zd Z‡ fdd„Z‡  ZS )ÚUnhashableComponentsTestsc                    s    G dd„ dt t| ƒ ¡ tƒ}|S )Nc                   @   s   e Zd ZdS )z=UnhashableComponentsTests._getTargetClass.<locals>.ComponentsNr:   r   r   r   r   r   ‚  s   r   )r}   r]  r   r~   )r
   r   r…   r   r   r     s    z)UnhashableComponentsTests._getTargetClass)r#   r;   r<   r   rƒ   r   r   r…   r   r]  }  s   r]  c                   @   sÞ   e Zd Zdd„ Zd6dd„Zdd„ Zdd	„ Zd
d„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Zd2d3„ Zd4d5„ ZdS )7ÚUtilityRegistrationTestsc                 C   s   ddl m} |S )Nr   rW   )r\   rX   )r
   rX   r   r   r   r   Œ  s    z(UtilityRegistrationTests._getTargetClassNc                 C   sb   ddl m} G dd„ d|ƒ}|dƒ}G dd„ dtƒ}|ƒ }d}d}	|  ¡ }
|
|||||	|ƒ||fS )	Nr   rT   c                   @   s   e Zd ZdS )z/UtilityRegistrationTests._makeOne.<locals>.IFooNr:   r   r   r   r   r=   “  s   r=   c                   @   s   e Zd Zdd„ ZdS )z4UtilityRegistrationTests._makeOne.<locals>._Registryc                 S   s   dS ©NZ	_REGISTRYr   r	   r   r   r   Ú__repr__—  s    z=UtilityRegistrationTests._makeOne.<locals>._Registry.__repr__N©r#   r;   r<   r`  r   r   r   r   Ú	_Registry–  s   rb  r   Ú	DOCSTRING©rB   r9   rC   r   )r
   rL   rM   r9   r=   rE   rb  r   r   ÚdocÚklassr   r   r   r   �  s    þz!UtilityRegistrationTests._makeOnec                 C   s*   ddl m} ddlm} |||  ¡ ƒ d S )Nr   ©ÚverifyClass©ÚIUtilityRegistration)Úzope.interface.verifyrh  r[   rj  r   )r
   rh  rj  r   r   r   Ú+test_class_conforms_to_IUtilityRegistration¢  s    zDUtilityRegistrationTests.test_class_conforms_to_IUtilityRegistrationc                 C   s4   ddl m} ddlm} |  ¡ \}}}|||ƒ d S )Nr   ©ÚverifyObjectri  )rk  rn  r[   rj  r   )r
   rn  rj  ÚurÚ_r   r   r   Ú.test_instance_conforms_to_IUtilityRegistration§  s    zGUtilityRegistrationTests.test_instance_conforms_to_IUtilityRegistrationc                 C   s>   G dd„ dt ƒ}|ƒ }|  |¡\}}}|  t|ƒd| ¡ d S )Nc                   @   s   e Zd ZdZ dS )z:UtilityRegistrationTests.test___repr__.<locals>._ComponentÚTESTNr:   r   r   r   r   Ú
_Component®  s   rs  zAUtilityRegistration(_REGISTRY, IFoo, %r, TEST, None, 'DOCSTRING')©rC   r   r"   r1   ©r
   rs  Ú
_componentro  Ú	_registryra   r   r   r   r3   ­  s    
ÿÿz&UtilityRegistrationTests.test___repr__c                 C   sF   G dd„ dt ƒ}|ƒ }|  |¡\}}}t ƒ |_|  t|ƒd| ¡ d S )Nc                   @   s   e Zd Zdd„ ZdS )zKUtilityRegistrationTests.test___repr___provided_wo_name.<locals>._Componentc                 S   s   dS ©Nrr  r   r	   r   r   r   r`  ¸  s    zTUtilityRegistrationTests.test___repr___provided_wo_name.<locals>._Component.__repr__Nra  r   r   r   r   rs  ·  s   rs  úAUtilityRegistration(_REGISTRY, None, %r, TEST, None, 'DOCSTRING')©rC   r   r`   r"   r1   ru  r   r   r   Útest___repr___provided_wo_name¶  s    
ÿÿz7UtilityRegistrationTests.test___repr___provided_wo_namec                 C   sF   G dd„ dt ƒ}|ƒ }|  |¡\}}}t ƒ |_|  t|ƒd| ¡ d S )Nc                   @   s   e Zd Zdd„ ZdS )zLUtilityRegistrationTests.test___repr___component_wo_name.<locals>._Componentc                 S   s   dS rx  r   r	   r   r   r   r`  Ã  s    zUUtilityRegistrationTests.test___repr___component_wo_name.<locals>._Component.__repr__Nra  r   r   r   r   rs  Â  s   rs  ry  rz  ru  r   r   r   Útest___repr___component_wo_nameÁ  s    
ÿÿz8UtilityRegistrationTests.test___repr___component_wo_namec                 C   s.   t ƒ }|  |¡\}}}|  | ¡ t|ƒ¡ d S r   ©rC   r   r"   Ú__hash__Úid©r
   rv  ro  rw  ra   r   r   r   Útest___hash__Ì  s    z&UtilityRegistrationTests.test___hash__c                 C   s(   t ƒ }|  |¡\}}}|  ||k¡ d S r   ©rC   r   r%   r€  r   r   r   Útest___eq___identityÑ  s    z-UtilityRegistrationTests.test___eq___identityc                 C   s8   t ƒ }|  |¡\}}}|  |¡\}}}|  ||k¡ d S r   r‚  ©r
   rv  ro  rw  ra   Úur2rp  r   r   r   Útest___eq___hitÖ  s    z(UtilityRegistrationTests.test___eq___hitc                 C   s>   t ƒ }t ƒ }|  |¡\}}}|  |¡\}}}|  ||k¡ d S r   ©rC   r   r’   ©r
   rv  Ú_component2ro  rw  ra   r…  rp  r   r   r   Útest___eq___missÜ  s
    z)UtilityRegistrationTests.test___eq___missc                 C   s(   t ƒ }|  |¡\}}}|  ||k¡ d S r   r‡  r€  r   r   r   Útest___ne___identityã  s    z-UtilityRegistrationTests.test___ne___identityc                 C   s8   t ƒ }|  |¡\}}}|  |¡\}}}|  ||k¡ d S r   r‡  r„  r   r   r   Útest___ne___hitè  s    z(UtilityRegistrationTests.test___ne___hitc                 C   s>   t ƒ }t ƒ }|  |¡\}}}|  |¡\}}}|  ||k¡ d S r   r‚  rˆ  r   r   r   Útest___ne___missî  s
    z)UtilityRegistrationTests.test___ne___missc                 C   s(   t ƒ }|  |¡\}}}|  ||k ¡ d S r   r‡  r€  r   r   r   Útest___lt___identityõ  s    z-UtilityRegistrationTests.test___lt___identityc                 C   s8   t ƒ }|  |¡\}}}|  |¡\}}}|  ||k ¡ d S r   r‡  r„  r   r   r   Útest___lt___hitú  s    z(UtilityRegistrationTests.test___lt___hitc                 C   sH   t ƒ }t ƒ }|  |¡\}}}|  |¡\}}}|d |_|  ||k ¡ d S ©NÚ2©rC   r   r   r%   rˆ  r   r   r   Útest___lt___miss 	  s    
z)UtilityRegistrationTests.test___lt___missc                 C   s(   t ƒ }|  |¡\}}}|  ||k¡ d S r   r‚  r€  r   r   r   Útest___le___identity	  s    z-UtilityRegistrationTests.test___le___identityc                 C   s8   t ƒ }|  |¡\}}}|  |¡\}}}|  ||k¡ d S r   r‚  r„  r   r   r   Útest___le___hit	  s    z(UtilityRegistrationTests.test___le___hitc                 C   sH   t ƒ }t ƒ }|  |¡\}}}|  |¡\}}}|d |_|  ||k¡ d S r�  r’  rˆ  r   r   r   Útest___le___miss	  s    
z)UtilityRegistrationTests.test___le___missc                 C   s(   t ƒ }|  |¡\}}}|  ||k¡ d S r   r‡  r€  r   r   r   Útest___gt___identity	  s    z-UtilityRegistrationTests.test___gt___identityc                 C   sH   t ƒ }t ƒ }|  |¡\}}}|  |¡\}}}|d |_|  ||k¡ d S r�  r’  rˆ  r   r   r   Útest___gt___hit 	  s    
z(UtilityRegistrationTests.test___gt___hitc                 C   s8   t ƒ }|  |¡\}}}|  |¡\}}}|  ||k¡ d S r   r‡  r„  r   r   r   Útest___gt___miss(	  s    z)UtilityRegistrationTests.test___gt___missc                 C   s(   t ƒ }|  |¡\}}}|  ||k¡ d S r   r‚  r€  r   r   r   Útest___ge___identity.	  s    z-UtilityRegistrationTests.test___ge___identityc                 C   sH   t ƒ }t ƒ }|  |¡\}}}|  |¡\}}}|d |_|  ||k¡ d S r�  ©rC   r   r   r’   rˆ  r   r   r   Útest___ge___miss3	  s    
z)UtilityRegistrationTests.test___ge___missc                 C   sB   t ƒ }|  |¡\}}}|  |¡\}}}|d |_|  ||k¡ d S r�  r’  r„  r   r   r   Útest___ge___hit;	  s
    
z(UtilityRegistrationTests.test___ge___hit)NN)r#   r;   r<   r   r   rl  rq  r3   r{  r|  r�  rƒ  r†  rŠ  r‹  rŒ  r�  rŽ  r�  r“  r”  r•  r–  r—  r˜  r™  rš  rœ  r�  r   r   r   r   r^  Š  s4   
	r^  c                   @   sî   e Zd Zdd„ Zd:dd„Zdd„ Zdd	„ Zd
d„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Zd2d3„ Zd4d5„ Zd6d7„ Zd8d9„ ZdS );ÚAdapterRegistrationTestsc                 C   s   ddl m} |S )Nr   rÇ   )r\   rÈ   )r
   rÈ   r   r   r   r   E	  s    z(AdapterRegistrationTests._getTargetClassNc                 C   sl   ddl m} G dd„ d|ƒ}|dƒ}|dƒ}G dd„ dtƒ}|ƒ }d}d	}	|  ¡ }
|
||f||||	ƒ||fS )
Nr   rT   c                   @   s   e Zd ZdS )z/AdapterRegistrationTests._makeOne.<locals>.IFooNr:   r   r   r   r   r=   L	  s   r=   rŒ   c                   @   s   e Zd Zdd„ ZdS )z4AdapterRegistrationTests._makeOne.<locals>._Registryc                 S   s   dS r_  r   r	   r   r   r   r`  Q	  s    z=AdapterRegistrationTests._makeOne.<locals>._Registry.__repr__Nra  r   r   r   r   rb  P	  s   rb  r   rc  rd  ©r
   rL   r9   r=   rE   rÅ   rb  r   r   re  rf  r   r   r   r   I	  s    þz!AdapterRegistrationTests._makeOnec                 C   s*   ddl m} ddlm} |||  ¡ ƒ d S )Nr   rg  ©ÚIAdapterRegistration)rk  rh  r[   r¡  r   )r
   rh  r¡  r   r   r   Ú+test_class_conforms_to_IAdapterRegistration\	  s    zDAdapterRegistrationTests.test_class_conforms_to_IAdapterRegistrationc                 C   s4   ddl m} ddlm} |  ¡ \}}}|||ƒ d S )Nr   rm  r   )rk  rn  r[   r¡  r   )r
   rn  r¡  Úarrp  r   r   r   Ú.test_instance_conforms_to_IAdapterRegistrationa	  s    zGAdapterRegistrationTests.test_instance_conforms_to_IAdapterRegistrationc                 C   s>   G dd„ dt ƒ}|ƒ }|  |¡\}}}|  t|ƒd| ¡ d S )Nc                   @   s   e Zd ZdZ dS )z:AdapterRegistrationTests.test___repr__.<locals>._Componentrr  Nr:   r   r   r   r   rs  h	  s   rs  zCAdapterRegistration(_REGISTRY, [IBar], IFoo, %r, TEST, 'DOCSTRING')rt  ©r
   rs  rv  r£  rw  ra   r   r   r   r3   g	  s    
ÿÿz&AdapterRegistrationTests.test___repr__c                 C   sF   G dd„ dt ƒ}|ƒ }|  |¡\}}}t ƒ |_|  t|ƒd| ¡ d S )Nc                   @   s   e Zd Zdd„ ZdS )zKAdapterRegistrationTests.test___repr___provided_wo_name.<locals>._Componentc                 S   s   dS rx  r   r	   r   r   r   r`  r	  s    zTAdapterRegistrationTests.test___repr___provided_wo_name.<locals>._Component.__repr__Nra  r   r   r   r   rs  q	  s   rs  úCAdapterRegistration(_REGISTRY, [IBar], None, %r, TEST, 'DOCSTRING')rz  r¥  r   r   r   r{  p	  s    
ÿÿz7AdapterRegistrationTests.test___repr___provided_wo_namec                 C   sF   G dd„ dt ƒ}|ƒ }|  |¡\}}}t ƒ |_|  t|ƒd| ¡ d S )Nc                   @   s   e Zd Zdd„ ZdS )zLAdapterRegistrationTests.test___repr___component_wo_name.<locals>._Componentc                 S   s   dS rx  r   r	   r   r   r   r`  }	  s    zUAdapterRegistrationTests.test___repr___component_wo_name.<locals>._Component.__repr__Nra  r   r   r   r   rs  |	  s   rs  r¦  rz  r¥  r   r   r   r|  {	  s    
ÿÿz8AdapterRegistrationTests.test___repr___component_wo_namec                 C   s.   t ƒ }|  |¡\}}}|  | ¡ t|ƒ¡ d S r   r}  ©r
   rv  r£  rw  ra   r   r   r   r�  †	  s    z&AdapterRegistrationTests.test___hash__c                 C   s(   t ƒ }|  |¡\}}}|  ||k¡ d S r   r‚  r§  r   r   r   rƒ  ‹	  s    z-AdapterRegistrationTests.test___eq___identityc                 C   s8   t ƒ }|  |¡\}}}|  |¡\}}}|  ||k¡ d S r   r‚  ©r
   rv  r£  rw  ra   Úar2rp  r   r   r   r†  �	  s    z(AdapterRegistrationTests.test___eq___hitc                 C   s>   t ƒ }t ƒ }|  |¡\}}}|  |¡\}}}|  ||k¡ d S r   r‡  ©r
   rv  r‰  r£  rw  ra   r©  rp  r   r   r   rŠ  –	  s
    z)AdapterRegistrationTests.test___eq___missc                 C   s(   t ƒ }|  |¡\}}}|  ||k¡ d S r   r‡  r§  r   r   r   r‹  �	  s    z-AdapterRegistrationTests.test___ne___identityc                 C   s8   t ƒ }|  |¡\}}}|  |¡\}}}|  ||k¡ d S r   r‡  r¨  r   r   r   r�  ¢	  s    z)AdapterRegistrationTests.test___ne___missc                 C   s>   t ƒ }t ƒ }|  |¡\}}}|  |¡\}}}|  ||k¡ d S r   r‚  rª  r   r   r   Útest___ne___hit_component¨	  s
    z2AdapterRegistrationTests.test___ne___hit_componentc           
      C   sb   ddl m} G dd„ d|ƒ}|dƒ}tƒ }|  |¡\}}}|  |¡\}}	}	||_|  ||k¡ d S )Nr   rT   c                   @   s   e Zd ZdS )z?AdapterRegistrationTests.test___ne___hit_provided.<locals>.IFooNr:   r   r   r   r   r=   ±	  s   r=   rý   )rB   r9   rC   r   r`   r%   )
r
   r9   r=   r  rv  r£  rw  ra   r©  rp  r   r   r   Útest___ne___hit_provided¯	  s    z1AdapterRegistrationTests.test___ne___hit_providedc                 C   sj   ddl m} G dd„ d|ƒ}|dƒ}tƒ }tƒ }|  |¡\}}}|  |¡\}	}
}
|f|	_|  ||	k¡ d S )Nr   rT   c                   @   s   e Zd ZdS )z?AdapterRegistrationTests.test___ne___hit_required.<locals>.IFooNr:   r   r   r   r   r=   ¼	  s   r=   rý   )rB   r9   rC   r   rË   r%   )r
   r9   r=   r  rv  r‰  r£  rw  ra   r©  rp  r   r   r   Útest___ne___hit_requiredº	  s    z1AdapterRegistrationTests.test___ne___hit_requiredc                 C   s(   t ƒ }|  |¡\}}}|  ||k ¡ d S r   r‡  r§  r   r   r   rŽ  Æ	  s    z-AdapterRegistrationTests.test___lt___identityc                 C   s8   t ƒ }|  |¡\}}}|  |¡\}}}|  ||k ¡ d S r   r‡  r¨  r   r   r   r�  Ë	  s    z(AdapterRegistrationTests.test___lt___hitc                 C   sH   t ƒ }t ƒ }|  |¡\}}}|  |¡\}}}|d |_|  ||k ¡ d S r�  r’  rª  r   r   r   r“  Ñ	  s    
z)AdapterRegistrationTests.test___lt___missc                 C   s(   t ƒ }|  |¡\}}}|  ||k¡ d S r   r‚  r§  r   r   r   r”  Ù	  s    z-AdapterRegistrationTests.test___le___identityc                 C   s8   t ƒ }|  |¡\}}}|  |¡\}}}|  ||k¡ d S r   r‚  r¨  r   r   r   r•  Þ	  s    z(AdapterRegistrationTests.test___le___hitc                 C   sH   t ƒ }t ƒ }|  |¡\}}}|  |¡\}}}|d |_|  ||k¡ d S r�  r’  rª  r   r   r   r–  ä	  s    
z)AdapterRegistrationTests.test___le___missc                 C   s(   t ƒ }|  |¡\}}}|  ||k¡ d S r   r‡  r§  r   r   r   r—  ì	  s    z-AdapterRegistrationTests.test___gt___identityc                 C   sH   t ƒ }t ƒ }|  |¡\}}}|  |¡\}}}|d |_|  ||k¡ d S r�  r’  rª  r   r   r   r˜  ñ	  s    
z(AdapterRegistrationTests.test___gt___hitc                 C   s8   t ƒ }|  |¡\}}}|  |¡\}}}|  ||k¡ d S r   r‡  r¨  r   r   r   r™  ù	  s    z)AdapterRegistrationTests.test___gt___missc                 C   s(   t ƒ }|  |¡\}}}|  ||k¡ d S r   r‚  r§  r   r   r   rš  ÿ	  s    z-AdapterRegistrationTests.test___ge___identityc                 C   sH   t ƒ }t ƒ }|  |¡\}}}|  |¡\}}}|d |_|  ||k¡ d S r�  r›  rª  r   r   r   rœ  
  s    
z)AdapterRegistrationTests.test___ge___missc                 C   sB   t ƒ }|  |¡\}}}|  |¡\}}}|d |_|  ||k¡ d S r�  r’  r¨  r   r   r   r�  
  s
    
z(AdapterRegistrationTests.test___ge___hit)N)r#   r;   r<   r   r   r¢  r¤  r3   r{  r|  r�  rƒ  r†  rŠ  r‹  r�  r«  r¬  r­  rŽ  r�  r“  r”  r•  r–  r—  r˜  r™  rš  rœ  r�  r   r   r   r   rž  C	  s8   
	rž  c                   @   s.   e Zd Zdd„ Zd
dd„Zdd„ Zdd	„ ZdS )ÚSubscriptionRegistrationTestsc                 C   s   ddl m} |S )Nr   r  )r\   r  )r
   r  r   r   r   r   
  s    z-SubscriptionRegistrationTests._getTargetClassNc                 C   sl   ddl m} G dd„ d|ƒ}|dƒ}|dƒ}G dd„ dtƒ}|ƒ }d}d	}	|  ¡ }
|
||f||||	ƒ||fS )
Nr   rT   c                   @   s   e Zd ZdS )z4SubscriptionRegistrationTests._makeOne.<locals>.IFooNr:   r   r   r   r   r=   
  s   r=   rŒ   c                   @   s   e Zd Zdd„ ZdS )z9SubscriptionRegistrationTests._makeOne.<locals>._Registryc                 S   s   dS r_  r   r	   r   r   r   r`  "
  s    zBSubscriptionRegistrationTests._makeOne.<locals>._Registry.__repr__Nra  r   r   r   r   rb  !
  s   rb  r   rc  rd  rŸ  r   r   r   r   
  s    þz&SubscriptionRegistrationTests._makeOnec                 C   s*   ddl m} ddlm} |||  ¡ ƒ d S )Nr   rg  ©Ú ISubscriptionAdapterRegistration)rk  rh  r[   r°  r   )r
   rh  r°  r   r   r   Ú7test_class_conforms_to_ISubscriptionAdapterRegistration-
  s    zUSubscriptionRegistrationTests.test_class_conforms_to_ISubscriptionAdapterRegistrationc                 C   s4   ddl m} ddlm} |  ¡ \}}}|||ƒ d S )Nr   rm  r¯  )rk  rn  r[   r°  r   )r
   rn  r°  Zsarrp  r   r   r   Ú:test_instance_conforms_to_ISubscriptionAdapterRegistration2
  s    zXSubscriptionRegistrationTests.test_instance_conforms_to_ISubscriptionAdapterRegistration)N)r#   r;   r<   r   r   r±  r²  r   r   r   r   r®  
  s   
r®  c                   @   sF   e Zd Zdd„ Zddd„Zdd„ Zdd	„ Zd
d„ Zdd„ Zdd„ Z	dS )ÚHandlerRegistrationTestsc                 C   s   ddl m} |S )Nr   r?  )r\   r@  )r
   r@  r   r   r   r   ;
  s    z(HandlerRegistrationTests._getTargetClassNc           
      C   sb   ddl m} G dd„ d|ƒ}|dƒ}G dd„ dtƒ}|ƒ }d}d}|  ¡ }	|	||f|||ƒ||fS )	Nr   rT   c                   @   s   e Zd ZdS )z/HandlerRegistrationTests._makeOne.<locals>.IFooNr:   r   r   r   r   r=   B
  s   r=   c                   @   s   e Zd Zdd„ ZdS )z4HandlerRegistrationTests._makeOne.<locals>._Registryc                 S   s   dS r_  r   r	   r   r   r   r`  F
  s    z=HandlerRegistrationTests._makeOne.<locals>._Registry.__repr__Nra  r   r   r   r   rb  E
  s   rb  r   rc  rd  )
r
   rL   r9   r=   rE   rb  r   r   re  rf  r   r   r   r   ?
  s    þz!HandlerRegistrationTests._makeOnec                 C   s*   ddl m} ddlm} |||  ¡ ƒ d S )Nr   rg  ©ÚIHandlerRegistration)rk  rh  r[   rµ  r   )r
   rh  rµ  r   r   r   Ú+test_class_conforms_to_IHandlerRegistrationQ
  s    zDHandlerRegistrationTests.test_class_conforms_to_IHandlerRegistrationc                 C   s4   ddl m} ddlm} |  ¡ \}}}|||ƒ d S )Nr   rm  r´  )rk  rn  r[   rµ  r   )r
   rn  rµ  Úhrrp  r   r   r   Ú.test_instance_conforms_to_IHandlerRegistrationV
  s    zGHandlerRegistrationTests.test_instance_conforms_to_IHandlerRegistrationc                 C   sN   dd„ }|   |¡\}}}|  |j|k¡ |  |j|jk¡ |  |jd k¡ d S )Nc                 S   s
   t ƒ ‚d S r   rH   rÉ   r   r   r   rJ   ]
  s    z:HandlerRegistrationTests.test_properties.<locals>._factory)r   r%   ÚhandlerrM   r`   )r
   rJ   r·  rp  r   r   r   Útest_properties\
  s
    z(HandlerRegistrationTests.test_propertiesc                 C   s:   G dd„ dt ƒ}|  |ƒ ¡\}}}|  t|ƒd| ¡ d S )Nc                   @   s   e Zd ZdZ dS )zGHandlerRegistrationTests.test___repr___factory_w_name.<locals>._Factoryrr  Nr:   r   r   r   r   rÍ   e
  s   rÍ   ú=HandlerRegistration(_REGISTRY, [IFoo], %r, TEST, 'DOCSTRING')rt  ©r
   rÍ   r·  rw  ra   r   r   r   Útest___repr___factory_w_named
  s    
ÿÿz5HandlerRegistrationTests.test___repr___factory_w_namec                 C   s:   G dd„ dt ƒ}|  |ƒ ¡\}}}|  t|ƒd| ¡ d S )Nc                   @   s   e Zd Zdd„ ZdS )zHHandlerRegistrationTests.test___repr___factory_wo_name.<locals>._Factoryc                 S   s   dS rx  r   r	   r   r   r   r`  n
  s    zQHandlerRegistrationTests.test___repr___factory_wo_name.<locals>._Factory.__repr__Nra  r   r   r   r   rÍ   m
  s   rÍ   r»  rt  r¼  r   r   r   Útest___repr___factory_wo_namel
  s    
ÿÿz6HandlerRegistrationTests.test___repr___factory_wo_name)N)
r#   r;   r<   r   r   r¶  r¸  rº  r½  r¾  r   r   r   r   r³  9
  s   
r³  c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚPersistentAdapterRegistryc                 C   sF   | j  ¡ }t|ƒD ]"}|| jks*| d¡r| |¡ q| dd ¡ |S )NÚ_vÚro)Ú__dict__Úcopyr‡   Z
_delegatedÚ
startswithÚpop)r
   ÚstateÚkr   r   r   Ú__getstate__w
  s    
z&PersistentAdapterRegistry.__getstate__c                 C   s6   |  dd¡}| j |¡ |  ¡  || _| j | ¡ d S )Nr$   r   )rÅ  rÂ  ÚupdateZ_createLookupr$   Z	_v_lookupÚchanged)r
   rÆ  Úbasesr   r   r   Ú__setstate__
  s
    z&PersistentAdapterRegistry.__setstate__N)r#   r;   r<   rÈ  rÌ  r   r   r   r   r¿  u
  s   r¿  c                   @   s   e Zd Zdd„ ZdS )ÚPersistentComponentsc                 C   s   t ƒ | _t ƒ | _d S r   )r¿  r'   r(   r	   r   r   r   Ú_init_registriesŠ
  s    z%PersistentComponents._init_registriesN)r#   r;   r<   rÎ  r   r   r   r   rÍ  †
  s   rÍ  c                   @   s   e Zd ZdS )ÚPersistentDictComponentsNr:   r   r   r   r   rÏ  Ž
  s   rÏ  c                   @   s   e Zd Zdd„ ZdS )ÚPersistentComponentsDictc                 C   s   t  | ¡ t | |¡ d S r   )r~   r    rÍ  )r
   r   r   r   r   r    •
  s    
z!PersistentComponentsDict.__init__Nrö   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 )
ÚTestPersistentComponentsc                 C   s   t dƒS )Nr   )rÍ  r	   r   r   r   r   ›
  s    z!TestPersistentComponents._makeOnec                 C   s   d S r   r   ©r
   Zmader   r   r   Ú_check_equality_after_picklež
  s    z5TestPersistentComponents._check_equality_after_picklec                 C   s<   dd l }|  ¡ }| |¡ | | |¡¡}|  |jd¡ d S ©Nr   r   )Úpickler   ÚdumpsÚloadsr"   r#   )r
   rÕ  r-   Úcomp2r   r   r   Útest_pickles_empty¡
  s
    
z+TestPersistentComponents.test_pickles_emptyc                 C   sŽ   dd l }|  ¡ }tƒ }| |t¡ |  || t¡¡ | | |¡¡}|  	|j
d¡ |  | t¡¡ | |t¡ |  || t¡¡ |  |¡ d S rÔ  )rÕ  r   rC   rD   r   ZassertIsrº   r×  rÖ  r"   r#   ZassertIsNotNonerÓ  )r
   rÕ  r-   ZutilityrØ  r   r   r   Ú&test_pickles_with_utility_registration©
  s*    þÿþÿz?TestPersistentComponents.test_pickles_with_utility_registrationN)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 )ÚTestPersistentDictComponentsc                 C   s   t S r   )rÏ  r	   r   r   r   r   Æ
  s    z,TestPersistentDictComponents._getTargetClassc                 C   s   |   ¡ dd�}d|d< |S )Nr   r¥   é*   r«   r   r2   r   r   r   r   É
  s    z%TestPersistentDictComponents._makeOnec                 C   s    |   d|¡ |  |d d¡ d S )Nr«   rÜ  )ZassertInr"   rÒ  r   r   r   rÓ  Î
  s    z9TestPersistentDictComponents._check_equality_after_pickleN)r#   r;   r<   r   r   rÓ  r   r   r   r   rÛ  Ä
  s   rÛ  c                   @   s   e Zd Zdd„ ZdS )ÚTestPersistentComponentsDictc                 C   s   t S r   )rÐ  r	   r   r   r   r   Ô
  s    z,TestPersistentComponentsDict._getTargetClassN)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 )r   c                    s@   ˆ | _ t‡ fdd„|D ƒƒ| _| ¡ D ]\}}tˆ ||ƒ q&d S )Nc                    s   g | ]}|t ˆ |ƒf‘qS r   )Úgetattr)Ú.0r«   ©Úmoduler   r   Ú
<listcomp>Û
  s     z$_Monkey.__init__.<locals>.<listcomp>)rá  r~   Ú
to_restoreÚitemsÚsetattr)r
   rá  r   r«   Úvaluer   rà  r   r    Ù
  s    z_Monkey.__init__c                 C   s   | S r   r   r	   r   r   r   Ú	__enter__ß
  s    z_Monkey.__enter__c                 C   s&   | j  ¡ D ]\}}t| j||ƒ q
d S r   )rã  rä  rå  rá  )r
   Úexc_typeÚexc_valÚexc_tbr«   ræ  r   r   r   Ú__exit__â
  s    z_Monkey.__exit__N)r#   r;   r<   r    rç  rë  r   r   r   r   r   ×
  s   r   )Ú__doc__Zunittestr   r   r!   r   r\   r   ZTestCaser   r]  r^  rž  r®  r³  r¿  rÍ  r~   rÏ  rÐ  rÑ  rÛ  rÝ  rC   r   r   r   r   r   Ú<module>   sH                   v : R%<+