o
    $x`¼ ã                   @   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                       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: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‹„ ZG‡ fdŒd�„ZH‡ fdŽd�„ZId�d‘„ ZJd’d“„ ZKd”d•„ ZLd–d—„ ZMd˜d™„ ZNdšd›„ ZO‡ fdœ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ØdÙ„ ZndÚdÛ„ ZodÜdÝ„ ZpdÞdß„ Zqdèdádâ„Zrdãdä„ Zsdådæ„ Zt‡  ZuS )éÚComponentsTestsc                 C   ó   t S ©Nr   ©Úself© r   úD/usr/lib/python3/dist-packages/zope/interface/tests/test_registry.pyÚ_getTargetClass   ó   zComponentsTests._getTargetClassÚtestc                 O   s   |   ¡ |g|¢R i |¤Ž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                     ó   ˆ   | |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   r2   r0   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   r0   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   r7   r8   r0   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                   @   ó   e Zd ZdS )zFComponentsTests.test_registerUtility_with_component_name.<locals>.IFooN©r&   Ú
__module__Ú__qualname__r   r   r   r   ÚIFooR   ó    rA   Úfooc                   @   r=   )zEComponentsTests.test_registerUtility_with_component_name.<locals>.FooNr>   r   r   r   r   ÚFooV   ó    rD   Úinfo©rF   )Úzope.interface.declarationsr;   r<   Úobjectr   ÚregisterUtilityr%   r,   )	r   r;   r<   rA   ÚifoorD   rC   Ú_infor0   r   r   r   Ú(test_registerUtility_with_component_nameN   s   þz8ComponentsTests.test_registerUtility_with_component_namec                 C   ó.   dd„ }t ƒ }|  ¡ }| jt|j||d� d S )Nc                   S   ó   t ƒ ‚r	   ©ÚNotImplementedErrorr   r   r   r   Ú_factoryc   ó   zQComponentsTests.test_registerUtility_both_factory_and_component.<locals>._factory©Ú	componentÚfactory©rI   r   ÚassertRaisesÚ	TypeErrorrJ   ©r   rR   Ú_to_regr0   r   r   r   Ú/test_registerUtility_both_factory_and_componentb   ó   

ÿ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 d   ƒ n1 sDw   Y  |  
|	jjd | | |u ¡ |  |	j||f ||d f¡ |  |	jjd | d	 |f¡ |  t|ƒd
¡ |d \}}|\}|  |i ¡ |  
t||ƒ¡ |  
t|j|ƒ¡ |  
|jj|	u ¡ |  
|jj|u ¡ |  
|jj|u ¡ |  
|jj|u ¡ |  
|jj|u ¡ |  
|jjd u ¡ d S )Nr   ©r<   ©Ú
Registered©ÚUtilityRegistrationc                   @   r=   )z>ComponentsTests.test_registerUtility_w_component.<locals>.IFooNr>   r   r   r   r   rA   o   rB   rA   rF   r   Ú é   )rH   r<   Úzope.interface.interfacesr`   Úzope.interface.registryrb   rI   r   r!   rJ   r(   r+   Ú	_adaptersr%   r,   Ú_subscribersÚlenr)   r   Úprovidedr   rU   rF   rV   )r   r<   r`   rb   rA   rK   rL   Ú_namer[   r0   r    r   r   r   Úeventr   r   r   Ú test_registerUtility_w_componentj   s<   ÿÿz0ComponentsTests.test_registerUtility_w_componentc                    sb  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 d   ƒ n1 sLw   Y  |  
t|ƒd¡ |d \}}|\}|  
|i ¡ |  t||ƒ¡ |  t|j|ƒ¡ |  |jj|	u ¡ |  |jj|u ¡ |  |jj|u ¡ |  |jjˆ u ¡ |  |jj|u ¡ |  |jj|u ¡ d S )Nr   r^   r_   ra   c                   @   r=   )z<ComponentsTests.test_registerUtility_w_factory.<locals>.IFooNr>   r   r   r   r   rA   �   rB   rA   rF   r   c                      ó   ˆ S r	   r   r   ©r[   r   r   rR   •   r   z@ComponentsTests.test_registerUtility_w_factory.<locals>._factory©rV   rd   )rH   r<   re   r`   rf   rb   rI   r   r!   rJ   r%   ri   r(   r)   r   rj   r   rU   rF   rV   )r   r<   r`   rb   rA   rK   rL   rk   rR   r0   r    r   r   r   rl   r   ro   r   Útest_registerUtility_w_factoryŠ   s4   ÿz.ComponentsTests.test_registerUtility_w_factoryc                 C   s@   G dd„ dt ƒ}d}d}|ƒ }|  ¡ }|  t|j|d ||¡ d S )Nc                   @   r=   )zGComponentsTests.test_registerUtility_no_provided_available.<locals>.FooNr>   r   r   r   r   rD   ©   rB   rD   rF   r   rW   )r   rD   rL   rk   r[   r0   r   r   r   Ú*test_registerUtility_no_provided_available¨   s   ÿz:ComponentsTests.test_registerUtility_no_provided_availablec                 C   sx  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 d   ƒ n1 sWw   Y  |  t|ƒd¡ |d \}}|\}|  |i ¡ |  t||ƒ¡ |  t|j|ƒ¡ |  |jj|u ¡ |  |jj|u ¡ |  |jj|	u ¡ |  |jj|
u ¡ |  |jj|u ¡ |  |jjd u ¡ d S )Nr   ©ÚdirectlyProvidesr^   r_   ra   c                   @   r=   )z>ComponentsTests.test_registerUtility_wo_provided.<locals>.IFooNr>   r   r   r   r   rA   ¹   rB   rA   c                   @   r=   )z=ComponentsTests.test_registerUtility_wo_provided.<locals>.FooNr>   r   r   r   r   rD   »   rB   rD   rF   r   rd   )rH   rt   r<   re   r`   rf   rb   rI   r   r!   rJ   r%   ri   r(   r)   r   rj   r   rU   rF   rV   )r   rt   r<   r`   rb   rA   rD   rK   rL   rk   r[   r0   r    r   r   r   rl   r   r   r   Ú test_registerUtility_wo_provided³   s8   
ÿz0ComponentsTests.test_registerUtility_wo_providedc           
      C   sž   ddl m} G dd„ d|ƒ}|dƒ}d}d}tƒ }|  ¡ }| ||||¡ |  ¡ \}}	|� | ||||¡ W d   ƒ n1 s@w   Y  |  t|	ƒd¡ d S )Nr   r^   c                   @   r=   )zJComponentsTests.test_registerUtility_duplicates_existing_reg.<locals>.IFooNr>   r   r   r   r   rA   Ö   rB   rA   rF   r   )rH   r<   rI   r   rJ   r!   r%   ri   ©
r   r<   rA   rK   rL   rk   r[   r0   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 d   ƒ n1 sBw   Y  |  t|
ƒd¡ |  |j||f ||d f¡ |  |j	j
d | d	 |f¡ d S )
Nr   r^   c                   @   r=   )zCComponentsTests.test_registerUtility_w_different_info.<locals>.IFooNr>   r   r   r   r   rA   æ   rB   rA   Úinfo1Úinfo2r   é   rc   ©rH   r<   rI   r   rJ   r!   r%   ri   r,   r+   rh   )r   r<   rA   rK   Ú_info1Ú_info2rk   r[   r0   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 d   ƒ n1 sEw   Y  |  t|ƒd¡ |  |	j||f ||d f¡ |  |	j||f ||d f¡ |  |	j	j
d | d	 ||f¡ d S )
Nr   r^   c                   @   r=   )zSComponentsTests.test_registerUtility_w_different_names_same_component.<locals>.IFooNr>   r   r   r   r   rA   û   rB   rA   rF   Úname1Úname2rd   rc   r{   ©r   r<   rA   rK   rL   Ú_name1Ú_name2Ú
_other_regr[   r0   r    r   r   r   r   Ú5test_registerUtility_w_different_names_same_componentø   s0   ÿÿÿÿ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 d   ƒ n1 sVw   Y  |  t|ƒd
¡ |d \}}|\}|  |i ¡ |  t||ƒ¡ |  t|j|ƒ¡ |  |jj|u ¡ |  |jj|u ¡ |  |jj|u ¡ |  |jj|	u ¡ |  |jj|u ¡ |  |jjd u ¡ |d \}}|\}|  |i ¡ |  t||ƒ¡ |  t|j|ƒ¡ |  |jj|u ¡ |  |jj|u ¡ |  |jj|u ¡ |  |jj|
u ¡ |  |jj|u ¡ |  |jjd u ¡ d S )Nr   r^   ©ÚUnregisteredr_   ra   c                   @   r=   )zHComponentsTests.test_registerUtility_replaces_existing_reg.<locals>.IFooNr>   r   r   r   r   rA     rB   rA   rF   r   rz   rd   )rH   r<   re   r‡   r`   rf   rb   rI   r   rJ   r!   r%   ri   r(   r)   r   rj   r   rU   rF   rV   )r   r<   r‡   r`   rb   rA   rK   rL   rk   Ú_beforeÚ_afterr0   r    r   r   r   rl   r   r   r   Ú*test_registerUtility_replaces_existing_reg  sL   ÿz:ComponentsTests.test_registerUtility_replaces_existing_regc                 C   s°   ddl m} G dd„ d|ƒ}|dƒ}d}d}d}tƒ }|  ¡ }| ||||¡ |  ¡ \}	}
|	� | ||||¡ W d   ƒ n1 sBw   Y  |  |jjd | d |f¡ d S )	Nr   r^   c                   @   r=   )zDComponentsTests.test_registerUtility_w_existing_subscr.<locals>.IFooNr>   r   r   r   r   rA   <  rB   rA   rF   r   r€   rc   )	rH   r<   rI   r   rJ   r!   r%   r+   rh   ©r   r<   rA   rK   rL   r‚   rƒ   r[   r0   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 d   ƒ n1 s9w   Y  |  t|	ƒd¡ d S )Nr   r^   c                   @   r=   )z;ComponentsTests.test_registerUtility_wo_event.<locals>.IFooNr>   r   r   r   r   rA   M  rB   rA   rF   r   F)rH   r<   rI   r   r!   rJ   r%   ri   rv   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                       ó"   e Zd ZdZ‡‡ fdd„Z‡  ZS )zdComponentsTests.test_registerUtility_changes_object_identity_after.<locals>.CompThatChangesAfter1Regr   c                    s<   |  j d7  _ tˆ | ƒj|Ž  | j dkrt| jƒ| _d S d S )Nrd   )Ú	reg_countÚsuperrJ   Údictr,   ©r   r   )ÚCompThatChangesAfter1RegÚ	__class__r   r   rJ   ^  s
   
ÿztComponentsTests.test_registerUtility_changes_object_identity_after.<locals>.CompThatChangesAfter1Reg.registerUtility©r&   r?   r@   r�   rJ   Ú__classcell__r   ©r“   ©r”   r   r“   \  ó    r“   rd   c                   @   r=   )zPComponentsTests.test_registerUtility_changes_object_identity_after.<locals>.IFooNr>   r   r   r   r   rA   i  rB   rA   rz   ©r   rJ   rI   r   r%   ri   ÚlistÚregisteredUtilities)r   r0   rA   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                       rŽ   )zeComponentsTests.test_registerUtility_changes_object_identity_before.<locals>.CompThatChangesAfter2Regr   c                    s8   |  j d7  _ | j dkrt| jƒ| _tˆ | ƒj|Ž  d S )Nrd   rz   )r�   r‘   r,   r�   rJ   r’   )ÚCompThatChangesAfter2Regr”   r   r   rJ   t  s   
zuComponentsTests.test_registerUtility_changes_object_identity_before.<locals>.CompThatChangesAfter2Reg.registerUtilityr•   r   ©rž   r˜   r   rž   r  r™   rž   rd   c                   @   r=   )zQComponentsTests.test_registerUtility_changes_object_identity_before.<locals>.IFooNr>   r   r   r   r   rA   €  rB   rA   rz   c                   @   r=   )zQComponentsTests.test_registerUtility_changes_object_identity_before.<locals>.IBarNr>   r   r   r   r   ÚIBar‡  rB   r    é   rš   )r   r0   rA   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)rU   rj   rV   )r   rX   rY   ÚunregisterUtilityr5   r   r   r   ÚAtest_unregisterUtility_neither_factory_nor_component_nor_providedŽ  s   

ÿzQComponentsTests.test_unregisterUtility_neither_factory_nor_component_nor_providedc                 C   rN   )Nc                   S   rO   r	   rP   r   r   r   r   rR   ”  rS   zSComponentsTests.test_unregisterUtility_both_factory_and_component.<locals>._factoryrT   )rI   r   rX   rY   r£   rZ   r   r   r   Ú1test_unregisterUtility_both_factory_and_component“  r]   zAComponentsTests.test_unregisterUtility_both_factory_and_componentc           
      C   sŒ   ddl m} G dd„ d|ƒ}|dƒ}d}tƒ }|  ¡ }|  ¡ \}}|� | |||¡}	W d   ƒ n1 s5w   Y  |  |	¡ |  |¡ d S )Nr   r^   c                   @   r=   )zEComponentsTests.test_unregisterUtility_w_component_miss.<locals>.IFooNr>   r   r   r   r   rA   ž  rB   rA   r   )rH   r<   rI   r   r!   r£   ÚassertFalse)
r   r<   rA   rK   rk   r[   r0   r    r   Úunregr   r   r   Ú'test_unregisterUtility_w_component_miss›  s   ÿ
z7ComponentsTests.test_unregisterUtility_w_component_missc                 C   s‚  ddl m} ddlm} ddlm} G dd„ d|ƒ}|dƒ}d}tƒ }|  ¡ }| |||¡ |  	¡ \}	}
|	� | 
|||¡}W d   ƒ n1 sHw   Y  |  |¡ |  |jj¡ |  ||f|jv ¡ |  |jj¡ |  t|
ƒd¡ |
d \}}|\}|  |i ¡ |  t||ƒ¡ |  t|j|ƒ¡ |  |jj|u ¡ |  |jj|u ¡ |  |jj|u ¡ |  |jj|u ¡ |  |jjd u ¡ d S )	Nr   r^   r†   ra   c                   @   r=   )z@ComponentsTests.test_unregisterUtility_w_component.<locals>.IFooNr>   r   r   r   r   rA   ¯  rB   rA   r   rd   )rH   r<   re   r‡   rf   rb   rI   r   rJ   r!   r£   r(   r¦   r+   rg   r,   rh   r%   ri   r)   r   rj   r   rU   rV   )r   r<   r‡   rb   rA   rK   rk   r[   r0   r    r   r§   r   r   rl   r   r   r   Ú"test_unregisterUtility_w_componentª  s8   ÿ
z2ComponentsTests.test_unregisterUtility_w_componentc                    sl  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 d   ƒ n1 sUw   Y  |  |¡ |  t|ƒd¡ |d \}}|\}|  |i ¡ |  t||ƒ¡ |  t|j|ƒ¡ |  |jj|	u ¡ |  |jj|u ¡ |  |jj|u ¡ |  |jjˆ u ¡ |  |jj|u ¡ d S )Nr   r^   r†   ra   c                   @   r=   )z>ComponentsTests.test_unregisterUtility_w_factory.<locals>.IFooNr>   r   r   r   r   rA   Î  rB   rA   rF   r   c                      rn   r	   r   r   ro   r   r   rR   Ô  r   zBComponentsTests.test_unregisterUtility_w_factory.<locals>._factoryrp   rd   )rH   r<   re   r‡   rf   rb   rI   r   rJ   r!   r£   r(   r%   ri   r)   r   rj   r   rU   rV   )r   r<   r‡   rb   rA   rK   rL   rk   rR   r0   r    r   r§   r   r   rl   r   ro   r   Ú test_unregisterUtility_w_factoryÉ  s6   ÿ
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 d   ƒ n1 s^w   Y  |  |¡ |  t|ƒd¡ |d \}}|\}|  |i ¡ |  t||ƒ¡ |  t|j|ƒ¡ |  |jj|u ¡ |  |jj|u ¡ |  |jj|	u ¡ |  |jj|
u ¡ |  |jj|u ¡ |  |jjd u ¡ d S )Nr   rs   r^   r†   ra   c                   @   r=   )zIComponentsTests.test_unregisterUtility_wo_explicit_provided.<locals>.IFooNr>   r   r   r   r   rA   î  rB   rA   c                   @   r=   )zHComponentsTests.test_unregisterUtility_wo_explicit_provided.<locals>.FooNr>   r   r   r   r   rD   ð  rB   rD   rF   r   rd   ©rH   rt   r<   re   r‡   rf   rb   rI   r   rJ   r!   r£   r(   r%   ri   r)   r   rj   r   rU   rF   rV   ©r   rt   r<   r‡   rb   rA   rD   rK   rL   rk   r[   r0   r    r   r§   r   r   rl   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 d   ƒ n1 s^w   Y  |  |¡ |  t|ƒd¡ |d \}}|\}|  |i ¡ |  t||ƒ¡ |  t|j|ƒ¡ |  |jj|u ¡ |  |jj|u ¡ |  |jj|	u ¡ |  |jj|
u ¡ |  |jj|u ¡ |  |jjd u ¡ d S )Nr   rs   r^   r†   ra   c                   @   r=   )zLComponentsTests.test_unregisterUtility_wo_component_or_factory.<locals>.IFooNr>   r   r   r   r   rA     rB   rA   c                   @   r=   )zKComponentsTests.test_unregisterUtility_wo_component_or_factory.<locals>.FooNr>   r   r   r   r   rD     rB   rD   rF   r   ©rj   r   rd   r«   r¬   r   r   r   Ú.test_unregisterUtility_wo_component_or_factory
  s<   
þ
z>ComponentsTests.test_unregisterUtility_wo_component_or_factoryc                 C   ó¾   ddl m} G dd„ d|ƒ}|dƒ}d}d}d}tƒ }|  ¡ }| ||||¡ | ||||¡ |  ¡ \}	}
|	� | |||¡ W d   ƒ n1 sIw   Y  |  |jj	d | d |f¡ d S )	Nr   r^   c                   @   r=   )zFComponentsTests.test_unregisterUtility_w_existing_subscr.<locals>.IFooNr>   r   r   r   r   rA   0  rB   rA   rF   r   r€   rc   ©
rH   r<   rI   r   rJ   r!   r£   r%   r+   rh   r‹   r   r   r   Ú(test_unregisterUtility_w_existing_subscr-  ó   ÿ"z8ComponentsTests.test_unregisterUtility_w_existing_subscrc                 C   r°   )	Nr   r^   c                   @   r=   )zSComponentsTests.test_unregisterUtility_w_existing_subscr_non_hashable.<locals>.IFooNr>   r   r   r   r   rA   B  rB   rA   rF   r   r€   rc   )
rH   r<   r‘   r   rJ   r!   r£   r%   r+   rh   r‹   r   r   r   Ú5test_unregisterUtility_w_existing_subscr_non_hashable?  r³   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 d   ƒ n1 sOw   Y  |  	|	j
jd | d	 |f¡ d S )
Nr   r^   )Ú_UtilityRegistrationsc                   @   r=   )z_ComponentsTests.test_unregisterUtility_w_existing_subscr_non_hashable_fresh_cache.<locals>.IFooNr>   r   r   r   r   rA   W  rB   rA   rF   r   r€   rc   )rH   r<   rf   rµ   r‘   r   rJ   r!   r£   r%   r+   rh   )r   r<   rµ   rA   rK   rL   r‚   rƒ   r[   r0   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 d   ƒ n1 sVw   Y  |  dt	|j
jƒ¡ d S )	Nr   r^   c                   @   r=   )z]ComponentsTests.test_unregisterUtility_w_existing_subscr_non_hashable_reinitted.<locals>.IFooNr>   r   r   r   r   rA   l  rB   rA   rF   r   r€   r2   )rH   r<   r‘   r   rJ   Ú__init__r!   r£   r%   ri   r+   rh   r‹   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 d   ƒ n1 sLw   Y  |  |	jj	d | d |f¡ d S )	Nr   r^   c                   @   r=   )zVComponentsTests.test_unregisterUtility_w_existing_subscr_other_component.<locals>.IFooNr>   r   r   r   r   rA   …  rB   rA   rF   r   r€   rc   r±   r�   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 d   ƒ n1 sLw   Y  |  |	j	j
d | d |f¡ d S )	Nr   r^   c                   @   r=   )zaComponentsTests.test_unregisterUtility_w_existing_subscr_other_component_mixed_hash.<locals>.IFooNr>   r   r   r   r   rA   ™  rB   rA   rF   r   r€   rc   )rH   r<   rI   r‘   r   rJ   r!   r£   r%   r+   rh   r�   r   r   r   ÚCtest_unregisterUtility_w_existing_subscr_other_component_mixed_hash–  s$   ÿÿzSComponentsTests.test_unregisterUtility_w_existing_subscr_other_component_mixed_hashc                 C   ó    |   ¡ }|  t| ¡ ƒg ¡ d S r	   )r   r%   r›   rœ   r5   r   r   r   Útest_registeredUtilities_empty¬  ó   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|	u ¡ |  |
d j|u ¡ |  |
d j|u ¡ |  |
d j|u ¡ |  |
d j|u ¡ |  |
d jd u ¡ |  t|
d |ƒ¡ |  |
d j|	u ¡ |  |
d j|u ¡ |  |
d j|u ¡ |  |
d j|u ¡ |  |
d j|u ¡ |  |
d jd u ¡ d S )Nr   r^   ra   c                   @   r=   )z?ComponentsTests.test_registeredUtilities_notempty.<locals>.IFooNr>   r   r   r   r   rA   ´  rB   rA   rF   r   r€   c                 S   ó   | j S r	   ©r   ©Úrr   r   r   Ú<lambda>¾  ó    zCComponentsTests.test_registeredUtilities_notempty.<locals>.<lambda>©Úkeyrz   rd   )rH   r<   rf   rb   rI   r   rJ   Úsortedrœ   r%   ri   r(   r)   r   rj   r   rU   rF   rV   )r   r<   rb   rA   rK   rL   r‚   rƒ   r[   r0   Úregr   r   r   Ú!test_registeredUtilities_notempty°  s6   z1ComponentsTests.test_registeredUtilities_notemptyc                 C   sD   ddl m} G dd„ d|ƒ}|dƒ}|  ¡ }|  | |¡d u ¡ d S )Nr   r^   c                   @   r=   )z?ComponentsTests.test_queryUtility_miss_no_default.<locals>.IFooNr>   r   r   r   r   rA   Ñ  rB   rA   )rH   r<   r   r(   ÚqueryUtility©r   r<   rA   rK   r0   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�|u ¡ d S )Nr   r^   c                   @   r=   )z>ComponentsTests.test_queryUtility_miss_w_default.<locals>.IFooNr>   r   r   r   r   rA   Ù  rB   rA   ©Údefault)rH   r<   r   rI   r(   rÉ   )r   r<   rA   rK   r0   Ú_defaultr   r   r   Ú test_queryUtility_miss_w_default×  s   z0ComponentsTests.test_queryUtility_miss_w_defaultc                 C   óV   ddl m} G dd„ d|ƒ}|dƒ}tƒ }|  ¡ }| ||¡ |  | |¡|u ¡ d S )Nr   r^   c                   @   r=   )z3ComponentsTests.test_queryUtility_hit.<locals>.IFooNr>   r   r   r   r   rA   â  rB   rA   )rH   r<   rI   r   rJ   r(   rÉ   ©r   r<   rA   rK   r[   r0   r   r   r   Útest_queryUtility_hità  ó   z%ComponentsTests.test_queryUtility_hitc                 C   sL   ddl m} ddlm} G dd„ d|ƒ}|dƒ}|  ¡ }|  ||j|¡ d S )Nr   r^   ©ÚComponentLookupErrorc                   @   r=   )z2ComponentsTests.test_getUtility_miss.<locals>.IFooNr>   r   r   r   r   rA   í  rB   rA   )rH   r<   re   rÕ   r   rX   Ú
getUtility)r   r<   rÕ   rA   rK   r0   r   r   r   Útest_getUtility_missê  s   z$ComponentsTests.test_getUtility_missc                 C   rÐ   )Nr   r^   c                   @   r=   )z1ComponentsTests.test_getUtility_hit.<locals>.IFooNr>   r   r   r   r   rA   õ  rB   rA   )rH   r<   rI   r   rJ   r(   rÖ   rÑ   r   r   r   Útest_getUtility_hitó  rÓ   z#ComponentsTests.test_getUtility_hitc                 C   óF   ddl m} G dd„ d|ƒ}|dƒ}|  ¡ }|  t| |¡ƒg ¡ d S )Nr   r^   c                   @   r=   )z7ComponentsTests.test_getUtilitiesFor_miss.<locals>.IFooNr>   r   r   r   r   rA   ÿ  rB   rA   )rH   r<   r   r%   r›   ÚgetUtilitiesForrÊ   r   r   r   Útest_getUtilitiesFor_missý  ó
   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   r^   c                   @   r=   )z6ComponentsTests.test_getUtilitiesFor_hit.<locals>.IFooNr>   r   r   r   r   rA     rB   rA   r   r€   r¿   )rH   r<   rI   r   rJ   r%   rÆ   rÚ   ©r   r<   rA   rK   r‚   rƒ   r[   r0   r   r   r   Útest_getUtilitiesFor_hit  s   ÿz(ComponentsTests.test_getUtilitiesFor_hitc                 C   rÙ   )Nr   r^   c                   @   r=   )zDComponentsTests.test_getAllUtilitiesRegisteredFor_miss.<locals>.IFooNr>   r   r   r   r   rA     rB   rA   )rH   r<   r   r%   r›   ÚgetAllUtilitiesRegisteredForrÊ   r   r   r   Ú&test_getAllUtilitiesRegisteredFor_miss  rÜ   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   r^   c                   @   r=   )zCComponentsTests.test_getAllUtilitiesRegisteredFor_hit.<locals>.IFooNr>   r   r   r   r   rA     rB   rA   r   r€   r¿   )rH   r<   rI   r   rJ   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   r:   c                   @   r=   )zFComponentsTests.test_registerAdapter_with_component_name.<locals>.IFooNr>   r   r   r   r   rA   /  rB   rA   r    rC   c                   @   r=   )zEComponentsTests.test_registerAdapter_with_component_name.<locals>.FooNr>   r   r   r   r   rD   4  rE   rD   rF   rG   )rH   r;   r<   rI   r   ÚregisterAdapterr%   r-   )	r   r;   r<   rA   rK   ÚibarrD   rL   r0   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 d   ƒ n1 sKw   Y  |  	|
j
jd | | | |	u ¡ |  |
j|f||f |	|f¡ |  t|ƒd¡ |d \}}|\}|  |i ¡ |  	t||ƒ¡ |  	t|j|ƒ¡ |  	|jj|
u ¡ |  	|jj|u ¡ |  |jj|f¡ |  	|jj|u ¡ |  	|jj|u ¡ |  	|jj|	u ¡ d S )Nr   r^   r_   ©ÚAdapterRegistrationc                   @   r=   )zSComponentsTests.test_registerAdapter_w_explicit_provided_and_required.<locals>.IFooNr>   r   r   r   r   rA   E  rB   rA   r    rF   r   c                 S   rO   r	   rP   ©Úcontextr   r   r   rR   L  rS   zWComponentsTests.test_registerAdapter_w_explicit_provided_and_required.<locals>._factoryrd   )rH   r<   re   r`   rf   ræ   r   r!   râ   r(   r*   rg   r%   r-   ri   r)   rI   r   rj   Úrequiredr   rF   rV   )r   r<   r`   ræ   rA   rK   rã   rL   rk   rR   r0   r    r   r   r   rl   r   r   r   Ú5test_registerAdapter_w_explicit_provided_and_required@  s@   ÿÿÿzEComponentsTests.test_registerAdapter_w_explicit_provided_and_requiredc                 C   sb   ddl m} G dd„ d|ƒ}|dƒ}d}d}G dd	„ d	tƒ}|  ¡ }| jt|j||f||d
� d S )Nr   r^   c                   @   r=   )zHComponentsTests.test_registerAdapter_no_provided_available.<locals>.IFooNr>   r   r   r   r   rA   f  rB   rA   r    rF   r   c                   @   r=   )zLComponentsTests.test_registerAdapter_no_provided_available.<locals>._FactoryNr>   r   r   r   r   Ú_Factorym  rB   rë   ©r   rF   ©rH   r<   rI   r   rX   rY   râ   )r   r<   rA   rã   rL   rk   rë   r0   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 d   ƒ n1 s\w   Y  |  |jjd | | |	 |u ¡ |  |j|f||	f ||f¡ |  t|ƒd¡ |d \}}|\}|  |i ¡ |  t||ƒ¡ |  t|j|ƒ¡ |  |jj|u ¡ |  |jj|u ¡ |  |jj|f¡ |  |jj|	u ¡ |  |jj|u ¡ |  |jj|u ¡ d S )Nr   r^   ©Úimplementerr_   rå   c                   @   r=   )zGComponentsTests.test_registerAdapter_wo_explicit_provided.<locals>.IFooNr>   r   r   r   r   rA   z  rB   rA   r    rF   r   c                   @   r=   )zKComponentsTests.test_registerAdapter_wo_explicit_provided.<locals>._FactoryNr>   r   r   r   r   rë   ‚  rE   rë   rì   rd   )rH   r<   rð   re   r`   rf   ræ   rI   r   r!   râ   r(   r*   rg   r%   r-   ri   r)   r   rj   ré   r   rF   rV   )r   r<   rð   r`   ræ   rA   rK   rã   rL   rk   r[   rë   r0   r    r   r   r   rl   r   r   r   Ú)test_registerAdapter_wo_explicit_providedt  sF   ÿÿÿ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   r^   c                   @   r=   )zHComponentsTests.test_registerAdapter_no_required_available.<locals>.IFooNr>   r   r   r   r   rA   ž  rB   rA   rF   r   c                   @   r=   )zLComponentsTests.test_registerAdapter_no_required_available.<locals>._FactoryNr>   r   r   r   r   rë   ¤  rB   rë   ©rj   r   rF   rí   ©r   r<   rA   rK   rL   rk   rë   r0   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   r^   c                   @   r=   )zEComponentsTests.test_registerAdapter_w_invalid_required.<locals>.IFooNr>   r   r   r   r   rA   ®  rB   rA   r    rF   r   c                   @   r=   )zIComponentsTests.test_registerAdapter_w_invalid_required.<locals>._FactoryNr>   r   r   r   r   rë   ´  rB   rë   rò   rí   )	r   r<   rA   rK   rã   rL   rk   rë   r0   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 d   ƒ n1 sRw   Y  |  |
jjd | | | |	u ¡ |  |
j|f||f |	|f¡ |  t|ƒd¡ |d \}}|\}|  |i ¡ |  t||ƒ¡ |  t|j|ƒ¡ |  |jj|
u ¡ |  |jj|u ¡ |  |jj|f¡ |  |jj|u ¡ |  |jj|u ¡ |  |jj|	u ¡ d S )Nr   r^   r   r_   rå   c                   @   r=   )zMComponentsTests.test_registerAdapter_w_required_containing_None.<locals>.IFooNr>   r   r   r   r   rA   À  rB   rA   rF   r   c                   @   r=   )zQComponentsTests.test_registerAdapter_w_required_containing_None.<locals>._FactoryNr>   r   r   r   r   rë   Å  rB   rë   rò   rd   )rH   r<   Úzope.interface.interfacer   re   r`   rf   ræ   rI   r   r!   râ   r(   r*   rg   r%   r-   ri   r)   r   rj   ré   r   rF   rV   )r   r<   r   r`   ræ   rA   rK   rL   rk   rë   r0   r    r   r   r   rl   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 d   ƒ n1 slw   Y  |  |jjd | | |
 |u ¡ |  |j|f||
f ||	f¡ |  t|ƒd¡ |d \}}|\}|  |i ¡ |  t||ƒ¡ |  t|j|ƒ¡ |  |jj|u ¡ |  |jj|u ¡ |  |jj|f¡ |  |jj|
u ¡ |  |jj|	u ¡ |  |jj|u ¡ d S )Nr   r^   rï   )ÚimplementedByr_   rå   c                   @   r=   )zNComponentsTests.test_registerAdapter_w_required_containing_class.<locals>.IFooNr>   r   r   r   r   rA   ä  rB   rA   r    rF   r   c                   @   r=   )zRComponentsTests.test_registerAdapter_w_required_containing_class.<locals>._FactoryNr>   r   r   r   r   rë   ê  rB   rë   c                   @   r=   )zRComponentsTests.test_registerAdapter_w_required_containing_class.<locals>._ContextNr>   r   r   r   r   Ú_Contextí  rE   rù   rò   rd   )rH   r<   rð   rø   re   r`   rf   ræ   rI   r   r!   râ   r(   r*   rg   r%   r-   ri   r)   r   rj   ré   r   rF   rV   )r   r<   rð   rø   r`   ræ   rA   rK   rã   rL   rk   rë   rù   Ú	_ctx_implr0   r    r   r   r   rl   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   r^   c                   @   r=   )zMComponentsTests.test_registerAdapter_w_required_containing_junk.<locals>.IFooNr>   r   r   r   r   rA   
  rB   rA   rF   r   c                   @   r=   )zQComponentsTests.test_registerAdapter_w_required_containing_junk.<locals>._FactoryNr>   r   r   r   r   rë     rB   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 d   ƒ n1 sPw   Y  |  
|	jjd ˆ  | | |u ¡ |  |	jˆ f||f ||f¡ |  t|ƒd¡ |d \}}|\}|  |i ¡ |  
t||ƒ¡ |  
t|j|ƒ¡ |  
|jj|	u ¡ |  
|jj|u ¡ |  |jjˆ f¡ |  
|jj|u ¡ |  
|jj|u ¡ |  
|jj|u ¡ d S )Nr   r^   r_   rå   c                   @   r=   )zGComponentsTests.test_registerAdapter_wo_explicit_required.<locals>.IFooNr>   r   r   r   r   rA     rB   rA   r    rF   r   c                       ó   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ë   !  ó    
rë   rò   rd   )rH   r<   re   r`   rf   ræ   rI   r   r!   râ   r(   r*   rg   r%   r-   ri   r)   r   rj   ré   r   rF   rV   )r   r<   r`   ræ   rA   rK   rL   rk   rë   r0   r    r   r   r   rl   r   r   r   Ú)test_registerAdapter_wo_explicit_required  sD   
ÿÿÿÿ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 d   ƒ n1 sAw   Y  |  t|
ƒd¡ d S )Nr   r^   c                   @   r=   )z;ComponentsTests.test_registerAdapter_wo_event.<locals>.IFooNr>   r   r   r   r   rA   =  rB   rA   r    rF   r   c                 S   rO   r	   rP   rç   r   r   r   rR   D  rS   z?ComponentsTests.test_registerAdapter_wo_event.<locals>._factoryF)rl   )rH   r<   r   r!   râ   r%   ri   )r   r<   rA   rK   rã   rL   rk   rR   r0   r    r   r   r   r   Útest_registerAdapter_wo_event:  s   ÿÿz-ComponentsTests.test_registerAdapter_wo_eventc                 C   ó    |   ¡ }| jt|jd d d� d S ©N)rV   rj   )r   rX   rY   ÚunregisterAdapterr5   r   r   r   Ú3test_unregisterAdapter_neither_factory_nor_providedM  ó   

ÿzCComponentsTests.test_unregisterAdapter_neither_factory_nor_providedc                 C   óF   ddl m} G dd„ d|ƒ}|dƒ}|  ¡ }| jt|jd |d d� d S )Nr   r^   c                   @   r=   )zQComponentsTests.test_unregisterAdapter_neither_factory_nor_required.<locals>.IFooNr>   r   r   r   r   rA   T  rB   rA   ©rV   rj   ré   )rH   r<   r   rX   rY   r  rÊ   r   r   r   Ú3test_unregisterAdapter_neither_factory_nor_requiredR  ó   

ÿ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 d   ƒ n1 s=w   Y  |  |	¡ d S )Nr   r^   c                   @   r=   )z9ComponentsTests.test_unregisterAdapter_miss.<locals>.IFooNr>   r   r   r   r   rA   ]  rB   rA   r    c                   @   r=   )z=ComponentsTests.test_unregisterAdapter_miss.<locals>._FactoryNr>   r   r   r   r   rë   a  rB   rë   )rH   r<   rI   r   r!   r  r¦   ©
r   r<   rA   rK   rã   rë   r0   r    r   r§   r   r   r   Útest_unregisterAdapter_miss[  s   ÿz+ComponentsTests.test_unregisterAdapter_missc                 C   óŒ  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 d   ƒ n1 sQw   Y  |  |¡ |  |jj¡ |  |j¡ |  t|
ƒd
¡ |
d \}}|\}|  |i ¡ |  t||ƒ¡ |  t|j|ƒ¡ |  |jj|u ¡ |  |jj|u ¡ |  |jj|f¡ |  |jjd¡ |  |jjd¡ |  |jj|u ¡ d S )Nr   r^   r†   rå   c                   @   r=   )zYComponentsTests.test_unregisterAdapter_hit_w_explicit_provided_and_required.<locals>.IFooNr>   r   r   r   r   rA   n  rB   rA   r    c                   @   r=   )z]ComponentsTests.test_unregisterAdapter_hit_w_explicit_provided_and_required.<locals>._FactoryNr>   r   r   r   r   rë   r  rB   rë   rd   rc   )rH   r<   re   r‡   rf   ræ   rI   r   râ   r!   r  r(   r¦   r*   rg   r-   r%   ri   r)   r   rj   ré   r   rF   rV   )r   r<   r‡   ræ   rA   rK   rã   rë   r0   r    r   r§   r   r   rl   r   r   r   Ú;test_unregisterAdapter_hit_w_explicit_provided_and_requiredj  ó8   ÿ
zKComponentsTests.test_unregisterAdapter_hit_w_explicit_provided_and_requiredc                 C   ó„  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 d   ƒ n1 sZw   Y  |  |¡ |  t|ƒd¡ |d \}}|\}|  |i ¡ |  t||ƒ¡ |  t|j|ƒ¡ |  |jj|	u ¡ |  |jj|u ¡ |  |jj|f¡ |  |jjd¡ |  |jjd¡ |  |jj|u ¡ d S )Nr   r^   rï   r†   rå   c                   @   r=   )zIComponentsTests.test_unregisterAdapter_wo_explicit_provided.<locals>.IFooNr>   r   r   r   r   rA   �  rB   rA   r    c                   @   r=   )zMComponentsTests.test_unregisterAdapter_wo_explicit_provided.<locals>._FactoryNr>   r   r   r   r   rë   “  rE   rë   rd   rc   )rH   r<   rð   re   r‡   rf   ræ   rI   r   râ   r!   r  r(   r%   ri   r)   r   rj   ré   r   rF   rV   )r   r<   rð   r‡   ræ   rA   rK   rã   rë   r0   r    r   r§   r   r   rl   r   r   r   Ú+test_unregisterAdapter_wo_explicit_providedŠ  ó8   ÿ
z;ComponentsTests.test_unregisterAdapter_wo_explicit_providedc                    ót  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 d   ƒ n1 sRw   Y  |  |
¡ |  t|	ƒd¡ |	d \}}|\}|  |i ¡ |  t||ƒ¡ |  t|j|ƒ¡ |  |jj|u ¡ |  |jj|u ¡ |  |jjˆ f¡ |  |jjd¡ |  |jjd¡ |  |jj|u ¡ d S )Nr   r^   r†   rå   c                   @   r=   )zIComponentsTests.test_unregisterAdapter_wo_explicit_required.<locals>.IFooNr>   r   r   r   r   rA   ®  rB   rA   r    c                       rý   )zMComponentsTests.test_unregisterAdapter_wo_explicit_required.<locals>._FactoryNrþ   r   r   r   r   rë   ²  r  rë   ©rj   rd   rc   )rH   r<   re   r‡   rf   ræ   rI   r   râ   r!   r  r(   r%   ri   r)   r   rj   ré   r   rF   rV   )r   r<   r‡   ræ   rA   rK   rë   r0   r    r   r§   r   r   rl   r   r   r   Ú+test_unregisterAdapter_wo_explicit_requiredª  ó4   ÿ
z;ComponentsTests.test_unregisterAdapter_wo_explicit_requiredc                 C   r»   r	   )r   r%   r›   ÚregisteredAdaptersr5   r   r   r   Útest_registeredAdapters_emptyÈ  r½   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|
u ¡ |  |d j|u ¡ |  	|d j|f¡ |  |d j|u ¡ |  |d j|u ¡ |  |d j|	u ¡ |  t|d |ƒ¡ |  |d j|
u ¡ |  |d j|u ¡ |  	|d j|f¡ |  |d j|u ¡ |  |d j|u ¡ |  |d j|	u ¡ d S )Nr   r^   rå   c                   @   r=   )z>ComponentsTests.test_registeredAdapters_notempty.<locals>.IFooNr>   r   r   r   r   rA   Ð  rB   rA   rF   r   r€   c                   @   r=   )zBComponentsTests.test_registeredAdapters_notempty.<locals>._FactoryNr>   r   r   r   r   rë   ×  rB   rë   c                 S   r¾   r	   r¿   rÀ   r   r   r   rÂ   Ý  rÃ   zBComponentsTests.test_registeredAdapters_notempty.<locals>.<lambda>rÄ   rz   rd   )rH   r<   rf   ræ   rI   r   râ   rÆ   r  r%   ri   r(   r)   r   rj   ré   r   rF   rV   )r   r<   ræ   rA   rK   rã   rL   r‚   rƒ   rë   r0   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 u ¡ d S )Nr   r^   c                   @   r=   )z?ComponentsTests.test_queryAdapter_miss_no_default.<locals>.IFooNr>   r   r   r   r   rA   ð  rB   rA   ©rH   r<   r   rI   r(   ÚqueryAdapter)r   r<   rA   rK   r0   Ú_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�|u ¡ d S )Nr   r^   c                   @   r=   )z>ComponentsTests.test_queryAdapter_miss_w_default.<locals>.IFooNr>   r   r   r   r   rA   ù  rB   rA   rÌ   r  )r   r<   rA   rK   r0   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	|u ¡ d S )Nr   r^   rï   c                   @   r=   )z3ComponentsTests.test_queryAdapter_hit.<locals>.IFooNr>   r   r   r   r   rA     rB   rA   r    c                   @   ó   e Zd Zdd„ ZdS )z7ComponentsTests.test_queryAdapter_hit.<locals>._Factoryc                 S   ó
   || _ d S r	   rç   ©r   rè   r   r   r   r·   
  ó   
z@ComponentsTests.test_queryAdapter_hit.<locals>._Factory.__init__N©r&   r?   r@   r·   r   r   r   r   rë   	  ó    rë   c                   @   r=   )z7ComponentsTests.test_queryAdapter_hit.<locals>._ContextNr>   r   r   r   r   rù     rE   rù   )
rH   r<   rð   rI   r   râ   r  r(   r)   rè   ©r   r<   rð   rA   rK   rã   rë   rù   r  r0   Ú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   r^   rï   rÔ   c                   @   r=   )z2ComponentsTests.test_getAdapter_miss.<locals>.IFooNr>   r   r   r   r   rA     rB   rA   r    c                   @   r=   )z6ComponentsTests.test_getAdapter_miss.<locals>._ContextNr>   r   r   r   r   rù     rE   rù   )	rH   r<   rð   re   rÕ   rI   r   rX   Ú
getAdapter)
r   r<   rð   rÕ   rA   rK   rã   rù   r  r0   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|¡ |	 ||¡}
|  |
|¡ |  |
j	|¡ d S )Nr   r^   rï   c                   @   r=   )z1ComponentsTests.test_getAdapter_hit.<locals>.IFooNr>   r   r   r   r   rA   )  rB   rA   r    c                   @   r!  )z5ComponentsTests.test_getAdapter_hit.<locals>._Factoryc                 S   r"  r	   rç   r#  r   r   r   r·   .  r$  z>ComponentsTests.test_getAdapter_hit.<locals>._Factory.__init__Nr%  r   r   r   r   rë   -  r&  rë   c                   @   r=   )z5ComponentsTests.test_getAdapter_hit.<locals>._ContextNr>   r   r   r   r   rù   0  rE   rù   )
rH   r<   rð   rI   r   râ   r*  ÚassertIsInstanceÚassertIsrè   r'  r   r   r   Útest_getAdapter_hit&  s   z#ComponentsTests.test_getAdapter_hitc                    s*  ddl m} ddlm} G dd„ d|ƒ}G dd„ d|ƒ}G dd	„ d	|ƒ}||ƒG d
d„ dtƒƒ}||ƒG dd„ d|ƒƒ}G dd„ dtƒ}G dd„ dtƒ}	|  ¡ }
|
 |	|f|¡ |
 ||f|¡ |  |
¡ |ƒ }|
 ||¡}|  	||	¡ |  
|j|¡ t||ƒ}|
 ||¡}|  	||¡ |  
|j|¡ d S )Nr   r   rï   c                   @   r=   )z8ComponentsTests.test_getAdapter_hit_super.<locals>.IBaseNr>   r   r   r   r   ÚIBase>  rB   r/  c                   @   r=   )z;ComponentsTests.test_getAdapter_hit_super.<locals>.IDerivedNr>   r   r   r   r   ÚIDerivedA  rB   r0  c                   @   r=   )z7ComponentsTests.test_getAdapter_hit_super.<locals>.IFooNr>   r   r   r   r   rA   D  rB   rA   c                   @   r=   )z7ComponentsTests.test_getAdapter_hit_super.<locals>.BaseNr>   r   r   r   r   ÚBaseG  rE   r1  c                   @   r=   )z:ComponentsTests.test_getAdapter_hit_super.<locals>.DerivedNr>   r   r   r   r   ÚDerivedK  rE   r2  c                   @   r!  )z>ComponentsTests.test_getAdapter_hit_super.<locals>.AdapterBasec                 S   r"  r	   rç   r#  r   r   r   r·   P  r$  zGComponentsTests.test_getAdapter_hit_super.<locals>.AdapterBase.__init__Nr%  r   r   r   r   ÚAdapterBaseO  r&  r3  c                   @   r!  )zAComponentsTests.test_getAdapter_hit_super.<locals>.AdapterDerivedc                 S   r"  r	   rç   r#  r   r   r   r·   T  r$  zJComponentsTests.test_getAdapter_hit_super.<locals>.AdapterDerived.__init__Nr%  r   r   r   r   ÚAdapterDerivedS  r&  r4  ©r   r   rH   rð   rI   r   râ   Ú_should_not_changer*  r,  r-  rè   r�   ©r   r   rð   r/  r0  rA   r1  r2  r3  r4  r0   Úderivedr(  Úsuper˜   r   r   Útest_getAdapter_hit_super:  s.   

z)ComponentsTests.test_getAdapter_hit_superc                    sL  ddl m} ddlm} G dd„ d|ƒ}G dd„ d|ƒ}G dd	„ d	|ƒ}G d
d„ dtƒ}G dd„ d|ƒ}||ƒG dd„ d|ƒƒ}||ƒG dd„ d||ƒƒ}	G dd„ dtƒ}
G dd„ dtƒ}|  ¡ }| ||f|¡ | |
|f|¡ |  |¡ |	ƒ }| ||¡}|  	||¡ |  
|j|¡ t|	|ƒ}| ||¡}|  	||
¡ |  
|j|¡ d S )Nr   r   rï   c                   @   r=   )zaComponentsTests.test_getAdapter_hit_super_when_parent_implements_interface_diamond.<locals>.IBaseNr>   r   r   r   r   r/  j  rB   r/  c                   @   r=   )zdComponentsTests.test_getAdapter_hit_super_when_parent_implements_interface_diamond.<locals>.IDerivedNr>   r   r   r   r   r0  m  rB   r0  c                   @   r=   )z`ComponentsTests.test_getAdapter_hit_super_when_parent_implements_interface_diamond.<locals>.IFooNr>   r   r   r   r   rA   p  rB   rA   c                   @   r=   )z`ComponentsTests.test_getAdapter_hit_super_when_parent_implements_interface_diamond.<locals>.BaseNr>   r   r   r   r   r1  s  rB   r1  c                   @   r=   )zbComponentsTests.test_getAdapter_hit_super_when_parent_implements_interface_diamond.<locals>.Child1Nr>   r   r   r   r   ÚChild1v  rB   r;  c                   @   r=   )zbComponentsTests.test_getAdapter_hit_super_when_parent_implements_interface_diamond.<locals>.Child2Nr>   r   r   r   r   ÚChild2y  rE   r<  c                   @   r=   )zcComponentsTests.test_getAdapter_hit_super_when_parent_implements_interface_diamond.<locals>.DerivedNr>   r   r   r   r   r2  }  rE   r2  c                   @   r!  )zgComponentsTests.test_getAdapter_hit_super_when_parent_implements_interface_diamond.<locals>.AdapterBasec                 S   r"  r	   rç   r#  r   r   r   r·   ‚  r$  zpComponentsTests.test_getAdapter_hit_super_when_parent_implements_interface_diamond.<locals>.AdapterBase.__init__Nr%  r   r   r   r   r3  �  r&  r3  c                   @   r!  )zjComponentsTests.test_getAdapter_hit_super_when_parent_implements_interface_diamond.<locals>.AdapterDerivedc                 S   r"  r	   rç   r#  r   r   r   r·   †  r$  zsComponentsTests.test_getAdapter_hit_super_when_parent_implements_interface_diamond.<locals>.AdapterDerived.__init__Nr%  r   r   r   r   r4  …  r&  r4  r5  )r   r   rð   r/  r0  rA   r1  r;  r<  r2  r3  r4  r0   r8  r(  r9  r˜   r   r   ÚBtest_getAdapter_hit_super_when_parent_implements_interface_diamondf  s2   

zRComponentsTests.test_getAdapter_hit_super_when_parent_implements_interface_diamondc                 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   r^   rï   c                   @   r=   )z9ComponentsTests.test_queryMultiAdapter_miss.<locals>.IFooNr>   r   r   r   r   rA   ›  rB   rA   r    ÚIBazc                   @   r=   )z>ComponentsTests.test_queryMultiAdapter_miss.<locals>._Context1Nr>   r   r   r   r   Ú	_Context1   rE   r?  c                   @   r=   )z>ComponentsTests.test_queryMultiAdapter_miss.<locals>._Context2Nr>   r   r   r   r   Ú	_Context2£  rE   r@  )rH   r<   rð   rI   r   r%   ÚqueryMultiAdapter©r   r<   rð   rA   rK   rã   Úibazr?  r@  Ú	_context1Ú	_context2r0   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�|u ¡ d S )Nr   r^   rï   c                   @   r=   )zCComponentsTests.test_queryMultiAdapter_miss_w_default.<locals>.IFooNr>   r   r   r   r   rA   ¯  rB   rA   r    r>  c                   @   r=   )zHComponentsTests.test_queryMultiAdapter_miss_w_default.<locals>._Context1Nr>   r   r   r   r   r?  ´  rE   r?  c                   @   r=   )zHComponentsTests.test_queryMultiAdapter_miss_w_default.<locals>._Context2Nr>   r   r   r   r   r@  ·  rE   r@  rÌ   )rH   r<   rð   rI   r   r(   rA  )r   r<   rð   rA   rK   rã   rC  r?  r@  rD  rE  rÎ   r0   r   r   r   Ú%test_queryMultiAdapter_miss_w_default¬  s*   ÿÿÿz5ComponentsTests.test_queryMultiAdapter_miss_w_defaultc                 C   óÜ   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   r^   rï   c                   @   r=   )z8ComponentsTests.test_queryMultiAdapter_hit.<locals>.IFooNr>   r   r   r   r   rA   Å  rB   rA   r    r>  c                   @   r=   )z=ComponentsTests.test_queryMultiAdapter_hit.<locals>._Context1Nr>   r   r   r   r   r?  Ê  rE   r?  c                   @   r=   )z=ComponentsTests.test_queryMultiAdapter_hit.<locals>._Context2Nr>   r   r   r   r   r@  Í  rE   r@  c                   @   r!  )z<ComponentsTests.test_queryMultiAdapter_hit.<locals>._Factoryc                 S   ó   ||f| _ d S r	   rç   ©r   Úcontext1Úcontext2r   r   r   r·   Ó  ó   zEComponentsTests.test_queryMultiAdapter_hit.<locals>._Factory.__init__Nr%  r   r   r   r   rë   Ò  r&  rë   )rH   r<   rð   rI   r   râ   rA  r(   r)   r%   rè   ©r   r<   rð   rA   rK   rã   rC  r?  r@  rD  rE  rë   r0   r(  r   r   r   Útest_queryMultiAdapter_hitÂ  ó$   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   r^   rï   rÔ   c                   @   r=   )z7ComponentsTests.test_getMultiAdapter_miss.<locals>.IFooNr>   r   r   r   r   rA   ß  rB   rA   r    r>  c                   @   r=   )z<ComponentsTests.test_getMultiAdapter_miss.<locals>._Context1Nr>   r   r   r   r   r?  ä  rE   r?  c                   @   r=   )z<ComponentsTests.test_getMultiAdapter_miss.<locals>._Context2Nr>   r   r   r   r   r@  ç  rE   r@  )	rH   r<   rð   re   rÕ   rI   r   rX   ÚgetMultiAdapter)r   r<   rð   rÕ   rA   rK   rã   rC  r?  r@  rD  rE  r0   r   r   r   Útest_getMultiAdapter_missÛ  s"   ÿz)ComponentsTests.test_getMultiAdapter_missc                 C   rH  )Nr   r^   rï   c                   @   r=   )z6ComponentsTests.test_getMultiAdapter_hit.<locals>.IFooNr>   r   r   r   r   rA   ó  rB   rA   r    r>  c                   @   r=   )z;ComponentsTests.test_getMultiAdapter_hit.<locals>._Context1Nr>   r   r   r   r   r?  ø  rE   r?  c                   @   r=   )z;ComponentsTests.test_getMultiAdapter_hit.<locals>._Context2Nr>   r   r   r   r   r@  û  rE   r@  c                   @   r!  )z:ComponentsTests.test_getMultiAdapter_hit.<locals>._Factoryc                 S   rI  r	   rç   rJ  r   r   r   r·     rM  zCComponentsTests.test_getMultiAdapter_hit.<locals>._Factory.__init__Nr%  r   r   r   r   rë      r&  rë   )rH   r<   rð   rI   r   râ   rQ  r(   r)   r%   rè   rN  r   r   r   Útest_getMultiAdapter_hitð  rP  z(ComponentsTests.test_getMultiAdapter_hitc                    s(   ‡ fdd„}||_ ||j_ ||jj_ d S )Nc                     s   ˆ   d¡ d S )NzNothing should get changed)Úfail)r   r
   r   r   Ú
no_changes  rM  z6ComponentsTests._should_not_change.<locals>.no_changes)Úchangedr*   Ú	_v_lookup)r   r0   rU  r   r
   r   r6  	  s   z"ComponentsTests._should_not_changec                    s^  ddl m} ddlm} G dd„ d|ƒ}G dd„ d|ƒ}G dd	„ d	|ƒ}||ƒG d
d„ dtƒƒ}||ƒG dd„ d|ƒƒ}G dd„ dtƒ}G dd„ d|ƒ}	|  ¡ }
|
 |	||f|¡ |
 |||f|¡ |  |
¡ |ƒ }|
 ||f|¡}|  	||	¡ |  
|j|¡ |  
|j|¡ t||ƒ}|
 ||f|¡}|  	||¡ |  ||	¡ |  
|j|¡ |  
|j|¡ d S )Nr   r   rï   c                   @   r=   )z=ComponentsTests.test_getMultiAdapter_hit_super.<locals>.IBaseNr>   r   r   r   r   r/    rB   r/  c                   @   r=   )z@ComponentsTests.test_getMultiAdapter_hit_super.<locals>.IDerivedNr>   r   r   r   r   r0    rB   r0  c                   @   r=   )z<ComponentsTests.test_getMultiAdapter_hit_super.<locals>.IFooNr>   r   r   r   r   rA     rB   rA   c                   @   r=   )z<ComponentsTests.test_getMultiAdapter_hit_super.<locals>.BaseNr>   r   r   r   r   r1     rE   r1  c                   @   r=   )z?ComponentsTests.test_getMultiAdapter_hit_super.<locals>.DerivedNr>   r   r   r   r   r2  $  rE   r2  c                   @   r!  )zCComponentsTests.test_getMultiAdapter_hit_super.<locals>.AdapterBasec                 S   s   || _ || _d S r	   ©rK  rL  rJ  r   r   r   r·   )  s   
zLComponentsTests.test_getMultiAdapter_hit_super.<locals>.AdapterBase.__init__Nr%  r   r   r   r   r3  (  r&  r3  c                   @   r=   )zFComponentsTests.test_getMultiAdapter_hit_super.<locals>.AdapterDerivedNr>   r   r   r   r   r4  -  rB   r4  )r   r   rH   rð   rI   r   râ   r6  rQ  r,  r-  rK  rL  r�   ÚassertNotIsInstancer7  r˜   r   r   Útest_getMultiAdapter_hit_super  s4   

z.ComponentsTests.test_getMultiAdapter_hit_superc                 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   r^   rï   c                   @   r=   )z4ComponentsTests.test_getAdapters_empty.<locals>.IFooNr>   r   r   r   r   rA   E  rB   rA   r    r>  c                   @   r=   )z9ComponentsTests.test_getAdapters_empty.<locals>._Context1Nr>   r   r   r   r   r?  J  rE   r?  c                   @   r=   )z9ComponentsTests.test_getAdapters_empty.<locals>._Context2Nr>   r   r   r   r   r@  M  rE   r@  )rH   r<   rð   rI   r   r%   r›   ÚgetAdaptersrB  r   r   r   Útest_getAdapters_emptyB  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   r^   rï   c                   @   r=   )zCComponentsTests.test_getAdapters_factory_returns_None.<locals>.IFooNr>   r   r   r   r   rA   Y  rB   rA   r    r>  c                   @   r=   )zHComponentsTests.test_getAdapters_factory_returns_None.<locals>._Context1Nr>   r   r   r   r   r?  ^  rE   r?  c                   @   r=   )zHComponentsTests.test_getAdapters_factory_returns_None.<locals>._Context2Nr>   r   r   r   r   r@  a  rE   r@  c                    r   r	   r   rX  ©Ú_called_withr   r   Ú_side_effect_onlyh  s   zPComponentsTests.test_getAdapters_factory_returns_None.<locals>._side_effect_only)	rH   r<   rð   rI   r   râ   r%   r›   r[  )r   r<   rð   rA   rK   rã   rC  r?  r@  rD  rE  r0   r_  r   r]  r   Ú%test_getAdapters_factory_returns_NoneV  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   r^   rï   c                   @   r=   )z8ComponentsTests.test_getAdapters_non_empty.<locals>.IFooNr>   r   r   r   r   rA   t  rB   rA   r    r>  c                   @   r=   )z=ComponentsTests.test_getAdapters_non_empty.<locals>._Context1Nr>   r   r   r   r   r?  y  rE   r?  c                   @   r=   )z=ComponentsTests.test_getAdapters_non_empty.<locals>._Context2Nr>   r   r   r   r   r@  |  rE   r@  c                   @   r!  )z=ComponentsTests.test_getAdapters_non_empty.<locals>._Factory1c                 S   rI  r	   rç   rJ  r   r   r   r·   ‚  rM  zFComponentsTests.test_getAdapters_non_empty.<locals>._Factory1.__init__Nr%  r   r   r   r   Ú	_Factory1�  r&  ra  c                   @   r!  )z=ComponentsTests.test_getAdapters_non_empty.<locals>._Factory2c                 S   rI  r	   rç   rJ  r   r   r   r·   …  rM  zFComponentsTests.test_getAdapters_non_empty.<locals>._Factory2.__init__Nr%  r   r   r   r   Ú	_Factory2„  r&  rb  r   r€   r¿   rz   rd   )rH   r<   rð   rI   r   râ   rÆ   r[  r%   ri   r(   r)   )r   r<   rð   rA   rK   rã   rC  r?  r@  rD  rE  ra  rb  r‚   rƒ   r0   Úfoundr   r   r   Útest_getAdapters_non_emptyp  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   r^   c                   @   r=   )zNComponentsTests.test_registerSubscriptionAdapter_w_nonblank_name.<locals>.IFooNr>   r   r   r   r   rA   –  rB   rA   r    r   rF   c                 S   rO   r	   rP   rç   r   r   r   rR   œ  rS   zRComponentsTests.test_registerSubscriptionAdapter_w_nonblank_name.<locals>._factory)rH   r<   r   rX   rY   ÚregisterSubscriptionAdapter)	r   r<   rA   rK   rã   rk   rL   rR   r0   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 d   ƒ n1 sKw   Y  |
j	j
d | | | }|  t|ƒd¡ |  |d |	u ¡ |  |
j|f|||	|fg¡ |  t|ƒd¡ |d \}}|\}|  |i ¡ |  t||ƒ¡ |  t|j|ƒ¡ |  |jj|
u ¡ |  |jj|u ¡ |  |jj|f¡ |  |jj|¡ |  |jj|u ¡ |  |jj|	u ¡ d S )Nr   r^   r_   ©ÚSubscriptionRegistrationc                   @   r=   )z_ComponentsTests.test_registerSubscriptionAdapter_w_explicit_provided_and_required.<locals>.IFooNr>   r   r   r   r   rA   ¨  rB   rA   r    rc   rF   c                 S   rO   r	   rP   rç   r   r   r   rR   ®  rS   zcComponentsTests.test_registerSubscriptionAdapter_w_explicit_provided_and_required.<locals>._factoryrG   rd   )rH   r<   re   r`   rf   rh  r   r!   re  r*   rh   r%   ri   r(   r.   r)   rI   r   rj   ré   r   rF   rV   )r   r<   r`   rh  rA   rK   rã   Ú_blankrL   rR   r0   r    r   rÇ   r   r   rl   r   r   r   ÚAtest_registerSubscriptionAdapter_w_explicit_provided_and_required£  sD   ÿÿÿ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 d   ƒ n1 sXw   Y  |jjd | | |	 }|  t|ƒd¡ |  |d |
u ¡ |  |j|f||	|
|fg¡ |  t|ƒd¡ |d \}}|\}|  |i ¡ |  t||ƒ¡ |  t|j|ƒ¡ |  |jj|u ¡ |  |jj|u ¡ |  |jj|f¡ |  |jj|	¡ |  |jj|u ¡ |  |jj|
u ¡ d S )Nr   r^   rï   r_   rg  c                   @   r=   )zSComponentsTests.test_registerSubscriptionAdapter_wo_explicit_provided.<locals>.IFooNr>   r   r   r   r   rA   Í  rB   rA   r    rF   rc   c                   @   r=   )zWComponentsTests.test_registerSubscriptionAdapter_wo_explicit_provided.<locals>._FactoryNr>   r   r   r   r   rë   Ô  rE   rë   rG   rd   )rH   r<   rð   re   r`   rf   rh  rI   r   r!   re  r*   rh   r%   ri   r(   r.   r)   r   rj   ré   r   rF   rV   )r   r<   rð   r`   rh  rA   rK   rã   rL   ri  rë   r0   r    r   rÇ   r   r   rl   r   r   r   Ú5test_registerSubscriptionAdapter_wo_explicit_providedÇ  sD   ÿÿ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 d   ƒ n1 sOw   Y  |	j
jd ˆ  | | }|  t|ƒd¡ |  |d |u ¡ |  |	jˆ f||||fg¡ |  t|ƒd¡ |d \}}|\}|  |i ¡ |  t||ƒ¡ |  t|j|ƒ¡ |  |jj|	u ¡ |  |jj|u ¡ |  |jjˆ f¡ |  |jj|¡ |  |jj|u ¡ |  |jj|u ¡ d S )Nr   r^   r_   rg  c                   @   r=   )zSComponentsTests.test_registerSubscriptionAdapter_wo_explicit_required.<locals>.IFooNr>   r   r   r   r   rA   ó  rB   rA   r    rF   rc   c                       rý   )zWComponentsTests.test_registerSubscriptionAdapter_wo_explicit_required.<locals>._FactoryNrþ   r   r   r   r   rë   ù  r  rë   )rj   rF   rd   )rH   r<   re   r`   rf   rh  rI   r   r!   re  r*   rh   r%   ri   r(   r.   r)   r   rj   ré   r   rF   rV   )r   r<   r`   rh  rA   rK   rL   ri  rë   r0   r    r   rÇ   r   r   rl   r   r   r   Ú5test_registerSubscriptionAdapter_wo_explicit_requiredî  sD   ÿÿÿ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 d   ƒ n1 s@w   Y  |  t|
ƒd¡ d S )Nr   r^   c                   @   r=   )zGComponentsTests.test_registerSubscriptionAdapter_wo_event.<locals>.IFooNr>   r   r   r   r   rA     rB   rA   r    rc   rF   c                 S   rO   r	   rP   rç   r   r   r   rR     rS   zKComponentsTests.test_registerSubscriptionAdapter_wo_event.<locals>._factoryF©rF   rl   )rH   r<   r   r!   re  r%   ri   )r   r<   rA   rK   rã   ri  rL   rR   r0   r    r   r   r   r   Ú)test_registerSubscriptionAdapter_wo_event  s   ÿÿz9ComponentsTests.test_registerSubscriptionAdapter_wo_eventc                 C   r»   r	   )r   r%   r›   ÚregisteredSubscriptionAdaptersr5   r   r   r   Ú)test_registeredSubscriptionAdapters_empty'  r½   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|	u ¡ |  |
d j|u ¡ |  	|
d j|f¡ |  	|
d j|¡ |  |
d j|u ¡ |  |
d j|u ¡ |  t|
d |ƒ¡ |  |
d j|	u ¡ |  |
d j|u ¡ |  	|
d j|f¡ |  	|
d j|¡ |  |
d j|u ¡ |  |
d j|u ¡ d S )Nr   r^   rg  c                   @   r=   )zJComponentsTests.test_registeredSubscriptionAdapters_notempty.<locals>.IFooNr>   r   r   r   r   rA   /  rB   rA   rF   rc   c                   @   r=   )zNComponentsTests.test_registeredSubscriptionAdapters_notempty.<locals>._FactoryNr>   r   r   r   r   rë   5  rB   rë   rG   rz   rd   )rH   r<   rf   rh  rI   r   re  r›   ro  r%   ri   r(   r)   r   rj   ré   r   rF   rV   )r   r<   rh  rA   rK   rã   rL   ri  rë   r0   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   r^   c                   @   r=   )zPComponentsTests.test_unregisterSubscriptionAdapter_w_nonblank_name.<locals>.IFooNr>   r   r   r   r   rA   O  rB   rA   r    Únonblank)ré   rj   r   ©rH   r<   r   rX   rY   ÚunregisterSubscriptionAdapter)r   r<   rA   rK   rã   Ú	_nonblankr0   r   r   r   Ú2test_unregisterSubscriptionAdapter_w_nonblank_nameL  s   

ÿzBComponentsTests.test_unregisterSubscriptionAdapter_w_nonblank_namec                 C   r  r  )r   rX   rY   rt  r5   r   r   r   Ú?test_unregisterSubscriptionAdapter_neither_factory_nor_providedX  r  zOComponentsTests.test_unregisterSubscriptionAdapter_neither_factory_nor_providedc                 C   r	  )Nr   r^   c                   @   r=   )z]ComponentsTests.test_unregisterSubscriptionAdapter_neither_factory_nor_required.<locals>.IFooNr>   r   r   r   r   rA   _  rB   rA   r
  rs  rÊ   r   r   r   Ú?test_unregisterSubscriptionAdapter_neither_factory_nor_required]  r  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 d   ƒ n1 s=w   Y  |  |	¡ |  |¡ d S )Nr   r^   c                   @   r=   )zEComponentsTests.test_unregisterSubscriptionAdapter_miss.<locals>.IFooNr>   r   r   r   r   rA   h  rB   rA   r    c                   @   r=   )zIComponentsTests.test_unregisterSubscriptionAdapter_miss.<locals>._FactoryNr>   r   r   r   r   rë   l  rB   rë   )rH   r<   rI   r   r!   rt  r¦   r  r   r   r   Ú'test_unregisterSubscriptionAdapter_missf  s   ÿ
z7ComponentsTests.test_unregisterSubscriptionAdapter_missc                 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ƒ}|  ¡ }| ||f|¡ |  	¡ \}	}
|	� | 
d |f|¡}W d   ƒ n1 sQw   Y  |  |¡ |  |jj¡ |  |j¡ |  t|
ƒd
¡ |
d \}}|\}|  |i ¡ |  t||ƒ¡ |  t|j|ƒ¡ |  |jj|u ¡ |  |jj|u ¡ |  |jj|f¡ |  |jjd¡ |  |jjd¡ |  |jjd u ¡ d S )Nr   r^   r†   rg  c                   @   r=   )zOComponentsTests.test_unregisterSubscriptionAdapter_hit_wo_factory.<locals>.IFooNr>   r   r   r   r   rA   z  rB   rA   r    c                   @   r=   )zSComponentsTests.test_unregisterSubscriptionAdapter_hit_wo_factory.<locals>._FactoryNr>   r   r   r   r   rë   ~  rB   rë   rd   rc   ©rH   r<   re   r‡   rf   rh  rI   r   re  r!   rt  r(   r¦   r*   rh   r.   r%   ri   r)   r   rj   ré   r   rF   rV   ©r   r<   r‡   rh  rA   rK   rã   rë   r0   r    r   r§   r   r   rl   r   r   r   Ú1test_unregisterSubscriptionAdapter_hit_wo_factoryv  r  zAComponentsTests.test_unregisterSubscriptionAdapter_hit_wo_factoryc                 C   r  )Nr   r^   r†   rg  c                   @   r=   )zNComponentsTests.test_unregisterSubscriptionAdapter_hit_w_factory.<locals>.IFooNr>   r   r   r   r   rA   š  rB   rA   r    c                   @   r=   )zRComponentsTests.test_unregisterSubscriptionAdapter_hit_w_factory.<locals>._FactoryNr>   r   r   r   r   rë   ž  rB   rë   rd   rc   rz  r{  r   r   r   Ú0test_unregisterSubscriptionAdapter_hit_w_factory–  r  z@ComponentsTests.test_unregisterSubscriptionAdapter_hit_w_factoryc                 C   r  )Nr   r^   rï   r†   rg  c                   @   r=   )zUComponentsTests.test_unregisterSubscriptionAdapter_wo_explicit_provided.<locals>.IFooNr>   r   r   r   r   rA   »  rB   rA   r    c                   @   r=   )zYComponentsTests.test_unregisterSubscriptionAdapter_wo_explicit_provided.<locals>._FactoryNr>   r   r   r   r   rë   ¿  rE   rë   rd   rc   )rH   r<   rð   re   r‡   rf   rh  rI   r   re  r!   rt  r(   r%   ri   r)   r   rj   ré   r   rF   rV   )r   r<   rð   r‡   rh  rA   rK   rã   rë   r0   r    r   r§   r   r   rl   r   r   r   Ú7test_unregisterSubscriptionAdapter_wo_explicit_provided¶  r  zGComponentsTests.test_unregisterSubscriptionAdapter_wo_explicit_providedc                    r  )Nr   r^   r†   rg  c                   @   r=   )zUComponentsTests.test_unregisterSubscriptionAdapter_wo_explicit_required.<locals>.IFooNr>   r   r   r   r   rA   Ú  rB   rA   r    c                       rý   )zYComponentsTests.test_unregisterSubscriptionAdapter_wo_explicit_required.<locals>._FactoryNrþ   r   r   r   r   rë   Þ  r  rë   r  rd   rc   )rH   r<   re   r‡   rf   rh  rI   r   re  r!   rt  r(   r%   ri   r)   r   rj   ré   r   rF   rV   )r   r<   r‡   rh  rA   rK   rë   r0   r    r   r§   r   r   rl   r   r   r   Ú7test_unregisterSubscriptionAdapter_wo_explicit_requiredÖ  r  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   r^   rï   c                   @   r=   )z4ComponentsTests.test_subscribers_empty.<locals>.IFooNr>   r   r   r   r   rA   ÷  rB   rA   r    c                   @   r=   )z3ComponentsTests.test_subscribers_empty.<locals>.BarNr>   r   r   r   r   ÚBarü  rE   r€  )rH   r<   rð   r   rI   r%   r›   Úsubscribers)	r   r<   rð   rA   rK   rã   r0   r€  Ú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   r^   rï   c                   @   r=   )z8ComponentsTests.test_subscribers_non_empty.<locals>.IFooNr>   r   r   r   r   rA     rB   rA   r    c                       s   e Zd Z” fZdd„ ZdS )z<ComponentsTests.test_subscribers_non_empty.<locals>._Factoryc                 S   r"  r	   )r  r#  r   r   r   r·     r$  zEComponentsTests.test_subscribers_non_empty.<locals>._Factory.__init__N)r&   r?   r@   rÿ   r·   r   r   r   r   rë   	  s    rë   c                   @   r=   )z<ComponentsTests.test_subscribers_non_empty.<locals>._DerivedNr>   r   r   r   r   Ú_Derived  rB   r„  c                   @   r=   )z7ComponentsTests.test_subscribers_non_empty.<locals>.BarNr>   r   r   r   r   r€    rE   r€  c                 S   s   | j jS r	   )r”   r&   ©Úxr   r   r   Ú
_klassname  ó   z>ComponentsTests.test_subscribers_non_empty.<locals>._klassnamerÄ   rz   rd   )rH   r<   rð   rI   r   re  r�  rÆ   r%   ri   r(   r)   )r   r<   rð   rA   rK   rë   r„  r0   r€  r‚  r�  r‡  r   r   r   Útest_subscribers_non_empty  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   r^   c                   @   r=   )zBComponentsTests.test_registerHandler_w_nonblank_name.<locals>.IFooNr>   r   r   r   r   rA   !  rB   rA   rr  c                 S   rO   r	   rP   rç   r   r   r   rR   &  rS   zFComponentsTests.test_registerHandler_w_nonblank_name.<locals>._factory©ré   r   )rH   r<   r   rX   rY   ÚregisterHandler)r   r<   rA   rK   ru  r0   rR   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 d   ƒ n1 sFw   Y  |	j	j
d | d  | }|  t|ƒd¡ |  |d |u ¡ |  |	j|f|||fg¡ |  t|ƒd¡ |d \}}|\}|  |i ¡ |  t||ƒ¡ |  t|j|ƒ¡ |  |jj|	u ¡ |  |jj|f¡ |  |jj|¡ |  |jj|u ¡ |  |jj|u ¡ d S )Nr   r^   r_   ©ÚHandlerRegistrationc                   @   r=   )zFComponentsTests.test_registerHandler_w_explicit_required.<locals>.IFooNr>   r   r   r   r   rA   1  rB   rA   rc   rF   c                 S   rO   r	   rP   rç   r   r   r   rR   6  rS   zJComponentsTests.test_registerHandler_w_explicit_required.<locals>._factoryrG   rd   )rH   r<   re   r`   rf   rŽ  r   r!   r‹  r*   rh   r%   ri   r(   r/   r)   rI   r   ré   r   rF   rV   )r   r<   r`   rŽ  rA   rK   ri  rL   rR   r0   r    r   rÇ   r   r   rl   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 d   ƒ n1 s?w   Y  |jjd ˆ  d  | }	|  t	|	ƒd¡ |  
|	d |u ¡ |  |jˆ f|||fg¡ |  t	|ƒd¡ d S )Nr   r^   c                   @   r=   )zPComponentsTests.test_registerHandler_wo_explicit_required_no_event.<locals>.IFooNr>   r   r   r   r   rA   Q  rB   rA   rF   rc   c                       rý   )zTComponentsTests.test_registerHandler_wo_explicit_required_no_event.<locals>._FactoryNrþ   r   ©rK   r   r   rë   V  s    rë   Frm  rd   )rH   r<   rI   r   r!   r‹  r*   rh   r%   ri   r(   r/   )
r   r<   rA   rL   ri  rë   r0   r    r   rÇ   r   r�  r   Ú2test_registerHandler_wo_explicit_required_no_eventN  s$   ÿÿzBComponentsTests.test_registerHandler_wo_explicit_required_no_eventc                 C   s   |   ¡ }|  t| ¡ ƒ¡ d S r	   )r   r¦   r›   ÚregisteredHandlersr5   r   r   r   Útest_registeredHandlers_emptye  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   r^   r�  c                   @   r=   )z?ComponentsTests.test_registeredHandlers_non_empty.<locals>.IFooNr>   r   r   r   r   rA   l  rB   rA   c                 S   rO   r	   rP   rç   r   r   r   Ú	_factory1o  rS   zDComponentsTests.test_registeredHandlers_non_empty.<locals>._factory1c                 S   rO   r	   rP   rç   r   r   r   Ú	_factory2q  rS   zDComponentsTests.test_registeredHandlers_non_empty.<locals>._factory2c                 S   s
   | j jjS r	   )rV   Ú__code__Úco_namer…  r   r   r   Ú_factory_namev  r$  zHComponentsTests.test_registeredHandlers_non_empty.<locals>._factory_namerÄ   rz   rc   rd   )rH   r<   rf   rŽ  r   r‹  rÆ   r’  r%   ri   r(   r)   ré   r   rV   rF   )
r   r<   rŽ  rA   rK   r”  r•  r0   r˜  r�  r   r   r   Ú!test_registeredHandlers_non_emptyi  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   r^   c                   @   r=   )zDComponentsTests.test_unregisterHandler_w_nonblank_name.<locals>.IFooNr>   r   r   r   r   rA   ˆ  rB   rA   rr  rŠ  )rH   r<   r   rX   rY   ÚunregisterHandler)r   r<   rA   rK   ru  r0   r   r   r   Ú&test_unregisterHandler_w_nonblank_name…  s   

ÿz6ComponentsTests.test_unregisterHandler_w_nonblank_namec                 C   s   |   ¡ }|  t|j¡ d S r	   )r   rX   rY   rš  r5   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   r^   c                   @   r=   )z9ComponentsTests.test_unregisterHandler_miss.<locals>.IFooNr>   r   r   r   r   rA   –  rB   rA   ©ré   )rH   r<   r   rš  r¦   )r   r<   rA   rK   r0   r§   r   r   r   Útest_unregisterHandler_miss”  s   z+ComponentsTests.test_unregisterHandler_missc                 C   sD  ddl m} ddlm} ddlm} G dd„ d|ƒ}|dƒ}|  ¡ }dd„ }|  ¡ }| ||f¡ |  ¡ \}}	|� | 	||f¡}
W d   ƒ n1 sKw   Y  |  
|
¡ |  t|	ƒd	¡ |	d \}}|\}|  |i ¡ |  
t||ƒ¡ |  
t|j|ƒ¡ |  
|jj|u ¡ |  |jj|f¡ |  |jjd
¡ |  
|jj|u ¡ d S )Nr   r^   r†   r�  c                   @   r=   )zXComponentsTests.test_unregisterHandler_hit_w_factory_and_explicit_provided.<locals>.IFooNr>   r   r   r   r   rA   ¡  rB   rA   c                 S   rO   r	   rP   rç   r   r   r   rR   ¥  rS   z\ComponentsTests.test_unregisterHandler_hit_w_factory_and_explicit_provided.<locals>._factoryrd   rc   ©rH   r<   re   r‡   rf   rŽ  r   r‹  r!   rš  r(   r%   ri   r)   rI   r   ré   r   rV   ©r   r<   r‡   rŽ  rA   rK   r0   rR   r    r   r§   r   r   rl   r   r   r   Ú:test_unregisterHandler_hit_w_factory_and_explicit_provided�  ó0   ÿ
zJComponentsTests.test_unregisterHandler_hit_w_factory_and_explicit_providedc                 C   sD  ddl m} ddlm} ddlm} G dd„ d|ƒ}|dƒ}|  ¡ }dd„ }|  ¡ }| ||f¡ |  ¡ \}}	|� |j	|fd	�}
W d   ƒ n1 sKw   Y  |  
|
¡ |  t|	ƒd
¡ |	d \}}|\}|  |i ¡ |  
t||ƒ¡ |  
t|j|ƒ¡ |  
|jj|u ¡ |  |jj|f¡ |  |jjd¡ |  
|jjd u ¡ d S )Nr   r^   r†   r�  c                   @   r=   )zQComponentsTests.test_unregisterHandler_hit_w_only_explicit_provided.<locals>.IFooNr>   r   r   r   r   rA   ¼  rB   rA   c                 S   rO   r	   rP   rç   r   r   r   rR   À  rS   zUComponentsTests.test_unregisterHandler_hit_w_only_explicit_provided.<locals>._factoryr�  rd   rc   rŸ  r   r   r   r   Ú3test_unregisterHandler_hit_w_only_explicit_provided¸  r¢  zCComponentsTests.test_unregisterHandler_hit_w_only_explicit_providedc                    sP  ddl m} ddlm} ddlm} G dd„ d|ƒ}|dƒ‰ G ‡ fdd„dtƒ}|  ¡ }| |¡ |  	¡ \}}|� | 
|¡}	W d   ƒ n1 sIw   Y  |  |	¡ |  t|ƒd	¡ |d \}
}|
\}|  |i ¡ |  t||ƒ¡ |  t|j|ƒ¡ |  |jj|u ¡ |  |jjˆ f¡ |  |jjd
¡ |  |jjd
¡ |  |jj|u ¡ d S )Nr   r^   r†   r�  c                   @   r=   )zIComponentsTests.test_unregisterHandler_wo_explicit_required.<locals>.IFooNr>   r   r   r   r   rA   ×  rB   rA   c                       rý   )zMComponentsTests.test_unregisterHandler_wo_explicit_required.<locals>._FactoryNrþ   r   r�  r   r   rë   Ú  r  rë   rd   rc   )rH   r<   re   r‡   rf   rŽ  rI   r   r‹  r!   rš  r(   r%   ri   r)   r   ré   r   rF   rV   )r   r<   r‡   rŽ  rA   rë   r0   r    r   r§   r   r   rl   r   r�  r   Ú+test_unregisterHandler_wo_explicit_requiredÓ  s0   
ÿ
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   r^   rï   c                   @   r=   )z/ComponentsTests.test_handle_empty.<locals>.IFooNr>   r   r   r   r   rA   ò  rB   rA   c                   @   r=   )z.ComponentsTests.test_handle_empty.<locals>.BarNr>   r   r   r   r   r€  ö  rE   r€  )rH   r<   rð   r   rI   Úhandle)r   r<   rð   rA   rK   r0   r€  r‚  r   r   r   Útest_handle_emptyï  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   r^   rï   c                   @   r=   )z3ComponentsTests.test_handle_non_empty.<locals>.IFooNr>   r   r   r   r   rA   ÿ  rB   rA   c                    ó   ˆ   | ¡ d S r	   r   rç   )Ú	_called_1r   r   Ú
_factory_1	  rM  z9ComponentsTests.test_handle_non_empty.<locals>._factory_1c                    r§  r	   r   rç   )Ú	_called_2r   r   Ú
_factory_2	  rM  z9ComponentsTests.test_handle_non_empty.<locals>._factory_2c                   @   r=   )z2ComponentsTests.test_handle_non_empty.<locals>.BarNr>   r   r   r   r   r€  	  rE   r€  )rH   r<   rð   r   r‹  rI   r¥  r%   )
r   r<   rð   rA   rK   r©  r«  r0   r€  r‚  r   )r¨  rª  r   Útest_handle_non_emptyü  s"   
z%ComponentsTests.test_handle_non_emptyTc                 C   sü   G dd„ dt ƒ}|  ¡ }tƒ }|r|ntƒ }|j||d� |j||dd� |  t|jjƒd¡ |  |jj|d|r;|fn||fiig¡ |  |jj||rMdnd	i¡ |j	||d�}|  
|¡ |j	||dd�}|  
|¡ |  |jji ¡ |  t|jjƒd
¡ d S )Nc                   @   r=   )zQComponentsTests.test_register_unregister_identical_objects_provided.<locals>.IFooNr>   r   r   r   r   rA   	  rB   rA   r  r‚  r®   rd   rc   r¡   é   r   )r   r   rI   rJ   r%   ri   r+   rh   Ú	_providedr£   r(   )r   Ú	identicalrA   r0   ÚfirstÚsecondÚresr   r   r   Ú3test_register_unregister_identical_objects_provided	  s&   
ÿ
ÿ

zCComponentsTests.test_register_unregister_identical_objects_providedc                 C   s   | j dd� d S )NF)r¯  )r³  r
   r   r   r   Ú2test_register_unregister_nonequal_objects_provided/	  s   zBComponentsTests.test_register_unregister_nonequal_objects_providedc                 C   sê  G dd„ dt ƒ}G dd„ dtƒ}|  ¡ }tdƒD ]}|j|ƒ |d|f d� q|jj}|jj}|  t	|ƒd¡ |  t	|d	 ƒd¡ |  t	|d	 | ƒd¡ |jj
}|  t	|ƒd¡ |  t	|d	 ƒd¡ |  t	|d	 | ƒd¡ |  t	|d	 | d
 ƒd¡ t|ƒƒ  }|j_| i ¡ i  }	|d	 |< tdƒD ]}
td
ƒt|
ƒƒ}
|d	 | |
 |	|
< q—|  ||¡ t|ƒƒ  }|j_
| i ¡ i  }	|d	 |< d|	d
< tddƒD ]}
td
ƒt|
ƒƒ}
|d	 | |
 }|	d
  |f7  < qÑ| ¡ }|  |jj|¡ |  |dddddœ¡ |jdd�}|  |jj|d ¡ |  ||¡ |  ||¡ |  t	|d	 | d
 ƒt	|d	 | d
 ƒ¡ |d	 | d
 D ]}|  ||d	 | d
 ¡ �q>| ¡ }|  |dd	dd	dœ¡ |jdd�}|  ||¡ |  |jj|d ¡ d S )Nc                   @   ó   e Zd ZdZdS )zGComponentsTests.test_rebuildUtilityRegistryFromLocalCache.<locals>.IFooúDoes nothingN©r&   r?   r@   Ú__doc__r   r   r   r   rA   3	  ó    rA   c                   @   rµ  )zYComponentsTests.test_rebuildUtilityRegistryFromLocalCache.<locals>.UtilityImplementingFoor¶  Nr·  r   r   r   r   ÚUtilityImplementingFoo6	  r¹  rº  é   z%sr¿   rd   r   rc   é
   r   é   é   é   é   é   )Údid_not_registerÚneeded_registeredÚdid_not_subscribeÚneeded_subscribedT)Úrebuild)r   rI   r   ÚrangerJ   r+   Ú_generationrg   r%   ri   rh   Útyper   ÚstrÚassertNotEqualÚ$rebuildUtilityRegistryFromLocalCacheÚassertIn)r   rA   rº  ÚcompsÚiÚorig_generationÚorig_adaptersÚorig_subscribersÚnew_adaptersÚdr   Únew_subscribersr0   Úrebuild_results_preflightÚrebuild_resultsÚorig_subscriberÚpreflight_afterÚrebuild_afterr   r   r   Ú)test_rebuildUtilityRegistryFromLocalCache2	  st   

û	þûz9ComponentsTests.test_rebuildUtilityRegistryFromLocalCache)r   )T)vr&   r?   r@   r   r   r!   r1   r3   r6   r9   rM   r\   rm   rq   rr   ru   rw   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=  rF  rG  rO  rR  rS  r6  rZ  r\  r`  rd  rf  rj  rk  rl  rn  rp  rq  rv  rw  rx  ry  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      sæ    
  )"#	
	
#'#*$	  "	,2
/#$'%!	   "	
r   c                       s   e Zd Z‡ fdd„Z‡  ZS )ÚUnhashableComponentsTestsc                    s    G dd„ dt t| ƒ ¡ tƒ}|S )Nc                   @   r=   )z=UnhashableComponentsTests._getTargetClass.<locals>.ComponentsNr>   r   r   r   r   r   Ž	  rB   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   ó   ddl m} |S )Nr   ra   )rf   rb   )r   rb   r   r   r   r   ˜	  ó   z(UtilityRegistrationTests._getTargetClassNc                 C   sb   ddl m} G dd„ d|ƒ}|dƒ}G dd„ dtƒ}|ƒ }d}d	}	|  ¡ }
|
|||||	|ƒ||fS )
Nr   r^   c                   @   r=   )zAUtilityRegistrationTests._makeOne.<locals>.InterfaceClassSubclassNr>   r   r   r   r   ÚInterfaceClassSubclassŸ	  rB   rà  rA   c                   @   r!  )z4UtilityRegistrationTests._makeOne.<locals>._Registryc                 S   ó   dS ©NÚ	_REGISTRYr   r
   r   r   r   Ú__repr__¤	  r   z=UtilityRegistrationTests._makeOne.<locals>._Registry.__repr__N©r&   r?   r@   rä  r   r   r   r   Ú	_Registry£	  r&  ræ  r   Ú	DOCSTRING©rH   r<   rI   r   )r   rU   rV   r<   rà  rK   ræ  r   r   ÚdocÚklassr   r   r   r   œ	  s   þz!UtilityRegistrationTests._makeOnec                 C   ó*   ddl m} ddlm} |||  ¡ ƒ d S )Nr   ©ÚverifyClass©ÚIUtilityRegistration)Úzope.interface.verifyrí  re   rï  r   )r   rí  rï  r   r   r   Ú+test_class_conforms_to_IUtilityRegistration¯	  ó   zDUtilityRegistrationTests.test_class_conforms_to_IUtilityRegistrationc                 C   ó4   ddl m} ddlm} |  ¡ \}}}|||ƒ d S )Nr   ©ÚverifyObjectrî  )rð  rõ  re   rï  r   )r   rõ  rï  ÚurÚ_r   r   r   Ú.test_instance_conforms_to_IUtilityRegistration´	  ó   zGUtilityRegistrationTests.test_instance_conforms_to_IUtilityRegistrationc                 C   ó>   G dd„ dt ƒ}|ƒ }|  |¡\}}}|  t|ƒd| ¡ d S )Nc                   @   ó   e Zd ZdZ dS )z:UtilityRegistrationTests.test___repr__.<locals>._ComponentÚTESTNr>   r   r   r   r   Ú
_Component»	  r¹  rý  zAUtilityRegistration(_REGISTRY, IFoo, %r, TEST, None, 'DOCSTRING')©rI   r   r%   r4   ©r   rý  Ú
_componentrö  Ú	_registryrk   r   r   r   r6   º	  ó   
ÿÿz&UtilityRegistrationTests.test___repr__c                 C   óF   G dd„ dt ƒ}|ƒ }|  |¡\}}}t ƒ |_|  t|ƒd| ¡ d S )Nc                   @   r!  )zKUtilityRegistrationTests.test___repr___provided_wo_name.<locals>._Componentc                 S   rá  ©Nrü  r   r
   r   r   r   rä  Å	  r   zTUtilityRegistrationTests.test___repr___provided_wo_name.<locals>._Component.__repr__Nrå  r   r   r   r   rý  Ä	  r&  rý  úAUtilityRegistration(_REGISTRY, None, %r, TEST, None, 'DOCSTRING')©rI   r   rj   r%   r4   rÿ  r   r   r   Útest___repr___provided_wo_nameÃ	  ó   
ÿÿz7UtilityRegistrationTests.test___repr___provided_wo_namec                 C   r  )Nc                   @   r!  )zLUtilityRegistrationTests.test___repr___component_wo_name.<locals>._Componentc                 S   rá  r  r   r
   r   r   r   rä  Ð	  r   zUUtilityRegistrationTests.test___repr___component_wo_name.<locals>._Component.__repr__Nrå  r   r   r   r   rý  Ï	  r&  rý  r  r  rÿ  r   r   r   Útest___repr___component_wo_nameÎ	  r  z8UtilityRegistrationTests.test___repr___component_wo_namec                 C   ó.   t ƒ }|  |¡\}}}|  | ¡ t|ƒ¡ d S r	   ©rI   r   r%   Ú__hash__Úid©r   r   rö  r  rk   r   r   r   Útest___hash__Ù	  ó   z&UtilityRegistrationTests.test___hash__c                 C   ó(   t ƒ }|  |¡\}}}|  ||k¡ d S r	   ©rI   r   r(   r  r   r   r   Útest___eq___identityÞ	  ó   z-UtilityRegistrationTests.test___eq___identityc                 C   ó8   t ƒ }|  |¡\}}}|  |¡\}}}|  ||k¡ d S r	   r  ©r   r   rö  r  rk   Úur2r÷  r   r   r   Útest___eq___hitã	  ó   z(UtilityRegistrationTests.test___eq___hitc                 C   ó>   t ƒ }t ƒ }|  |¡\}}}|  |¡\}}}|  ||k¡ d S r	   ©rI   r   r¦   ©r   r   Ú_component2rö  r  rk   r  r÷  r   r   r   Útest___eq___missé	  ó
   z)UtilityRegistrationTests.test___eq___missc                 C   ó(   t ƒ }|  |¡\}}}|  ||k¡ d S r	   r  r  r   r   r   Útest___ne___identityð	  r  z-UtilityRegistrationTests.test___ne___identityc                 C   ó8   t ƒ }|  |¡\}}}|  |¡\}}}|  ||k¡ d S r	   r  r  r   r   r   Útest___ne___hitõ	  r  z(UtilityRegistrationTests.test___ne___hitc                 C   ó>   t ƒ }t ƒ }|  |¡\}}}|  |¡\}}}|  ||k¡ d S r	   r  r  r   r   r   Útest___ne___missû	  r  z)UtilityRegistrationTests.test___ne___missc                 C   ó(   t ƒ }|  |¡\}}}|  ||k ¡ d S r	   r  r  r   r   r   Útest___lt___identity
  r  z-UtilityRegistrationTests.test___lt___identityc                 C   ó8   t ƒ }|  |¡\}}}|  |¡\}}}|  ||k ¡ d S r	   r  r  r   r   r   Útest___lt___hit
  r  z(UtilityRegistrationTests.test___lt___hitc                 C   óH   t ƒ }t ƒ }|  |¡\}}}|  |¡\}}}|d |_|  ||k ¡ d S ©NÚ2©rI   r   r   r(   r  r   r   r   Útest___lt___miss
  ó   
z)UtilityRegistrationTests.test___lt___missc                 C   ó(   t ƒ }|  |¡\}}}|  ||k¡ d S r	   r  r  r   r   r   Útest___le___identity
  r  z-UtilityRegistrationTests.test___le___identityc                 C   ó8   t ƒ }|  |¡\}}}|  |¡\}}}|  ||k¡ d S r	   r  r  r   r   r   Útest___le___hit
  r  z(UtilityRegistrationTests.test___le___hitc                 C   óH   t ƒ }t ƒ }|  |¡\}}}|  |¡\}}}|d |_|  ||k¡ d S r+  r-  r  r   r   r   Útest___le___miss 
  r/  z)UtilityRegistrationTests.test___le___missc                 C   ó(   t ƒ }|  |¡\}}}|  ||k¡ d S r	   r  r  r   r   r   Útest___gt___identity(
  r  z-UtilityRegistrationTests.test___gt___identityc                 C   óH   t ƒ }t ƒ }|  |¡\}}}|  |¡\}}}|d |_|  ||k¡ d S r+  r-  r  r   r   r   Útest___gt___hit-
  r/  z(UtilityRegistrationTests.test___gt___hitc                 C   ó8   t ƒ }|  |¡\}}}|  |¡\}}}|  ||k¡ d S r	   r  r  r   r   r   Útest___gt___miss5
  r  z)UtilityRegistrationTests.test___gt___missc                 C   ó(   t ƒ }|  |¡\}}}|  ||k¡ d S r	   r  r  r   r   r   Útest___ge___identity;
  r  z-UtilityRegistrationTests.test___ge___identityc                 C   óH   t ƒ }t ƒ }|  |¡\}}}|  |¡\}}}|d |_|  ||k¡ d S r+  ©rI   r   r   r¦   r  r   r   r   Útest___ge___miss@
  r/  z)UtilityRegistrationTests.test___ge___missc                 C   óB   t ƒ }|  |¡\}}}|  |¡\}}}|d |_|  ||k¡ d S r+  r-  r  r   r   r   Útest___ge___hitH
  ó
   
z(UtilityRegistrationTests.test___ge___hit)NN)r&   r?   r@   r   r   rñ  rø  r6   r  r	  r  r  r  r  r!  r#  r%  r'  r)  r.  r1  r3  r5  r7  r9  r;  r=  r@  rB  r   r   r   r   rÝ  –	  s6    
	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   rÞ  )Nr   rå   )rf   ræ   )r   ræ   r   r   r   r   R
  rß  z(AdapterRegistrationTests._getTargetClassNc                 C   ól   ddl m} G dd„ d|ƒ}|dƒ}|dƒ}G dd„ dtƒ}|ƒ }d}d	}	|  ¡ }
|
||f||||	ƒ||fS )
Nr   r^   c                   @   r=   )z/AdapterRegistrationTests._makeOne.<locals>.IFooNr>   r   r   r   r   rA   Y
  rB   rA   r    c                   @   r!  )z4AdapterRegistrationTests._makeOne.<locals>._Registryc                 S   rá  râ  r   r
   r   r   r   rä  ^
  r   z=AdapterRegistrationTests._makeOne.<locals>._Registry.__repr__Nrå  r   r   r   r   ræ  ]
  r&  ræ  r   rç  rè  ©r   rU   r<   rA   rK   rã   ræ  r   r   ré  rê  r   r   r   r   V
  ó   þz!AdapterRegistrationTests._makeOnec                 C   rë  )Nr   rì  ©ÚIAdapterRegistration)rð  rí  re   rI  r   )r   rí  rI  r   r   r   Ú+test_class_conforms_to_IAdapterRegistrationi
  rò  zDAdapterRegistrationTests.test_class_conforms_to_IAdapterRegistrationc                 C   ró  )Nr   rô  rH  )rð  rõ  re   rI  r   )r   rõ  rI  Úarr÷  r   r   r   Ú.test_instance_conforms_to_IAdapterRegistrationn
  rù  zGAdapterRegistrationTests.test_instance_conforms_to_IAdapterRegistrationc                 C   rú  )Nc                   @   rû  )z:AdapterRegistrationTests.test___repr__.<locals>._Componentrü  Nr>   r   r   r   r   rý  u
  r¹  rý  zCAdapterRegistration(_REGISTRY, [IBar], IFoo, %r, TEST, 'DOCSTRING')rþ  ©r   rý  r   rK  r  rk   r   r   r   r6   t
  r  z&AdapterRegistrationTests.test___repr__c                 C   r  )Nc                   @   r!  )zKAdapterRegistrationTests.test___repr___provided_wo_name.<locals>._Componentc                 S   rá  r  r   r
   r   r   r   rä  
  r   zTAdapterRegistrationTests.test___repr___provided_wo_name.<locals>._Component.__repr__Nrå  r   r   r   r   rý  ~
  r&  rý  úCAdapterRegistration(_REGISTRY, [IBar], None, %r, TEST, 'DOCSTRING')r  rM  r   r   r   r  }
  r  z7AdapterRegistrationTests.test___repr___provided_wo_namec                 C   r  )Nc                   @   r!  )zLAdapterRegistrationTests.test___repr___component_wo_name.<locals>._Componentc                 S   rá  r  r   r
   r   r   r   rä  Š
  r   zUAdapterRegistrationTests.test___repr___component_wo_name.<locals>._Component.__repr__Nrå  r   r   r   r   rý  ‰
  r&  rý  rN  r  rM  r   r   r   r	  ˆ
  r  z8AdapterRegistrationTests.test___repr___component_wo_namec                 C   r
  r	   r  ©r   r   rK  r  rk   r   r   r   r  “
  r  z&AdapterRegistrationTests.test___hash__c                 C   r  r	   r  rO  r   r   r   r  ˜
  r  z-AdapterRegistrationTests.test___eq___identityc                 C   r  r	   r  ©r   r   rK  r  rk   Úar2r÷  r   r   r   r  �
  r  z(AdapterRegistrationTests.test___eq___hitc                 C   r  r	   r  ©r   r   r  rK  r  rk   rQ  r÷  r   r   r   r  £
  r  z)AdapterRegistrationTests.test___eq___missc                 C   r   r	   r  rO  r   r   r   r!  ª
  r  z-AdapterRegistrationTests.test___ne___identityc                 C   r"  r	   r  rP  r   r   r   r%  ¯
  r  z)AdapterRegistrationTests.test___ne___missc                 C   r$  r	   r  rR  r   r   r   Útest___ne___hit_componentµ
  r  z2AdapterRegistrationTests.test___ne___hit_componentc           
      C   sb   ddl m} G dd„ d|ƒ}|dƒ}tƒ }|  |¡\}}}|  |¡\}}	}	||_|  ||k¡ d S )Nr   r^   c                   @   r=   )z?AdapterRegistrationTests.test___ne___hit_provided.<locals>.IFooNr>   r   r   r   r   rA   ¾
  rB   rA   r>  )rH   r<   rI   r   rj   r(   )
r   r<   rA   rC  r   rK  r  rk   rQ  r÷  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   r^   c                   @   r=   )z?AdapterRegistrationTests.test___ne___hit_required.<locals>.IFooNr>   r   r   r   r   rA   É
  rB   rA   r>  )rH   r<   rI   r   ré   r(   )r   r<   rA   rC  r   r  rK  r  rk   rQ  r÷  r   r   r   Útest___ne___hit_requiredÇ
  s   z1AdapterRegistrationTests.test___ne___hit_requiredc                 C   r&  r	   r  rO  r   r   r   r'  Ó
  r  z-AdapterRegistrationTests.test___lt___identityc                 C   r(  r	   r  rP  r   r   r   r)  Ø
  r  z(AdapterRegistrationTests.test___lt___hitc                 C   r*  r+  r-  rR  r   r   r   r.  Þ
  r/  z)AdapterRegistrationTests.test___lt___missc                 C   r0  r	   r  rO  r   r   r   r1  æ
  r  z-AdapterRegistrationTests.test___le___identityc                 C   r2  r	   r  rP  r   r   r   r3  ë
  r  z(AdapterRegistrationTests.test___le___hitc                 C   r4  r+  r-  rR  r   r   r   r5  ñ
  r/  z)AdapterRegistrationTests.test___le___missc                 C   r6  r	   r  rO  r   r   r   r7  ù
  r  z-AdapterRegistrationTests.test___gt___identityc                 C   r8  r+  r-  rR  r   r   r   r9  þ
  r/  z(AdapterRegistrationTests.test___gt___hitc                 C   r:  r	   r  rP  r   r   r   r;    r  z)AdapterRegistrationTests.test___gt___missc                 C   r<  r	   r  rO  r   r   r   r=    r  z-AdapterRegistrationTests.test___ge___identityc                 C   r>  r+  r?  rR  r   r   r   r@    r/  z)AdapterRegistrationTests.test___ge___missc                 C   rA  r+  r-  rP  r   r   r   rB    rC  z(AdapterRegistrationTests.test___ge___hitr	   )r&   r?   r@   r   r   rJ  rL  r6   r  r	  r  r  r  r  r!  r%  rS  rT  rU  r'  r)  r.  r1  r3  r5  r7  r9  r;  r=  r@  rB  r   r   r   r   rD  P
  s:    
	rD  c                   @   s.   e Zd Zdd„ Zd
dd„Zdd„ Zdd	„ ZdS )ÚSubscriptionRegistrationTestsc                 C   rÞ  )Nr   rg  )rf   rh  )r   rh  r   r   r   r   #  rß  z-SubscriptionRegistrationTests._getTargetClassNc                 C   rE  )
Nr   r^   c                   @   r=   )z4SubscriptionRegistrationTests._makeOne.<locals>.IFooNr>   r   r   r   r   rA   *  rB   rA   r    c                   @   r!  )z9SubscriptionRegistrationTests._makeOne.<locals>._Registryc                 S   rá  râ  r   r
   r   r   r   rä  /  r   zBSubscriptionRegistrationTests._makeOne.<locals>._Registry.__repr__Nrå  r   r   r   r   ræ  .  r&  ræ  r   rç  rè  rF  r   r   r   r   '  rG  z&SubscriptionRegistrationTests._makeOnec                 C   rë  )Nr   rì  ©Ú ISubscriptionAdapterRegistration)rð  rí  re   rX  r   )r   rí  rX  r   r   r   Ú7test_class_conforms_to_ISubscriptionAdapterRegistration:  rò  zUSubscriptionRegistrationTests.test_class_conforms_to_ISubscriptionAdapterRegistrationc                 C   ró  )Nr   rô  rW  )rð  rõ  re   rX  r   )r   rõ  rX  Úsarr÷  r   r   r   Ú:test_instance_conforms_to_ISubscriptionAdapterRegistration?  rù  zXSubscriptionRegistrationTests.test_instance_conforms_to_ISubscriptionAdapterRegistrationr	   )r&   r?   r@   r   r   rY  r[  r   r   r   r   rV  !  s
    
rV  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   rÞ  )Nr   r�  )rf   rŽ  )r   rŽ  r   r   r   r   H  rß  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   r^   c                   @   r=   )z/HandlerRegistrationTests._makeOne.<locals>.IFooNr>   r   r   r   r   rA   O  rB   rA   c                   @   r!  )z4HandlerRegistrationTests._makeOne.<locals>._Registryc                 S   rá  râ  r   r
   r   r   r   rä  S  r   z=HandlerRegistrationTests._makeOne.<locals>._Registry.__repr__Nrå  r   r   r   r   ræ  R  r&  ræ  r   rç  rè  )
r   rU   r<   rA   rK   ræ  r   r   ré  rê  r   r   r   r   L  s   þz!HandlerRegistrationTests._makeOnec                 C   rë  )Nr   rì  ©ÚIHandlerRegistration)rð  rí  re   r^  r   )r   rí  r^  r   r   r   Ú+test_class_conforms_to_IHandlerRegistration^  rò  zDHandlerRegistrationTests.test_class_conforms_to_IHandlerRegistrationc                 C   ró  )Nr   rô  r]  )rð  rõ  re   r^  r   )r   rõ  r^  Úhrr÷  r   r   r   Ú.test_instance_conforms_to_IHandlerRegistrationc  rù  zGHandlerRegistrationTests.test_instance_conforms_to_IHandlerRegistrationc                 C   sN   dd„ }|   |¡\}}}|  |j|u ¡ |  |j|ju ¡ |  |jd u ¡ d S )Nc                 S   rO   r	   rP   rç   r   r   r   rR   j  rS   z:HandlerRegistrationTests.test_properties.<locals>._factory)r   r(   ÚhandlerrV   rj   )r   rR   r`  r÷  r   r   r   Útest_propertiesi  s
   z(HandlerRegistrationTests.test_propertiesc                 C   ó:   G dd„ dt ƒ}|  |ƒ ¡\}}}|  t|ƒd| ¡ d S )Nc                   @   rû  )zGHandlerRegistrationTests.test___repr___factory_w_name.<locals>._Factoryrü  Nr>   r   r   r   r   rë   r  r¹  rë   ú=HandlerRegistration(_REGISTRY, [IFoo], %r, TEST, 'DOCSTRING')rþ  ©r   rë   r`  r  rk   r   r   r   Útest___repr___factory_w_nameq  s   
ÿÿz5HandlerRegistrationTests.test___repr___factory_w_namec                 C   rd  )Nc                   @   r!  )zHHandlerRegistrationTests.test___repr___factory_wo_name.<locals>._Factoryc                 S   rá  r  r   r
   r   r   r   rä  {  r   zQHandlerRegistrationTests.test___repr___factory_wo_name.<locals>._Factory.__repr__Nrå  r   r   r   r   rë   z  r&  rë   re  rþ  rf  r   r   r   Útest___repr___factory_wo_namey  s   
ÿÿz6HandlerRegistrationTests.test___repr___factory_wo_namer	   )
r&   r?   r@   r   r   r_  ra  rc  rg  rh  r   r   r   r   r\  F  s    
r\  c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚPersistentAdapterRegistryc                 C   sF   | j  ¡ }t|ƒD ]}|| jv s| d¡r| |¡ q	| dd ¡ |S )NÚ_vÚro)Ú__dict__Úcopyr›   Ú
_delegatedÚ
startswithÚpop)r   ÚstateÚkr   r   r   Ú__getstate__„  s   

€z&PersistentAdapterRegistry.__getstate__c                 C   s6   |  dd¡}| j |¡ |  ¡  || _| j | ¡ d S )Nr'   r   )rp  rl  ÚupdateÚ_createLookupr'   rW  rV  )r   rq  Úbasesr   r   r   Ú__setstate__Œ  s
   z&PersistentAdapterRegistry.__setstate__N)r&   r?   r@   rs  rw  r   r   r   r   ri  ‚  s    ri  c                   @   r!  )ÚPersistentComponentsc                 C   s   t ƒ | _t ƒ | _d S r	   )ri  r*   r+   r
   r   r   r   Ú_init_registries—  s   z%PersistentComponents._init_registriesN)r&   r?   r@   ry  r   r   r   r   rx  “  s    rx  c                   @   r=   )ÚPersistentDictComponentsNr>   r   r   r   r   rz  ›  rE   rz  c                   @   r!  )ÚPersistentComponentsDictc                 C   s   t  | ¡ t | |¡ d S r	   )r‘   r·   rx  )r   r   r   r   r   r·   ¢  s   
z!PersistentComponentsDict.__init__Nr%  r   r   r   r   r{     ó    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   )rx  r
   r   r   r   r   ¨  rˆ  z!TestPersistentComponents._makeOnec                 C   s   d S r	   r   ©r   Úmader   r   r   Ú_check_equality_after_pickle«  r   z5TestPersistentComponents._check_equality_after_picklec                 C   s<   dd l }|  ¡ }| |¡ | | |¡¡}|  |jd¡ d S ©Nr   r   )Úpickler   ÚdumpsÚloadsr%   r&   )r   r‚  r0   Ú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   rI   rJ   r   r-  rÖ   r„  rƒ  r%   r&   ÚassertIsNotNoner€  )r   r‚  r0   Ú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                   @   ó$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTestPersistentDictComponentsc                 C   r   r	   )rz  r
   r   r   r   r   Ó  r   z,TestPersistentDictComponents._getTargetClassc                 C   s   |   ¡ dd�}d|d< |S )Nr   r¿   é*   rÅ   r   r5   r   r   r   r   Ö  s   z%TestPersistentDictComponents._makeOnec                 C   s    |   d|¡ |  |d d¡ d S )NrÅ   rŒ  )rÍ  r%   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                   @   r!  )ÚTestPersistentComponentsDictc                 C   r   r	   )r{  r
   r   r   r   r   á  r   z,TestPersistentComponentsDict._getTargetClassN)r&   r?   r@   r   r   r   r   r   r�  ß  r|  r�  c                   @   rŠ  )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__ì  r   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   )r¸  Úunittestr   r   r$   r   rf   r   ÚTestCaser   rÜ  rÝ  rD  rV  r\  ri  rx  r‘   rz  r{  r}  r‹  r�  rI   r   r   r   r   r   Ú<module>   sP                       ; R%<+