o
    Êó·iÅ ã                   @   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!ƒ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ß„ Zq	àdèdádâ„Zrdãdä„ Zsdådæ„ Zt‡  ZuS )éÚComponentsTestsc                 C   ó   t S ©Nr   ©Úself© r   úhC:\Users\psant\Downloads\PAF backend\school\venv\Lib\site-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¡ |  |j|¡ |  |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__ÚassertIsInstanceÚ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   r1   r/   r   r   r   Útest_ctor_w_base7   s   
z ComponentsTests.test_ctor_w_basec                 C   s   |   d¡}|  t|ƒd¡ d S )Nr#   z<Components testing>©r   r%   Úrepr©r   r/   r   r   r   Útest___repr__?   s   
zComponentsTests.test___repr__c                 C   sl   |   d¡}|   d¡}|   ¡ }||f|_|  |j||f¡ |  |jj|j|jf¡ |  |jj|j|jf¡ d S )NÚbase1Úbase2)r   r'   r%   r)   r*   )r   r7   r8   r/   r   r   r   Útest_assign_to___bases__E   s   




ÿ

ÿz(ComponentsTests.test_assign_to___bases__c           	      C   sˆ   ddl m} ddl m} G dd„ d|ƒ}|dƒ}|dƒG dd„ dƒƒ}|ƒ }d	}|  ¡ }|j|||d
� |  |j|df ||d f¡ d S )Nr   ©ÚInterfaceClass©Únamedc                   @   ó   e Zd ZdS )zFComponentsTests.test_registerUtility_with_component_name.<locals>.IFooN©r&   Ú
__module__Ú__qualname__r   r   r   r   ÚIFooT   ó    rB   Úfooc                   @   r>   )zEComponentsTests.test_registerUtility_with_component_name.<locals>.FooNr?   r   r   r   r   ÚFooY   ó    rE   Úinfo©rG   )Úzope.interface.declarationsr;   r=   r   ÚregisterUtilityr%   r+   )	r   r;   r=   rB   ÚifoorE   rD   Ú_infor/   r   r   r   Ú(test_registerUtility_with_component_nameP   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   Ú_factoryg   ó   zQComponentsTests.test_registerUtility_both_factory_and_component.<locals>._factory©Ú	componentÚfactory)Úobjectr   ÚassertRaisesÚ	TypeErrorrJ   ©r   rR   Ú_to_regr/   r   r   r   Ú/test_registerUtility_both_factory_and_componentf   ó   

ÿ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 | | |¡ |  |	j||f ||d f¡ |  |	jjd | d	 |f¡ |  t|ƒd
¡ |d \}}|\}|  |i ¡ |  ||¡ |  |j|¡ |  
|jj|	¡ |  
|jj|¡ |  
|jj|¡ |  
|jj|¡ |  
|jj|¡ |  |jj¡ d S )Nr   r:   ©Ú
Registered©ÚUtilityRegistrationc                   @   r>   )z>ComponentsTests.test_registerUtility_w_component.<locals>.IFooNr?   r   r   r   r   rB   s   rC   rB   rG   r   Ú é   )rI   r;   Úzope.interface.interfacesr_   Úzope.interface.registryra   rW   r   r!   rJ   ÚassertIsr*   Ú	_adaptersr%   r+   Ú_subscribersÚlenr(   r   Úprovidedr   rU   rG   ÚassertIsNonerV   )r   r;   r_   ra   rB   rK   rL   Ú_namer[   r/   r    r   r   r   Úeventr   r   r   Ú test_registerUtility_w_componentn   s<   ÿÿz0ComponentsTests.test_registerUtility_w_componentc                    sN  ddl m} ddlm} ddlm} G dd„ d|ƒ}|dƒ}d}d}tƒ ‰ ‡ fd	d
„}|  ¡ }	|  ¡ \}
}|
� |	j	d ||||d� W d   ƒ n1 sLw   Y  |  
t|ƒd¡ |d \}}|\}|  
|i ¡ |  ||¡ |  |j|¡ |  |jj|	¡ |  |jj|¡ |  |jj|¡ |  |jjˆ ¡ |  |jj|¡ |  |jj|¡ d S )Nr   r:   r^   r`   c                   @   r>   )z<ComponentsTests.test_registerUtility_w_factory.<locals>.IFooNr?   r   r   r   r   rB   ”   rC   rB   rG   r   c                      ó   ˆ S r	   r   r   ©r[   r   r   rR   œ   r   z@ComponentsTests.test_registerUtility_w_factory.<locals>._factory©rV   rc   )rI   r;   rd   r_   re   ra   rW   r   r!   rJ   r%   ri   r(   rf   r   rj   r   rU   rG   rV   )r   r;   r_   ra   rB   rK   rL   rl   rR   r/   r    r   r   r   rm   r   rp   r   Útest_registerUtility_w_factory�   s4   ÿz.ComponentsTests.test_registerUtility_w_factoryc                 C   s>   G dd„ dƒ}d}d}|ƒ }|   ¡ }|  t|j|d ||¡ d S )Nc                   @   r>   )zGComponentsTests.test_registerUtility_no_provided_available.<locals>.FooNr?   r   r   r   r   rE   ²   rC   rE   rG   r   )r   rX   rY   rJ   )r   rE   rL   rl   r[   r/   r   r   r   Ú*test_registerUtility_no_provided_available°   s   ÿz:ComponentsTests.test_registerUtility_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|ƒ}G dd	„ d	ƒ}|dƒ}d
}d}	|ƒ }
||
|ƒ |  ¡ }|  ¡ \}}|� | 	|
d |	|¡ W d   ƒ n1 sVw   Y  |  
t|ƒd¡ |d \}}|\}|  
|i ¡ |  ||¡ |  |j|¡ |  |jj|¡ |  |jj|¡ |  |jj|	¡ |  |jj|
¡ |  |jj|¡ |  |jj¡ d S )Nr   r:   ©ÚdirectlyProvidesr^   r`   c                   @   r>   )z>ComponentsTests.test_registerUtility_wo_provided.<locals>.IFooNr?   r   r   r   r   rB   Â   rC   rB   c                   @   r>   )z=ComponentsTests.test_registerUtility_wo_provided.<locals>.FooNr?   r   r   r   r   rE   Å   rC   rE   rG   r   rc   )rI   r;   ru   rd   r_   re   ra   r   r!   rJ   r%   ri   r(   rW   rf   r   rj   r   rU   rG   rk   rV   )r   r;   ru   r_   ra   rB   rE   rK   rL   rl   r[   r/   r    r   r   r   rm   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   rB   á   rC   rB   rG   r   )rI   r;   rW   r   rJ   r!   r%   ri   ©
r   r;   rB   rK   rL   rl   r[   r/   r    r   r   r   r   Ú,test_registerUtility_duplicates_existing_regÞ   s   ÿz<ComponentsTests.test_registerUtility_duplicates_existing_regc                 C   sÜ   ddl m} G dd„ d|ƒ}|dƒ}d}d}d}tƒ }|  ¡ }| ||||¡ |  ¡ \}	}
|	� | ||||¡ W 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   rB   ò   rC   rB   Zinfo1Zinfo2r   é   rb   ©rI   r;   rW   r   rJ   r!   r%   ri   r+   r*   rh   )r   r;   rB   rK   Z_info1Z_info2rl   r[   r/   r    r   r   r   r   Ú%test_registerUtility_w_different_infoï   s(   ÿÿÿz5ComponentsTests.test_registerUtility_w_different_infoc                 C   s   ddl m} G dd„ d|ƒ}|dƒ}d}d}d}tƒ }tƒ }|  ¡ }	|	 ||||¡ |  ¡ \}
}|
� |	 ||||¡ W 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   rB     rC   rB   rG   Úname1Úname2rc   rb   rz   ©r   r;   rB   rK   rL   Ú_name1Ú_name2Z
_other_regr[   r/   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 ¡ |  ||¡ |  |j|¡ |  |jj|¡ |  |jj|¡ |  |jj|¡ |  |jj|	¡ |  |jj|¡ |  |jj¡ |d \}}|\}|  |i ¡ |  ||¡ |  |j|¡ |  |jj|¡ |  |jj|¡ |  |jj|¡ |  |jj|
¡ |  |jj|¡ |  |jj¡ d S )Nr   r:   r^   ©ÚUnregisteredr`   c                   @   r>   )zHComponentsTests.test_registerUtility_replaces_existing_reg.<locals>.IFooNr?   r   r   r   r   rB   $  rC   rB   rG   r   ry   rc   )rI   r;   rd   r_   rƒ   re   ra   rW   r   rJ   r!   r%   ri   r(   rf   r   rj   r   rU   rG   rk   rV   )r   r;   r_   rƒ   ra   rB   rK   rL   rl   Z_beforeZ_afterr/   r    r   r   r   rm   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   rB   K  rC   rB   rG   r|   r}   rb   )	rI   r;   rW   r   rJ   r!   r%   r*   rh   ©r   r;   rB   rK   rL   r   r€   r[   r/   r    r   r   r   r   Ú&test_registerUtility_w_existing_subscrH  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   rB   ]  rC   rB   rG   r   F)rI   r;   rW   r   r!   rJ   r%   ri   rw   r   r   r   Útest_registerUtility_wo_eventZ  s   ÿz-ComponentsTests.test_registerUtility_wo_eventc                 C   sz   G 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                    s8   |  j d7  _ tƒ j|Ž  | j dkrt| jƒ| _d S d S )Nrc   )Ú	reg_countÚsuperrJ   Údictr+   ©r   r   ©Ú	__class__r   r   rJ   p  s   

ÿÿztComponentsTests.test_registerUtility_changes_object_identity_after.<locals>.CompThatChangesAfter1Reg.registerUtility©r&   r@   rA   r‰   rJ   Ú__classcell__r   r   r�   r   ÚCompThatChangesAfter1Regm  ó    r‘   rc   c                   @   r>   )zPComponentsTests.test_registerUtility_changes_object_identity_after.<locals>.IFooNr?   r   r   r   r   rB   }  rC   rB   ry   ©r   rJ   rW   r   r%   ri   ÚlistÚregisteredUtilities)r   r‘   r/   rB   r   r   r   Ú2test_registerUtility_changes_object_identity_afterj  s   zBComponentsTests.test_registerUtility_changes_object_identity_afterc                 C   s°   G 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                    s4   |  j d7  _ | j dkrt| jƒ| _tƒ j|Ž  d S )Nrc   ry   )r‰   r‹   r+   rŠ   rJ   rŒ   r�   r   r   rJ   ‰  s   
ÿzuComponentsTests.test_registerUtility_changes_object_identity_before.<locals>.CompThatChangesAfter2Reg.registerUtilityr�   r   r   r�   r   ÚCompThatChangesAfter2Reg†  r’   r—   rc   c                   @   r>   )zQComponentsTests.test_registerUtility_changes_object_identity_before.<locals>.IFooNr?   r   r   r   r   rB   —  rC   rB   ry   c                   @   r>   )zQComponentsTests.test_registerUtility_changes_object_identity_before.<locals>.IBarNr?   r   r   r   r   ÚIBar�  rC   r˜   é   r“   )r   r—   r/   rB   r˜   r   r   r   Ú3test_registerUtility_changes_object_identity_beforeƒ  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   Ú<test_unregisterUtility_wo_factory_nor_component_nor_provided£  s   

ÿzLComponentsTests.test_unregisterUtility_wo_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   )rW   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   rB   ³  rC   rB   r   )rI   r;   rW   r   r!   r›   ÚassertFalse)
r   r;   rB   rK   rl   r[   r/   r    r   Úunregr   r   r   Ú'test_unregisterUtility_w_component_miss°  s   ÿ
z7ComponentsTests.test_unregisterUtility_w_component_missc                 C   sl  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¡ |  |jj¡ |  t|
ƒd¡ |
d \}}|\}|  |i ¡ |  ||¡ |  |j|¡ |  |jj|¡ |  |jj|¡ |  |jj|¡ |  |jj|¡ |  |jj¡ d S )	Nr   r:   r‚   r`   c                   @   r>   )z@ComponentsTests.test_unregisterUtility_w_component.<locals>.IFooNr?   r   r   r   r   rB   Å  rC   rB   r   rc   )rI   r;   rd   rƒ   re   ra   rW   r   rJ   r!   r›   Ú
assertTruerž   r*   rg   ZassertNotInr+   rh   r%   ri   r(   rf   r   rj   r   rU   rk   rV   )r   r;   rƒ   ra   rB   rK   rl   r[   r/   r    r   rŸ   r   r   rm   r   r   r   Ú"test_unregisterUtility_w_componentÀ  s8   ÿ
z2ComponentsTests.test_unregisterUtility_w_componentc                    sZ  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 ¡ |  ||¡ |  |j|¡ |  |jj|	¡ |  |jj|¡ |  |jj|¡ |  |jjˆ ¡ |  |jj|¡ d S )Nr   r:   r‚   r`   c                   @   r>   )z>ComponentsTests.test_unregisterUtility_w_factory.<locals>.IFooNr?   r   r   r   r   rB   å  rC   rB   rG   r   c                      ro   r	   r   r   rp   r   r   rR   í  r   zBComponentsTests.test_unregisterUtility_w_factory.<locals>._factoryrq   rc   )rI   r;   rd   rƒ   re   ra   rW   r   rJ   r!   r›   r¡   r%   ri   r(   rf   r   rj   r   rU   rV   )r   r;   rƒ   ra   rB   rK   rL   rl   rR   r/   r    r   rŸ   r   r   rm   r   rp   r   Ú test_unregisterUtility_w_factoryà  s6   ÿ
z0ComponentsTests.test_unregisterUtility_w_factoryc                 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	ƒ}|dƒ}d
}d}	|ƒ }
||
|ƒ |  ¡ }| |
||	|¡ |  	¡ \}}|� | 
|
d |	¡}W d   ƒ n1 s]w   Y  |  |¡ |  t|ƒd¡ |d \}}|\}|  |i ¡ |  ||¡ |  |j|¡ |  |jj|¡ |  |jj|¡ |  |jj|	¡ |  |jj|
¡ |  |jj|¡ |  |jj¡ d S )Nr   r:   rt   r‚   r`   c                   @   r>   )zIComponentsTests.test_unregisterUtility_wo_explicit_provided.<locals>.IFooNr?   r   r   r   r   rB     rC   rB   c                   @   r>   )zHComponentsTests.test_unregisterUtility_wo_explicit_provided.<locals>.FooNr?   r   r   r   r   rE     rC   rE   rG   r   rc   ©rI   r;   ru   rd   rƒ   re   ra   r   rJ   r!   r›   r¡   r%   ri   r(   rW   rf   r   rj   r   rU   rG   rk   rV   ©r   r;   ru   rƒ   ra   rB   rE   rK   rL   rl   r[   r/   r    r   rŸ   r   r   rm   r   r   r   Ú+test_unregisterUtility_wo_explicit_provided  s<   
ÿ
z;ComponentsTests.test_unregisterUtility_wo_explicit_providedc                 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	ƒ}|dƒ}d
}d}	|ƒ }
||
|ƒ |  ¡ }| |
||	|¡ |  	¡ \}}|� |j
||	d�}W d   ƒ n1 s]w   Y  |  |¡ |  t|ƒd¡ |d \}}|\}|  |i ¡ |  ||¡ |  |j|¡ |  |jj|¡ |  |jj|¡ |  |jj|	¡ |  |jj|
¡ |  |jj|¡ |  |jj¡ d S )Nr   r:   rt   r‚   r`   c                   @   r>   )zLComponentsTests.test_unregisterUtility_wo_component_or_factory.<locals>.IFooNr?   r   r   r   r   rB   ,  rC   rB   c                   @   r>   )zKComponentsTests.test_unregisterUtility_wo_component_or_factory.<locals>.FooNr?   r   r   r   r   rE   /  rC   rE   rG   r   ©rj   r   rc   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   rB   N  rC   rB   rG   r|   r}   rb   ©
rI   r;   rW   r   rJ   r!   r›   r%   r*   rh   r…   r   r   r   Ú(test_unregisterUtility_w_existing_subscrK  ó   ÿ"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   rB   a  rC   rB   rG   r|   r}   rb   )
rI   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_subs_non_hashable_fresh_cache.<locals>.IFooNr?   r   r   r   r   rB   w  rC   rB   rG   r|   r}   rb   )rI   r;   re   r®   r‹   r   rJ   r!   r›   r%   r*   rh   )r   r;   r®   rB   rK   rL   r   r€   r[   r/   r    r   r   r   r   Ú?test_unregisterUtility_w_existing_subs_non_hashable_fresh_cacheq  s    ÿ"zOComponentsTests.test_unregisterUtility_w_existing_subs_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   rB   �  rC   rB   rG   r|   r}   r1   )rI   r;   r‹   r   rJ   Ú__init__r!   r›   r%   ri   r*   rh   r…   r   r   r   Ú?test_unregisterUtility_w_existing_subscr_non_hashable_reinittedˆ  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   rB   §  rC   rB   rG   r|   r}   rb   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>   )z[ComponentsTests.test_unregisterUtility_w_existing_subscr_oter_comp_mixed_hash.<locals>.IFooNr?   r   r   r   r   rB   ¼  rC   rB   rG   r|   r}   rb   )rI   r;   rW   r‹   r   rJ   r!   r›   r%   r*   rh   r~   r   r   r   Ú=test_unregisterUtility_w_existing_subscr_oter_comp_mixed_hash¹  s$   ÿÿzMComponentsTests.test_unregisterUtility_w_existing_subscr_oter_comp_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¡ |  |
d |¡ |  |
d j|	¡ |  |
d j|¡ |  |
d j|¡ |  |
d j|¡ |  |
d j|¡ |  |
d j¡ |  |
d |¡ |  |
d j|	¡ |  |
d j|¡ |  |
d j|¡ |  |
d j|¡ |  |
d j|¡ |  |
d j¡ d S )Nr   r:   r`   c                   @   r>   )z?ComponentsTests.test_registeredUtilities_notempty.<locals>.IFooNr?   r   r   r   r   rB   Ø  rC   rB   rG   r|   r}   c                 S   ó   | j S r	   ©r   ©Úrr   r   r   Ú<lambda>ã  ó    zCComponentsTests.test_registeredUtilities_notempty.<locals>.<lambda>©Úkeyry   rc   )rI   r;   re   ra   rW   r   rJ   Úsortedr•   r%   ri   r(   rf   r   rj   r   rU   rG   rk   rV   )r   r;   ra   rB   rK   rL   r   r€   r[   r/   Úregr   r   r   Ú!test_registeredUtilities_notemptyÔ  s6   z1ComponentsTests.test_registeredUtilities_notemptyc                 C   s@   ddl m} G dd„ d|ƒ}|dƒ}|  ¡ }|  | |¡¡ d S )Nr   r:   c                   @   r>   )z?ComponentsTests.test_queryUtility_miss_no_default.<locals>.IFooNr?   r   r   r   r   rB   ÷  rC   rB   )rI   r;   r   rk   ÚqueryUtility©r   r;   rB   rK   r/   r   r   r   Ú!test_queryUtility_miss_no_defaultô  s
   z1ComponentsTests.test_queryUtility_miss_no_defaultc                 C   sL   ddl m} G dd„ d|ƒ}|dƒ}|  ¡ }tƒ }|  |j||d�|¡ d S )Nr   r:   c                   @   r>   )z>ComponentsTests.test_queryUtility_miss_w_default.<locals>.IFooNr?   r   r   r   r   rB     rC   rB   ©Údefault)rI   r;   r   rW   rf   rÂ   )r   r;   rB   rK   r/   Ú_defaultr   r   r   Ú test_queryUtility_miss_w_defaultþ  s   z0ComponentsTests.test_queryUtility_miss_w_defaultc                 C   óT   ddl m} G dd„ d|ƒ}|dƒ}tƒ }|  ¡ }| ||¡ |  | |¡|¡ d S )Nr   r:   c                   @   r>   )z3ComponentsTests.test_queryUtility_hit.<locals>.IFooNr?   r   r   r   r   rB     rC   rB   )rI   r;   rW   r   rJ   rf   rÂ   ©r   r;   rB   rK   r[   r/   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   rB     rC   rB   )rI   r;   rd   rÎ   r   rX   Ú
getUtility)r   r;   rÎ   rB   rK   r/   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   rB   #  rC   rB   )rI   r;   rW   r   rJ   rf   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   rB   /  rC   rB   )rI   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   rB   9  rC   rB   r|   r}   r¸   )rI   r;   rW   r   rJ   r%   r¿   rÓ   ©r   r;   rB   rK   r   r€   r[   r/   r   r   r   Útest_getUtilitiesFor_hit6  s   ÿz(ComponentsTests.test_getUtilitiesFor_hitc                 C   rÒ   )Nr   r:   c                   @   r>   )zDComponentsTests.test_getAllUtilitiesRegisteredFor_miss.<locals>.IFooNr?   r   r   r   r   rB   I  rC   rB   )rI   r;   r   r%   r”   ÚgetAllUtilitiesRegisteredForrÃ   r   r   r   Ú&test_getAllUtilitiesRegisteredFor_missF  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   rB   S  rC   rB   r|   r}   r¸   )rI   r;   rW   r   rJ   r%   r”   rØ   rÖ   r   r   r   Ú%test_getAllUtilitiesRegisteredFor_hitP  s   ÿz5ComponentsTests.test_getAllUtilitiesRegisteredFor_hitc           	      C   s�   ddl m} ddl m} G dd„ d|ƒ}|dƒ}|dƒ}|dƒG dd	„ d	ƒƒ}d
}|  ¡ }|j||f||d� |  |j|f|df ||f¡ d S )Nr   r:   r<   c                   @   r>   )zFComponentsTests.test_registerAdapter_with_component_name.<locals>.IFooNr?   r   r   r   r   rB   d  rC   rB   r˜   rD   c                   @   r>   )zEComponentsTests.test_registerAdapter_with_component_name.<locals>.FooNr?   r   r   r   r   rE   j  rF   rE   rG   rH   )rI   r;   r=   r   ÚregisterAdapterr%   r,   )	r   r;   r=   rB   rK   ÚibarrE   rL   r/   r   r   r   Ú(test_registerAdapter_with_component_name`  s   þz8ComponentsTests.test_registerAdapter_with_component_namec                 C   sŒ  ddl m} ddlm} ddlm} G dd„ d|ƒ}|dƒ}|dƒ}d}d	}d
d„ }	|  ¡ }
|  ¡ \}}|� |
 |	|f|||¡ W d   ƒ n1 sKw   Y  |  	|
j
jd | | | |	¡ |  |
j|f||f |	|f¡ |  t|ƒd¡ |d \}}|\}|  |i ¡ |  ||¡ |  |j|¡ |  	|jj|
¡ |  	|jj|¡ |  |jj|f¡ |  	|jj|¡ |  	|jj|¡ |  	|jj|	¡ d S )Nr   r:   r^   ©ÚAdapterRegistrationc                   @   r>   )zSComponentsTests.test_registerAdapter_w_explicit_provided_and_required.<locals>.IFooNr?   r   r   r   r   rB   {  rC   rB   r˜   rG   r   c                 S   rO   r	   rP   ©Úcontextr   r   r   rR   ƒ  rS   zWComponentsTests.test_registerAdapter_w_explicit_provided_and_required.<locals>._factoryrc   ©rI   r;   rd   r_   re   rß   r   r!   rÛ   rf   r)   rg   r%   r,   ri   r(   rW   r   rj   Úrequiredr   rG   rV   )r   r;   r_   rß   rB   rK   rÜ   rL   rl   rR   r/   r    r   r   r   rm   r   r   r   Ú5test_registerAdapter_w_explicit_provided_and_requiredv  sB   ÿþÿzEComponentsTests.test_registerAdapter_w_explicit_provided_and_requiredc                 C   s`   ddl m} G dd„ d|ƒ}|dƒ}d}d}G dd	„ d	ƒ}|  ¡ }| jt|j||f||d
� d S )Nr   r:   c                   @   r>   )zHComponentsTests.test_registerAdapter_no_provided_available.<locals>.IFooNr?   r   r   r   r   rB   Ÿ  rC   rB   r˜   rG   r   c                   @   r>   )zLComponentsTests.test_registerAdapter_no_provided_available.<locals>._FactoryNr?   r   r   r   r   Ú_Factory¦  rC   rå   ©r   rG   ©rI   r;   r   rX   rY   rÛ   )r   r;   rB   rÜ   rL   rl   rå   r/   r   r   r   Ú*test_registerAdapter_no_provided_availableœ  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
}	||ƒG dd„ dƒƒ}
|  ¡ }|  ¡ \}}|� |j	|
|f|	|d� W d   ƒ n1 sXw   Y  |  
|jjd | | |	 |
¡ |  |j|f||	f |
|f¡ |  t|ƒd¡ |d \}}|\}|  |i ¡ |  ||¡ |  |j|¡ |  
|jj|¡ |  
|jj|¡ |  |jj|f¡ |  
|jj|	¡ |  
|jj|¡ |  
|jj|
¡ d S )Nr   r:   ©Úimplementerr^   rÞ   c                   @   r>   )zGComponentsTests.test_registerAdapter_wo_explicit_provided.<locals>.IFooNr?   r   r   r   r   rB   ³  rC   rB   r˜   rG   r   c                   @   r>   )zKComponentsTests.test_registerAdapter_wo_explicit_provided.<locals>._FactoryNr?   r   r   r   r   rå   »  rF   rå   ræ   rc   )rI   r;   rê   rd   r_   re   rß   r   r!   rÛ   rf   r)   rg   r%   r,   ri   r(   rW   r   rj   rã   r   rG   rV   )r   r;   rê   r_   rß   rB   rK   rÜ   rL   rl   rå   r/   r    r   r   r   rm   r   r   r   Ú)test_registerAdapter_wo_explicit_provided­  sF   ÿþÿz9ComponentsTests.test_registerAdapter_wo_explicit_providedc                 C   s^   ddl m} G dd„ d|ƒ}|dƒ}d}d}G dd„ dƒ}|  ¡ }| jt|j||||d	� d S )
Nr   r:   c                   @   r>   )zHComponentsTests.test_registerAdapter_no_required_available.<locals>.IFooNr?   r   r   r   r   rB   Ù  rC   rB   rG   r   c                   @   r>   )zLComponentsTests.test_registerAdapter_no_required_available.<locals>._FactoryNr?   r   r   r   r   rå   á  rC   rå   ©rj   r   rG   rç   ©r   r;   rB   rK   rL   rl   rå   r/   r   r   r   Ú*test_registerAdapter_no_required_availableÖ  s   
ÿz:ComponentsTests.test_registerAdapter_no_required_availablec           	   	   C   sh   ddl m} G dd„ d|ƒ}|dƒ}|dƒ}d}d}G dd	„ d	ƒ}|  ¡ }| jt|j|||||d
� d S )Nr   r:   c                   @   r>   )zEComponentsTests.test_registerAdapter_w_invalid_required.<locals>.IFooNr?   r   r   r   r   rB   ë  rC   rB   r˜   rG   r   c                   @   r>   )zIComponentsTests.test_registerAdapter_w_invalid_required.<locals>._FactoryNr?   r   r   r   r   rå   ó  rC   rå   rì   rç   )	r   r;   rB   rK   rÜ   rL   rl   rå   r/   r   r   r   Ú'test_registerAdapter_w_invalid_requiredè  s   
ÿz7ComponentsTests.test_registerAdapter_w_invalid_requiredc                 C   s˜  ddl m} ddlm} ddlm} ddlm} G dd„ d|ƒ}|dƒ}d}d	}G d
d„ dƒ}	|  ¡ }
|  	¡ \}}|� |
j
|	d g|||d� W d   ƒ n1 sQw   Y  |  |
jjd | | | |	¡ |  |
j|f||f |	|f¡ |  t|ƒd¡ |d \}}|\}|  |i ¡ |  ||¡ |  |j|¡ |  |jj|
¡ |  |jj|¡ |  |jj|f¡ |  |jj|¡ |  |jj|¡ |  |jj|	¡ d S )Nr   r:   r   r^   rÞ   c                   @   r>   )zMComponentsTests.test_registerAdapter_w_required_containing_None.<locals>.IFooNr?   r   r   r   r   rB      rC   rB   rG   r   c                   @   r>   )zQComponentsTests.test_registerAdapter_w_required_containing_None.<locals>._FactoryNr?   r   r   r   r   rå     rC   rå   rì   rc   )rI   r;   Zzope.interface.interfacer   rd   r_   re   rß   r   r!   rÛ   rf   r)   rg   r%   r,   ri   r(   rW   r   rj   rã   r   rG   rV   )r   r;   r   r_   rß   rB   rK   rL   rl   rå   r/   r    r   r   r   rm   r   r   r   Ú/test_registerAdapter_w_required_containing_Noneú  sH   ÿÿþþ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ƒ}||ƒG dd„ dƒƒ}||ƒ}|  ¡ }|  	¡ \}}|� |j
||g||
|	d� W d   ƒ n1 sjw   Y  |  |jjd | | |
 |¡ |  |j|f||
f ||	f¡ |  t|ƒd¡ |d \}}|\}|  |i ¡ |  ||¡ |  |j|¡ |  |jj|¡ |  |jj|¡ |  |jj|f¡ |  |jj|
¡ |  |jj|	¡ |  |jj|¡ d S )Nr   r:   )ÚimplementedByré   r^   rÞ   c                   @   r>   )zNComponentsTests.test_registerAdapter_w_required_containing_class.<locals>.IFooNr?   r   r   r   r   rB   +  rC   rB   r˜   rG   r   c                   @   r>   )zRComponentsTests.test_registerAdapter_w_required_containing_class.<locals>._FactoryNr?   r   r   r   r   rå   3  rC   rå   c                   @   r>   )zRComponentsTests.test_registerAdapter_w_required_containing_class.<locals>._ContextNr?   r   r   r   r   Ú_Context6  rF   rò   rì   rc   )rI   r;   rñ   rê   rd   r_   re   rß   r   r!   rÛ   rf   r)   rg   r%   r,   ri   r(   rW   r   rj   rã   r   rG   rV   )r   r;   rñ   rê   r_   rß   rB   rK   rÜ   rL   rl   rå   rò   Z	_ctx_implr/   r    r   r   r   rm   r   r   r   Ú0test_registerAdapter_w_required_containing_class$  sR   ÿÿþþz@ComponentsTests.test_registerAdapter_w_required_containing_classc                 C   sŠ   ddl m} G dd„ d|ƒ}|dƒ}d}d}G dd„ dƒ}|  ¡ }|  t¡� |j|tƒ g|||d	� W d   ƒ d S 1 s>w   Y  d S )
Nr   r:   c                   @   r>   )zMComponentsTests.test_registerAdapter_w_required_containing_junk.<locals>.IFooNr?   r   r   r   r   rB   X  rC   rB   rG   r   c                   @   r>   )zQComponentsTests.test_registerAdapter_w_required_containing_junk.<locals>._FactoryNr?   r   r   r   r   rå   `  rC   rå   rì   )rI   r;   r   rX   rY   rÛ   rW   rí   r   r   r   Ú/test_registerAdapter_w_required_containing_junkU  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ƒ}|  ¡ }	|  ¡ \}
}|
� |	j||||d� W d   ƒ n1 sOw   Y  |  	|	j
jd ˆ  | | |¡ |  |	jˆ f||f ||f¡ |  t|ƒd¡ |d \}}|\}|  |i ¡ |  ||¡ |  |j|¡ |  	|jj|	¡ |  	|jj|¡ |  |jjˆ f¡ |  	|jj|¡ |  	|jj|¡ |  	|jj|¡ d S )Nr   r:   r^   rÞ   c                   @   r>   )zGComponentsTests.test_registerAdapter_wo_explicit_required.<locals>.IFooNr?   r   r   r   r   rB   n  rC   rB   r˜   rG   r   c                       ó   e Zd Z” fZdS )zKComponentsTests.test_registerAdapter_wo_explicit_required.<locals>._FactoryN©r&   r@   rA   Ú__component_adapts__r   ©rÜ   r   r   rå   v  ó    
rå   rì   rc   râ   )r   r;   r_   rß   rB   rK   rL   rl   rå   r/   r    r   r   r   rm   r   rø   r   Ú)test_registerAdapter_wo_explicit_requiredi  sF   
ÿÿþÿ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   rB   ”  rC   rB   r˜   rG   r   c                 S   rO   r	   rP   rà   r   r   r   rR   œ  rS   z?ComponentsTests.test_registerAdapter_wo_event.<locals>._factoryF)rm   )rI   r;   r   r!   rÛ   r%   ri   )r   r;   rB   rK   rÜ   rL   rl   rR   r/   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_provided¥  ó   

ÿ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   rB   ­  rC   rB   ©rV   rj   rã   )rI   r;   r   rX   rY   rþ   rÃ   r   r   r   Ú3test_unregisterAdapter_neither_factory_nor_requiredª  ó   

ÿzCComponentsTests.test_unregisterAdapter_neither_factory_nor_requiredc           
      C   s�   ddl m} G dd„ d|ƒ}|dƒ}|dƒ}G dd„ dƒ}|  ¡ }|  ¡ \}}|� | ||f|¡}	W d   ƒ n1 s<w   Y  |  |	¡ d S )Nr   r:   c                   @   r>   )z9ComponentsTests.test_unregisterAdapter_miss.<locals>.IFooNr?   r   r   r   r   rB   ¸  rC   rB   r˜   c                   @   r>   )z=ComponentsTests.test_unregisterAdapter_miss.<locals>._FactoryNr?   r   r   r   r   rå   ¾  rC   rå   )rI   r;   r   r!   rþ   rž   ©
r   r;   rB   rK   rÜ   rå   r/   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	ƒ}|  ¡ }| ||f|¡ |  ¡ \}	}
|	� | 	||f|¡}W d   ƒ n1 sPw   Y  |  
|¡ |  |jj¡ |  |j¡ |  t|
ƒd
¡ |
d \}}|\}|  |i ¡ |  ||¡ |  |j|¡ |  |jj|¡ |  |jj|¡ |  |jj|f¡ |  |jjd¡ |  |jjd¡ |  |jj|¡ d S )Nr   r:   r‚   rÞ   c                   @   r>   )zYComponentsTests.test_unregisterAdapter_hit_w_explicit_provided_and_required.<locals>.IFooNr?   r   r   r   r   rB   Ì  rC   rB   r˜   c                   @   r>   )z]ComponentsTests.test_unregisterAdapter_hit_w_explicit_provided_and_required.<locals>._FactoryNr?   r   r   r   r   rå   Ò  rC   rå   rc   rb   )rI   r;   rd   rƒ   re   rß   r   rÛ   r!   rþ   r¡   rž   r)   rg   r,   r%   ri   r(   rW   rf   r   rj   rã   r   rG   rV   )r   r;   rƒ   rß   rB   rK   rÜ   rå   r/   r    r   rŸ   r   r   rm   r   r   r   Ú;test_unregisterAdapter_hit_w_explicit_provided_and_requiredÇ  ó8   ÿ
zKComponentsTests.test_unregisterAdapter_hit_w_explicit_provided_and_requiredc                 C   ót  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
ƒƒ}|  ¡ }	|	 ||f|¡ |  	¡ \}
}|
� |	 
||f¡}W d   ƒ n1 sYw   Y  |  |¡ |  t|ƒd¡ |d \}}|\}|  |i ¡ |  ||¡ |  |j|¡ |  |jj|	¡ |  |jj|¡ |  |jj|f¡ |  |jjd¡ |  |jjd¡ |  |jj|¡ d S )Nr   r:   ré   r‚   rÞ   c                   @   r>   )zIComponentsTests.test_unregisterAdapter_wo_explicit_provided.<locals>.IFooNr?   r   r   r   r   rB   ð  rC   rB   r˜   c                   @   r>   )zMComponentsTests.test_unregisterAdapter_wo_explicit_provided.<locals>._FactoryNr?   r   r   r   r   rå   ö  rF   rå   rc   rb   )rI   r;   rê   rd   rƒ   re   rß   r   rÛ   r!   rþ   r¡   r%   ri   r(   rW   rf   r   rj   rã   r   rG   rV   )r   r;   rê   rƒ   rß   rB   rK   rÜ   rå   r/   r    r   rŸ   r   r   rm   r   r   r   Ú+test_unregisterAdapter_wo_explicit_providedê  ó8   ÿ
z;ComponentsTests.test_unregisterAdapter_wo_explicit_providedc                    ód  ddl m} ddlm} ddlm} G dd„ d|ƒ}|dƒ}|dƒ‰ G ‡ fdd	„d	ƒ}|  ¡ }| |ˆ f|¡ |  ¡ \}}	|� |j	||d
�}
W d   ƒ n1 sQw   Y  |  
|
¡ |  t|	ƒd¡ |	d \}}|\}|  |i ¡ |  ||¡ |  |j|¡ |  |jj|¡ |  |jj|¡ |  |jjˆ f¡ |  |jjd¡ |  |jjd¡ |  |jj|¡ d S )Nr   r:   r‚   rÞ   c                   @   r>   )zIComponentsTests.test_unregisterAdapter_wo_explicit_required.<locals>.IFooNr?   r   r   r   r   rB     rC   rB   r˜   c                       rõ   )zMComponentsTests.test_unregisterAdapter_wo_explicit_required.<locals>._FactoryNrö   r   rø   r   r   rå     rù   rå   ©rj   rc   rb   )rI   r;   rd   rƒ   re   rß   r   rÛ   r!   rþ   r¡   r%   ri   r(   rW   rf   r   rj   rã   r   rG   rV   )r   r;   rƒ   rß   rB   rK   rå   r/   r    r   rŸ   r   r   rm   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
ƒ}	|  ¡ }
|
 |	|f|||¡ |
 |	|f|||¡ t|
 ¡ dd„ d�}|  t	|ƒd¡ |  
|d |¡ |  |d j|
¡ |  |d j|¡ |  |d j|f¡ |  |d j|¡ |  |d j|¡ |  |d j|	¡ |  
|d |¡ |  |d j|
¡ |  |d j|¡ |  |d j|f¡ |  |d j|¡ |  |d j|¡ |  |d j|	¡ d S )Nr   r:   rÞ   c                   @   r>   )z>ComponentsTests.test_registeredAdapters_notempty.<locals>.IFooNr?   r   r   r   r   rB   6  rC   rB   rG   r|   r}   c                   @   r>   )zBComponentsTests.test_registeredAdapters_notempty.<locals>._FactoryNr?   r   r   r   r   rå   ?  rC   rå   c                 S   r·   r	   r¸   r¹   r   r   r   r»   E  r¼   zBComponentsTests.test_registeredAdapters_notempty.<locals>.<lambda>r½   ry   rc   )rI   r;   re   rß   r   rÛ   r¿   r  r%   ri   r(   rf   r   rj   rã   r   rG   rV   )r   r;   rß   rB   rK   rÜ   rL   r   r€   rå   r/   rÀ   r   r   r   Ú test_registeredAdapters_notempty2  s8   z0ComponentsTests.test_registeredAdapters_notemptyc                 C   sH   ddl m} G dd„ d|ƒ}|dƒ}|  ¡ }tƒ }|  | ||¡¡ d S )Nr   r:   c                   @   r>   )z?ComponentsTests.test_queryAdapter_miss_no_default.<locals>.IFooNr?   r   r   r   r   rB   Y  rC   rB   )rI   r;   r   rW   rk   ÚqueryAdapter)r   r;   rB   rK   r/   Ú_contextr   r   r   Ú!test_queryAdapter_miss_no_defaultV  s   z1ComponentsTests.test_queryAdapter_miss_no_defaultc                 C   sT   ddl m} G dd„ d|ƒ}|dƒ}|  ¡ }tƒ }tƒ }|  |j|||d�|¡ d S )Nr   r:   c                   @   r>   )z>ComponentsTests.test_queryAdapter_miss_w_default.<locals>.IFooNr?   r   r   r   r   rB   d  rC   rB   rÅ   )rI   r;   r   rW   rf   r  )r   r;   rB   rK   r/   r  rÇ   r   r   r   Ú test_queryAdapter_miss_w_defaulta  s   þz0ComponentsTests.test_queryAdapter_miss_w_defaultc                 C   ó¤   ddl m} ddl m} G dd„ d|ƒ}|dƒ}|dƒ}G dd„ dƒ}||ƒG d	d
„ d
ƒƒ}|ƒ }|  ¡ }	|	 ||f|¡ |	 ||¡}
|  |
|¡ |  |
j|¡ d S )Nr   r:   ré   c                   @   r>   )z3ComponentsTests.test_queryAdapter_hit.<locals>.IFooNr?   r   r   r   r   rB   t  rC   rB   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@   rA   r°   r   r   r   r   rå   z  ó    rå   c                   @   r>   )z7ComponentsTests.test_queryAdapter_hit.<locals>._ContextNr?   r   r   r   r   rò   ~  rF   rò   )	rI   r;   rê   r   rÛ   r  r(   rf   rá   ©r   r;   rê   rB   rK   rÜ   rå   rò   r  r/   Úadapterr   r   r   Útest_queryAdapter_hitp  ó   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	ƒƒ}|ƒ }|  ¡ }	|  ||	j||¡ d S )
Nr   r:   ré   rÍ   c                   @   r>   )z2ComponentsTests.test_getAdapter_miss.<locals>.IFooNr?   r   r   r   r   rB   Ž  rC   rB   r˜   c                   @   r>   )z6ComponentsTests.test_getAdapter_miss.<locals>._ContextNr?   r   r   r   r   rò   ”  rF   rò   )rI   r;   rê   rd   rÎ   r   rX   Ú
getAdapter)
r   r;   rê   rÎ   rB   rK   rÜ   rò   r  r/   r   r   r   Útest_getAdapter_miss‰  s   ÿz$ComponentsTests.test_getAdapter_missc                 C   r  )Nr   r:   ré   c                   @   r>   )z1ComponentsTests.test_getAdapter_hit.<locals>.IFooNr?   r   r   r   r   rB   ¡  rC   rB   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ò   «  rF   rò   )	rI   r;   rê   r   rÛ   r#  r(   rf   rá   r  r   r   r   Útest_getAdapter_hit�  r"  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ƒƒ}||ƒG dd„ d|ƒƒ}G dd„ dƒ}G dd„ dƒ}	|  ¡ }
|
 |	|f|¡ |
 ||f|¡ |  |
¡ |ƒ }|
 ||¡}|  ||	¡ |  	|j
|¡ t||ƒ}|
 ||¡}|  ||¡ |  	|j
|¡ d S )Nr   r   ré   c                   @   r>   )z8ComponentsTests.test_getAdapter_hit_super.<locals>.IBaseNr?   r   r   r   r   ÚIBaseº  rC   r&  c                   @   r>   )z;ComponentsTests.test_getAdapter_hit_super.<locals>.IDerivedNr?   r   r   r   r   ÚIDerived½  rC   r'  c                   @   r>   )z7ComponentsTests.test_getAdapter_hit_super.<locals>.IFooNr?   r   r   r   r   rB   À  rC   rB   c                   @   r>   )z7ComponentsTests.test_getAdapter_hit_super.<locals>.BaseNr?   r   r   r   r   ÚBaseÃ  rF   r(  c                   @   r>   )z:ComponentsTests.test_getAdapter_hit_super.<locals>.DerivedNr?   r   r   r   r   ÚDerivedÇ  rF   r)  c                   @   r  )z>ComponentsTests.test_getAdapter_hit_super.<locals>.AdapterBasec                 S   r  r	   rà   r  r   r   r   r°   Ì  r  zGComponentsTests.test_getAdapter_hit_super.<locals>.AdapterBase.__init__Nr  r   r   r   r   ÚAdapterBaseË  r  r*  c                   @   r  )zAComponentsTests.test_getAdapter_hit_super.<locals>.AdapterDerivedc                 S   r  r	   rà   r  r   r   r   r°   Ð  r  zJComponentsTests.test_getAdapter_hit_super.<locals>.AdapterDerived.__init__Nr  r   r   r   r   ÚAdapterDerivedÏ  r  r+  ©r   r   rI   rê   r   rÛ   Ú_should_not_changer#  r(   rf   rá   rŠ   ©r   r   rê   r&  r'  rB   r(  r)  r*  r+  r/   Úderivedr   Úsuper�   r   r   Útest_getAdapter_hit_super¶  s.   

z)ComponentsTests.test_getAdapter_hit_superc                    sF  ddl m} ddlm} G dd„ d|ƒ}G dd„ d|ƒ}G dd	„ d	|ƒ}G d
d„ dƒ}G dd„ d|ƒ}||ƒG dd„ d|ƒƒ}||ƒG dd„ d||ƒƒ}	G dd„ dƒ}
G dd„ dƒ}|  ¡ }| ||f|¡ | |
|f|¡ |  |¡ |	ƒ }| ||¡}|  ||¡ |  	|j
|¡ t|	|ƒ}| ||¡}|  ||
¡ |  	|j
|¡ d S )Nr   r   ré   c                   @   r>   )z^ComponentsTests.test_getAdapter_hit_super_w_parent_implements_interface_diamond.<locals>.IBaseNr?   r   r   r   r   r&  æ  rC   r&  c                   @   r>   )zaComponentsTests.test_getAdapter_hit_super_w_parent_implements_interface_diamond.<locals>.IDerivedNr?   r   r   r   r   r'  é  rC   r'  c                   @   r>   )z]ComponentsTests.test_getAdapter_hit_super_w_parent_implements_interface_diamond.<locals>.IFooNr?   r   r   r   r   rB   ì  rC   rB   c                   @   r>   )z]ComponentsTests.test_getAdapter_hit_super_w_parent_implements_interface_diamond.<locals>.BaseNr?   r   r   r   r   r(  ï  rC   r(  c                   @   r>   )z_ComponentsTests.test_getAdapter_hit_super_w_parent_implements_interface_diamond.<locals>.Child1Nr?   r   r   r   r   ÚChild1ò  rC   r2  c                   @   r>   )z_ComponentsTests.test_getAdapter_hit_super_w_parent_implements_interface_diamond.<locals>.Child2Nr?   r   r   r   r   ÚChild2õ  rF   r3  c                   @   r>   )z`ComponentsTests.test_getAdapter_hit_super_w_parent_implements_interface_diamond.<locals>.DerivedNr?   r   r   r   r   r)  ù  rF   r)  c                   @   r  )zdComponentsTests.test_getAdapter_hit_super_w_parent_implements_interface_diamond.<locals>.AdapterBasec                 S   r  r	   rà   r  r   r   r   r°   þ  r  zmComponentsTests.test_getAdapter_hit_super_w_parent_implements_interface_diamond.<locals>.AdapterBase.__init__Nr  r   r   r   r   r*  ý  r  r*  c                   @   r  )zgComponentsTests.test_getAdapter_hit_super_w_parent_implements_interface_diamond.<locals>.AdapterDerivedc                 S   r  r	   rà   r  r   r   r   r°     r  zpComponentsTests.test_getAdapter_hit_super_w_parent_implements_interface_diamond.<locals>.AdapterDerived.__init__Nr  r   r   r   r   r+    r  r+  r,  )r   r   rê   r&  r'  rB   r(  r2  r3  r)  r*  r+  r/   r/  r   r0  r�   r   r   Ú?test_getAdapter_hit_super_w_parent_implements_interface_diamondâ  s2   

zOComponentsTests.test_getAdapter_hit_super_w_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	ƒƒ}||ƒG d
d„ dƒƒ}|ƒ }	|ƒ }
|  ¡ }|  | |	|
f|¡d ¡ d S )Nr   r:   ré   c                   @   r>   )z9ComponentsTests.test_queryMultiAdapter_miss.<locals>.IFooNr?   r   r   r   r   rB     rC   rB   r˜   ÚIBazc                   @   r>   )z>ComponentsTests.test_queryMultiAdapter_miss.<locals>._Context1Nr?   r   r   r   r   Ú	_Context1  rF   r6  c                   @   r>   )z>ComponentsTests.test_queryMultiAdapter_miss.<locals>._Context2Nr?   r   r   r   r   Ú	_Context2"  rF   r7  )rI   r;   rê   r   r%   ÚqueryMultiAdapter©r   r;   rê   rB   rK   rÜ   Úibazr6  r7  Ú	_context1Ú	_context2r/   r   r   r   Útest_queryMultiAdapter_miss  s    ÿz+ComponentsTests.test_queryMultiAdapter_missc                 C   s¦   ddl m} ddl m} G dd„ d|ƒ}|dƒ}|dƒ}|dƒ}||ƒG dd	„ d	ƒƒ}||ƒG d
d„ dƒƒ}|ƒ }	|ƒ }
tƒ }|  ¡ }|  |j|	|
f||d�|¡ d S )Nr   r:   ré   c                   @   r>   )zCComponentsTests.test_queryMultiAdapter_miss_w_default.<locals>.IFooNr?   r   r   r   r   rB   0  rC   rB   r˜   r5  c                   @   r>   )zHComponentsTests.test_queryMultiAdapter_miss_w_default.<locals>._Context1Nr?   r   r   r   r   r6  7  rF   r6  c                   @   r>   )zHComponentsTests.test_queryMultiAdapter_miss_w_default.<locals>._Context2Nr?   r   r   r   r   r7  ;  rF   r7  rÅ   )rI   r;   rê   rW   r   rf   r8  )r   r;   rê   rB   rK   rÜ   r:  r6  r7  r;  r<  rÇ   r/   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	ƒƒ}||ƒG d
d„ dƒƒ}|ƒ }	|ƒ }
G dd„ dƒ}|  ¡ }| |||f|¡ | |	|
f|¡}|  ||¡ |  |j|	|
f¡ d S )Nr   r:   ré   c                   @   r>   )z8ComponentsTests.test_queryMultiAdapter_hit.<locals>.IFooNr?   r   r   r   r   rB   M  rC   rB   r˜   r5  c                   @   r>   )z=ComponentsTests.test_queryMultiAdapter_hit.<locals>._Context1Nr?   r   r   r   r   r6  T  rF   r6  c                   @   r>   )z=ComponentsTests.test_queryMultiAdapter_hit.<locals>._Context2Nr?   r   r   r   r   r7  X  rF   r7  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å   )	rI   r;   rê   r   rÛ   r8  r(   r%   rá   ©r   r;   rê   rB   rK   rÜ   r:  r6  r7  r;  r<  rå   r/   r   r   r   r   Útest_queryMultiAdapter_hitI  ó$   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
ƒƒ}||ƒG dd„ dƒƒ}	|ƒ }
|	ƒ }|  ¡ }|  ||j|
|f|¡ d S )Nr   r:   ré   rÍ   c                   @   r>   )z7ComponentsTests.test_getMultiAdapter_miss.<locals>.IFooNr?   r   r   r   r   rB   n  rC   rB   r˜   r5  c                   @   r>   )z<ComponentsTests.test_getMultiAdapter_miss.<locals>._Context1Nr?   r   r   r   r   r6  u  rF   r6  c                   @   r>   )z<ComponentsTests.test_getMultiAdapter_miss.<locals>._Context2Nr?   r   r   r   r   r7  y  rF   r7  )rI   r;   rê   rd   rÎ   r   rX   ÚgetMultiAdapter)r   r;   rê   rÎ   rB   rK   rÜ   r:  r6  r7  r;  r<  r/   r   r   r   Útest_getMultiAdapter_missi  s"   ÿz)ComponentsTests.test_getMultiAdapter_missc                 C   r?  )Nr   r:   ré   c                   @   r>   )z6ComponentsTests.test_getMultiAdapter_hit.<locals>.IFooNr?   r   r   r   r   rB   ‡  rC   rB   r˜   r5  c                   @   r>   )z;ComponentsTests.test_getMultiAdapter_hit.<locals>._Context1Nr?   r   r   r   r   r6  Ž  rF   r6  c                   @   r>   )z;ComponentsTests.test_getMultiAdapter_hit.<locals>._Context2Nr?   r   r   r   r   r7  ’  rF   r7  c                   @   r  )z:ComponentsTests.test_getMultiAdapter_hit.<locals>._Factoryc                 S   r@  r	   rà   rA  r   r   r   r°   š  rD  zCComponentsTests.test_getMultiAdapter_hit.<locals>._Factory.__init__Nr  r   r   r   r   rå   ™  r  rå   )	rI   r;   rê   r   rÛ   rH  r(   r%   rá   rE  r   r   r   Útest_getMultiAdapter_hitƒ  rG  z(ComponentsTests.test_getMultiAdapter_hitc                    s(   ‡ fdd„}||_ ||j_ ||jj_ d S )Nc                     s   ˆ   d¡ d S )NzNothing should get changed)Zfail)r   r
   r   r   Ú
no_changes§  rD  z6ComponentsTests._should_not_change.<locals>.no_changes)Úchangedr)   Ú	_v_lookup)r   r/   rK  r   r
   r   r-  £  s   z"ComponentsTests._should_not_changec                    sZ  ddl m} ddlm} G dd„ d|ƒ}G dd„ d|ƒ}G dd	„ d	|ƒ}||ƒG d
d„ dƒƒ}||ƒG dd„ d|ƒƒ}G dd„ dƒ}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&  ±  rC   r&  c                   @   r>   )z@ComponentsTests.test_getMultiAdapter_hit_super.<locals>.IDerivedNr?   r   r   r   r   r'  ´  rC   r'  c                   @   r>   )z<ComponentsTests.test_getMultiAdapter_hit_super.<locals>.IFooNr?   r   r   r   r   rB   ·  rC   rB   c                   @   r>   )z<ComponentsTests.test_getMultiAdapter_hit_super.<locals>.BaseNr?   r   r   r   r   r(  º  rF   r(  c                   @   r>   )z?ComponentsTests.test_getMultiAdapter_hit_super.<locals>.DerivedNr?   r   r   r   r   r)  ¾  rF   r)  c                   @   r  )zCComponentsTests.test_getMultiAdapter_hit_super.<locals>.AdapterBasec                 S   s   || _ || _d S r	   ©rB  rC  rA  r   r   r   r°   Ã  s   
zLComponentsTests.test_getMultiAdapter_hit_super.<locals>.AdapterBase.__init__Nr  r   r   r   r   r*  Â  r  r*  c                   @   r>   )zFComponentsTests.test_getMultiAdapter_hit_super.<locals>.AdapterDerivedNr?   r   r   r   r   r+  Ç  rC   r+  )r   r   rI   rê   r   rÛ   r-  rH  r(   rf   rB  rC  rŠ   ZassertNotIsInstancer.  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	ƒƒ}||ƒG d
d„ dƒƒ}|ƒ }	|ƒ }
|  ¡ }|  t| |	|
f|¡ƒg ¡ d S )Nr   r:   ré   c                   @   r>   )z4ComponentsTests.test_getAdapters_empty.<locals>.IFooNr?   r   r   r   r   rB   à  rC   rB   r˜   r5  c                   @   r>   )z9ComponentsTests.test_getAdapters_empty.<locals>._Context1Nr?   r   r   r   r   r6  ç  rF   r6  c                   @   r>   )z9ComponentsTests.test_getAdapters_empty.<locals>._Context2Nr?   r   r   r   r   r7  ë  rF   r7  )rI   r;   rê   r   r%   r”   ÚgetAdaptersr9  r   r   r   Útest_getAdapters_emptyÜ  s    ÿz&ComponentsTests.test_getAdapters_emptyc                    sÔ   ddl m} ddl m} G dd„ d|ƒ}|dƒ}|dƒ}|dƒ}||ƒG dd	„ d	ƒƒ}||ƒG d
d„ dƒƒ}|ƒ }	|ƒ }
|  ¡ }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   rB   ù  rC   rB   r˜   r5  c                   @   r>   )zHComponentsTests.test_getAdapters_factory_returns_None.<locals>._Context1Nr?   r   r   r   r   r6     rF   r6  c                   @   r>   )zHComponentsTests.test_getAdapters_factory_returns_None.<locals>._Context2Nr?   r   r   r   r   r7    rF   r7  c                    r   r	   r   rN  ©Z_called_withr   r   Ú_side_effect_only  s   zPComponentsTests.test_getAdapters_factory_returns_None.<locals>._side_effect_only)rI   r;   rê   r   rÛ   r%   r”   rP  )r   r;   rê   rB   rK   rÜ   r:  r6  r7  r;  r<  r/   rS  r   rR  r   Ú%test_getAdapters_factory_returns_Noneõ  s(   ÿz5ComponentsTests.test_getAdapters_factory_returns_Nonec                 C   sH  ddl m} ddl m} G dd„ d|ƒ}|dƒ}|dƒ}|dƒ}||ƒG dd	„ d	ƒƒ}||ƒG d
d„ dƒƒ}|ƒ }	|ƒ }
G dd„ dƒ}G dd„ dƒ}d}d}|  ¡ }|j|||f||d� |j|||f||d� t| |	|
f|¡ƒ}|  t|ƒd¡ |  |d d |¡ |  	|d d |¡ |  |d d |¡ |  	|d d |¡ d S )Nr   r:   ré   c                   @   r>   )z8ComponentsTests.test_getAdapters_non_empty.<locals>.IFooNr?   r   r   r   r   rB     rC   rB   r˜   r5  c                   @   r>   )z=ComponentsTests.test_getAdapters_non_empty.<locals>._Context1Nr?   r   r   r   r   r6  !  rF   r6  c                   @   r>   )z=ComponentsTests.test_getAdapters_non_empty.<locals>._Context2Nr?   r   r   r   r   r7  %  rF   r7  c                   @   r  )z=ComponentsTests.test_getAdapters_non_empty.<locals>._Factory1c                 S   r@  r	   rà   rA  r   r   r   r°   -  rD  zFComponentsTests.test_getAdapters_non_empty.<locals>._Factory1.__init__Nr  r   r   r   r   Ú	_Factory1,  r  rU  c                   @   r  )z=ComponentsTests.test_getAdapters_non_empty.<locals>._Factory2c                 S   r@  r	   rà   rA  r   r   r   r°   1  rD  zFComponentsTests.test_getAdapters_non_empty.<locals>._Factory2.__init__Nr  r   r   r   r   Ú	_Factory20  r  rV  r|   r}   r¸   ry   rc   )
rI   r;   rê   r   rÛ   r¿   rP  r%   ri   r(   )r   r;   rê   rB   rK   rÜ   r:  r6  r7  r;  r<  rU  rV  r   r€   r/   Úfoundr   r   r   Útest_getAdapters_non_empty  s2   z*ComponentsTests.test_getAdapters_non_emptyc           	   	   C   sb   ddl m} G dd„ d|ƒ}|dƒ}|dƒ}d}d}dd	„ }|  ¡ }|  t|j||f|||¡ d S )
Nr   r:   c                   @   r>   )zNComponentsTests.test_registerSubscriptionAdapter_w_nonblank_name.<locals>.IFooNr?   r   r   r   r   rB   C  rC   rB   r˜   r   rG   c                 S   rO   r	   rP   rà   r   r   r   rR   K  rS   zRComponentsTests.test_registerSubscriptionAdapter_w_nonblank_name.<locals>._factory)rI   r;   r   rX   rY   ÚregisterSubscriptionAdapter)	r   r;   rB   rK   rÜ   rl   rL   rR   r/   r   r   r   Ú0test_registerSubscriptionAdapter_w_nonblank_name@  s   
ÿz@ComponentsTests.test_registerSubscriptionAdapter_w_nonblank_namec                 C   s¢  ddl m} ddlm} ddlm} G dd„ d|ƒ}|dƒ}|dƒ}d}d	}d
d„ }	|  ¡ }
|  ¡ \}}|� |
j|	|f||d� W d   ƒ n1 sKw   Y  |
j	j
d | | | }|  t|ƒd¡ |  |d |	¡ |  |
j|f|||	|fg¡ |  t|ƒd¡ |d \}}|\}|  |i ¡ |  ||¡ |  |j|¡ |  |jj|
¡ |  |jj|¡ |  |jj|f¡ |  |jj|¡ |  |jj|¡ |  |jj|	¡ d S )Nr   r:   r^   ©ÚSubscriptionRegistrationc                   @   r>   )z]ComponentsTests.test_registerSubscriptionAdapter_w_explicit_provided_n_required.<locals>.IFooNr?   r   r   r   r   rB   W  rC   rB   r˜   rb   rG   c                 S   rO   r	   rP   rà   r   r   r   rR   _  rS   zaComponentsTests.test_registerSubscriptionAdapter_w_explicit_provided_n_required.<locals>._factoryrH   rc   ©rI   r;   rd   r_   re   r\  r   r!   rY  r)   rh   r%   ri   rf   r-   r(   rW   r   rj   rã   r   rG   rV   )r   r;   r_   r\  rB   rK   rÜ   Ú_blankrL   rR   r/   r    r   rÀ   r   r   rm   r   r   r   Ú?test_registerSubscriptionAdapter_w_explicit_provided_n_requiredR  sD   ÿÿÿzOComponentsTests.test_registerSubscriptionAdapter_w_explicit_provided_n_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ƒƒ}
|  ¡ }|  ¡ \}}|� |j	|
|f|d� W d   ƒ n1 sWw   Y  |j
jd | | |	 }|  t|ƒd¡ |  |d |
¡ |  |j|f||	|
|fg¡ |  t|ƒd¡ |d \}}|\}|  |i ¡ |  ||¡ |  |j|¡ |  |jj|¡ |  |jj|¡ |  |jj|f¡ |  |jj|	¡ |  |jj|¡ |  |jj|
¡ d S )Nr   r:   ré   r^   r[  c                   @   r>   )zSComponentsTests.test_registerSubscriptionAdapter_wo_explicit_provided.<locals>.IFooNr?   r   r   r   r   rB     rC   rB   r˜   rG   rb   c                   @   r>   )zWComponentsTests.test_registerSubscriptionAdapter_wo_explicit_provided.<locals>._FactoryNr?   r   r   r   r   rå   ‡  rF   rå   rH   rc   )rI   r;   rê   rd   r_   re   r\  r   r!   rY  r)   rh   r%   ri   rf   r-   r(   rW   r   rj   rã   r   rG   rV   )r   r;   rê   r_   r\  rB   rK   rÜ   rL   r^  rå   r/   r    r   rÀ   r   r   rm   r   r   r   Ú5test_registerSubscriptionAdapter_wo_explicit_providedy  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ƒ}|  ¡ }	|  ¡ \}
}|
� |	j|||d� W d   ƒ n1 sNw   Y  |	j	j
d ˆ  | | }|  t|ƒd¡ |  |d |¡ |  |	jˆ f||||fg¡ |  t|ƒd¡ |d \}}|\}|  |i ¡ |  ||¡ |  |j|¡ |  |jj|	¡ |  |jj|¡ |  |jjˆ f¡ |  |jj|¡ |  |jj|¡ |  |jj|¡ d S )Nr   r:   r^   r[  c                   @   r>   )zSComponentsTests.test_registerSubscriptionAdapter_wo_explicit_required.<locals>.IFooNr?   r   r   r   r   rB   ¦  rC   rB   r˜   rG   rb   c                       rõ   )zWComponentsTests.test_registerSubscriptionAdapter_wo_explicit_required.<locals>._FactoryNrö   r   rø   r   r   rå   ®  rù   rå   )rj   rG   rc   r]  )r   r;   r_   r\  rB   rK   rL   r^  rå   r/   r    r   rÀ   r   r   rm   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„ }|  ¡ }|  ¡ \}}	|� |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   rB   Ì  rC   rB   r˜   rG   c                 S   rO   r	   rP   rà   r   r   r   rR   Ó  rS   zKComponentsTests.test_registerSubscriptionAdapter_wo_event.<locals>._factoryF©rG   rm   )rI   r;   r   r!   rY  r%   ri   )
r   r;   rB   rK   rÜ   rL   rR   r/   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	ƒ}|  ¡ }	|	j||f||d
� |	j||f||d
� t|	 ¡ ƒ}
|  t	|
ƒd¡ |  
|
d |¡ |  |
d j|	¡ |  |
d j|¡ |  |
d j|f¡ |  |
d j|¡ |  |
d j|¡ |  |
d j|¡ |  
|
d |¡ |  |
d j|	¡ |  |
d j|¡ |  |
d j|f¡ |  |
d j|¡ |  |
d j|¡ |  |
d j|¡ d S )Nr   r:   r[  c                   @   r>   )zJComponentsTests.test_registeredSubscriptionAdapters_notempty.<locals>.IFooNr?   r   r   r   r   rB   å  rC   rB   rG   rb   c                   @   r>   )zNComponentsTests.test_registeredSubscriptionAdapters_notempty.<locals>._FactoryNr?   r   r   r   r   rå   í  rC   rå   rH   ry   rc   )rI   r;   re   r\  r   rY  r”   rd  r%   ri   r(   rf   r   rj   rã   r   rG   rV   )r   r;   r\  rB   rK   rÜ   rL   r^  rå   r/   rÀ   r   r   r   Ú,test_registeredSubscriptionAdapters_notemptyá  s6   z<ComponentsTests.test_registeredSubscriptionAdapters_notemptyc                 C   sR   ddl m} G dd„ d|ƒ}|dƒ}|dƒ}d}|  ¡ }| jt|j|||d� d S )Nr   r:   c                   @   r>   )zPComponentsTests.test_unregisterSubscriptionAdapter_w_nonblank_name.<locals>.IFooNr?   r   r   r   r   rB     rC   rB   r˜   Únonblank)rã   rj   r   ©rI   r;   r   rX   rY   ÚunregisterSubscriptionAdapter)r   r;   rB   rK   rÜ   Ú	_nonblankr/   r   r   r   Ú2test_unregisterSubscriptionAdapter_w_nonblank_name  s   

ÿzBComponentsTests.test_unregisterSubscriptionAdapter_w_nonblank_namec                 C   rü   rý   )r   rX   rY   ri  r5   r   r   r   Ú?test_unregisterSubscriptionAdapter_neither_factory_nor_provided  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   rB     rC   rB   r  rh  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ƒ}|  ¡ }|  ¡ \}}|� | ||f|¡}	W d   ƒ n1 s<w   Y  |  |	¡ |  |¡ d S )Nr   r:   c                   @   r>   )zEComponentsTests.test_unregisterSubscriptionAdapter_miss.<locals>.IFooNr?   r   r   r   r   rB   $  rC   rB   r˜   c                   @   r>   )zIComponentsTests.test_unregisterSubscriptionAdapter_miss.<locals>._FactoryNr?   r   r   r   r   rå   *  rC   rå   )rI   r;   r   r!   ri  rž   r  r   r   r   Ú'test_unregisterSubscriptionAdapter_miss!  s   ÿ
z7ComponentsTests.test_unregisterSubscriptionAdapter_missc                 C   sz  ddl m} ddlm} ddlm} G dd„ d|ƒ}|dƒ}|dƒ}G dd	„ d	ƒ}|  ¡ }| ||f|¡ |  ¡ \}	}
|	� | 	d |f|¡}W d   ƒ n1 sPw   Y  |  
|¡ |  |jj¡ |  |j¡ |  t|
ƒd
¡ |
d \}}|\}|  |i ¡ |  ||¡ |  |j|¡ |  |jj|¡ |  |jj|¡ |  |jj|f¡ |  |jjd¡ |  |jjd¡ |  |jj¡ d S )Nr   r:   r‚   r[  c                   @   r>   )zOComponentsTests.test_unregisterSubscriptionAdapter_hit_wo_factory.<locals>.IFooNr?   r   r   r   r   rB   9  rC   rB   r˜   c                   @   r>   )zSComponentsTests.test_unregisterSubscriptionAdapter_hit_wo_factory.<locals>._FactoryNr?   r   r   r   r   rå   ?  rC   rå   rc   rb   )rI   r;   rd   rƒ   re   r\  r   rY  r!   ri  r¡   rž   r)   rh   r-   r%   ri   r(   rW   rf   r   rj   rã   r   rG   rk   rV   ©r   r;   rƒ   r\  rB   rK   rÜ   rå   r/   r    r   rŸ   r   r   rm   r   r   r   Ú1test_unregisterSubscriptionAdapter_hit_wo_factory4  s8   ÿ
zAComponentsTests.test_unregisterSubscriptionAdapter_hit_wo_factoryc                 C   r  )Nr   r:   r‚   r[  c                   @   r>   )zNComponentsTests.test_unregisterSubscriptionAdapter_hit_w_factory.<locals>.IFooNr?   r   r   r   r   rB   \  rC   rB   r˜   c                   @   r>   )zRComponentsTests.test_unregisterSubscriptionAdapter_hit_w_factory.<locals>._FactoryNr?   r   r   r   r   rå   b  rC   rå   rc   rb   )rI   r;   rd   rƒ   re   r\  r   rY  r!   ri  r¡   rž   r)   rh   r-   r%   ri   r(   rW   rf   r   rj   rã   r   rG   rV   ro  r   r   r   Ú0test_unregisterSubscriptionAdapter_hit_w_factoryW  r	  z@ComponentsTests.test_unregisterSubscriptionAdapter_hit_w_factoryc                 C   r
  )Nr   r:   ré   r‚   r[  c                   @   r>   )zUComponentsTests.test_unregisterSubscriptionAdapter_wo_explicit_provided.<locals>.IFooNr?   r   r   r   r   rB   €  rC   rB   r˜   c                   @   r>   )zYComponentsTests.test_unregisterSubscriptionAdapter_wo_explicit_provided.<locals>._FactoryNr?   r   r   r   r   rå   †  rF   rå   rc   rb   )rI   r;   rê   rd   rƒ   re   r\  r   rY  r!   ri  r¡   r%   ri   r(   rW   rf   r   rj   rã   r   rG   rV   )r   r;   rê   rƒ   r\  rB   rK   rÜ   rå   r/   r    r   rŸ   r   r   rm   r   r   r   Ú7test_unregisterSubscriptionAdapter_wo_explicit_providedz  r  zGComponentsTests.test_unregisterSubscriptionAdapter_wo_explicit_providedc                    r  )Nr   r:   r‚   r[  c                   @   r>   )zUComponentsTests.test_unregisterSubscriptionAdapter_wo_explicit_required.<locals>.IFooNr?   r   r   r   r   rB   ¢  rC   rB   r˜   c                       rõ   )zYComponentsTests.test_unregisterSubscriptionAdapter_wo_explicit_required.<locals>._FactoryNrö   r   rø   r   r   rå   ¨  rù   rå   r  rc   rb   )rI   r;   rd   rƒ   re   r\  r   rY  r!   ri  r¡   r%   ri   r(   rW   rf   r   rj   rã   r   rG   rV   )r   r;   rƒ   r\  rB   rK   rå   r/   r    r   rŸ   r   r   rm   r   rø   r   Ú7test_unregisterSubscriptionAdapter_wo_explicit_required�  r  zGComponentsTests.test_unregisterSubscriptionAdapter_wo_explicit_requiredc           	      C   sz   ddl m} ddl m} G dd„ d|ƒ}|dƒ}|dƒ}|  ¡ }||ƒG dd„ dƒƒ}|ƒ }|  t| |f|¡ƒg ¡ d S )	Nr   r:   ré   c                   @   r>   )z4ComponentsTests.test_subscribers_empty.<locals>.IFooNr?   r   r   r   r   rB   Â  rC   rB   r˜   c                   @   r>   )z3ComponentsTests.test_subscribers_empty.<locals>.BarNr?   r   r   r   r   ÚBarÉ  rF   rt  )rI   r;   rê   r   r%   r”   Úsubscribers)	r   r;   rê   rB   rK   rÜ   r/   rt  Ú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ƒ}G d	d
„ d
|ƒ}|  ¡ }| |ˆ f|¡ | |ˆ f|¡ |ˆ ƒG dd„ dƒƒ}|ƒ }	| |	f|¡}
dd„ }t|
|d�}
|  t|
ƒd¡ |  	|
d |¡ |  	|
d |¡ d S )Nr   r:   ré   c                   @   r>   )z8ComponentsTests.test_subscribers_non_empty.<locals>.IFooNr?   r   r   r   r   rB   Ô  rC   rB   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@   rA   r÷   r°   r   rø   r   r   rå   Ú  s    rå   c                   @   r>   )z<ComponentsTests.test_subscribers_non_empty.<locals>._DerivedNr?   r   r   r   r   Ú_Derivedà  rC   rx  c                   @   r>   )z7ComponentsTests.test_subscribers_non_empty.<locals>.BarNr?   r   r   r   r   rt  ç  rF   rt  c                 S   s   | j jS r	   )rŽ   r&   ©Úxr   r   r   Ú
_klassnameî  ó   z>ComponentsTests.test_subscribers_non_empty.<locals>._klassnamer½   ry   rc   )
rI   r;   rê   r   rY  ru  r¿   r%   ri   r(   )r   r;   rê   rB   rK   rå   rx  r/   rt  rv  ru  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   rB   ù  rC   rB   rg  c                 S   rO   r	   rP   rà   r   r   r   rR    	  rS   zFComponentsTests.test_registerHandler_w_nonblank_name.<locals>._factory©rã   r   )rI   r;   r   rX   rY   ÚregisterHandler)r   r;   rB   rK   rj  r/   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 |¡ |  |	j|f|||fg¡ |  t|ƒd¡ |d \}}|\}|  |i ¡ |  ||¡ |  |j|¡ |  |jj|	¡ |  |jj|f¡ |  |jj|¡ |  |jj|¡ |  |jj|¡ d S )Nr   r:   r^   ©ÚHandlerRegistrationc                   @   r>   )zFComponentsTests.test_registerHandler_w_explicit_required.<locals>.IFooNr?   r   r   r   r   rB   	  rC   rB   rb   rG   c                 S   rO   r	   rP   rà   r   r   r   rR   	  rS   zJComponentsTests.test_registerHandler_w_explicit_required.<locals>._factoryrH   rc   )rI   r;   rd   r_   re   r‚  r   r!   r  r)   rh   r%   ri   rf   r.   r(   rW   r   rã   r   rG   rV   )r   r;   r_   r‚  rB   rK   r^  rL   rR   r/   r    r   rÀ   r   r   rm   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ƒ}|  ¡ }|  ¡ \}}|� |j||d	d
� W d   ƒ n1 s>w   Y  |jjd ˆ  d  | }	|  t|	ƒd¡ |  	|	d |¡ |  |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   rB   -	  rC   rB   rG   rb   c                       rõ   )zTComponentsTests.test_registerHandler_wo_explicit_required_no_event.<locals>._FactoryNrö   r   ©rK   r   r   rå   4	  s    rå   Frb  rc   )rI   r;   r   r!   r  r)   rh   r%   ri   rf   r.   )
r   r;   rB   rL   r^  rå   r/   r    r   rÀ   r   r„  r   Ú2test_registerHandler_wo_explicit_required_no_event*	  s$   ÿÿzBComponentsTests.test_registerHandler_wo_explicit_required_no_eventc                 C   s   |   ¡ }|  t| ¡ ƒ¡ d S r	   )r   rž   r”   ÚregisteredHandlersr5   r   r   r   Útest_registeredHandlers_emptyC	  s   z-ComponentsTests.test_registeredHandlers_emptyc           
      C   sD  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¡ |  
|	d |¡ |  |	d j|f¡ |  |	d jd¡ |  |	d j|¡ |  |	d jd¡ |  
|	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   rB   K	  rC   rB   c                 S   rO   r	   rP   rà   r   r   r   Ú	_factory1P	  rS   zDComponentsTests.test_registeredHandlers_non_empty.<locals>._factory1c                 S   rO   r	   rP   rà   r   r   r   Ú	_factory2S	  rS   zDComponentsTests.test_registeredHandlers_non_empty.<locals>._factory2c                 S   s
   | j jjS r	   )rV   Ú__code__Úco_namery  r   r   r   Ú_factory_nameZ	  r  zHComponentsTests.test_registeredHandlers_non_empty.<locals>._factory_namer½   ry   rb   rc   )rI   r;   re   r‚  r   r  r¿   r†  r%   ri   r(   rã   r   rV   rG   )
r   r;   r‚  rB   rK   rˆ  r‰  r/   rŒ  ru  r   r   r   Ú!test_registeredHandlers_non_emptyG	  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   rB   m	  rC   rB   rg  r~  )rI   r;   r   rX   rY   ÚunregisterHandler)r   r;   rB   rK   rj  r/   r   r   r   Ú&test_unregisterHandler_w_nonblank_namej	  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_requiredv	  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   rB   }	  rC   rB   ©rã   )rI   r;   r   rŽ  rž   )r   r;   rB   rK   r/   rŸ   r   r   r   Útest_unregisterHandler_missz	  s   z+ComponentsTests.test_unregisterHandler_missc                 C   s8  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 ¡ |  ||¡ |  |j|¡ |  |jj|¡ |  |jj|f¡ |  |jjd
¡ |  |jj|¡ d S )Nr   r:   r‚   r�  c                   @   r>   )zXComponentsTests.test_unregisterHandler_hit_w_factory_and_explicit_provided.<locals>.IFooNr?   r   r   r   r   rB   Š	  rC   rB   c                 S   rO   r	   rP   rà   r   r   r   rR   �	  rS   z\ComponentsTests.test_unregisterHandler_hit_w_factory_and_explicit_provided.<locals>._factoryrc   rb   )rI   r;   rd   rƒ   re   r‚  r   r  r!   rŽ  r¡   r%   ri   r(   rW   rf   r   rã   r   rV   ©r   r;   rƒ   r‚  rB   rK   r/   rR   r    r   rŸ   r   r   rm   r   r   r   Ú:test_unregisterHandler_hit_w_factory_and_explicit_provided…	  s0   ÿ
zJComponentsTests.test_unregisterHandler_hit_w_factory_and_explicit_providedc                 C   s6  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 ¡ |  ||¡ |  |j|¡ |  |jj|¡ |  |jj|f¡ |  |jjd¡ |  |jj¡ d S )Nr   r:   r‚   r�  c                   @   r>   )zQComponentsTests.test_unregisterHandler_hit_w_only_explicit_provided.<locals>.IFooNr?   r   r   r   r   rB   ©	  rC   rB   c                 S   rO   r	   rP   rà   r   r   r   rR   ¯	  rS   zUComponentsTests.test_unregisterHandler_hit_w_only_explicit_provided.<locals>._factoryr‘  rc   rb   )rI   r;   rd   rƒ   re   r‚  r   r  r!   rŽ  r¡   r%   ri   r(   rW   rf   r   rã   r   rk   rV   r“  r   r   r   Ú3test_unregisterHandler_hit_w_only_explicit_provided¤	  s0   ÿ
zCComponentsTests.test_unregisterHandler_hit_w_only_explicit_providedc                    sB  ddl m} ddlm} ddlm} G dd„ d|ƒ}|dƒ‰ G ‡ fdd„dƒ}|  ¡ }| |¡ |  ¡ \}}|� | 	|¡}	W d   ƒ n1 sHw   Y  |  
|	¡ |  t|ƒd	¡ |d \}
}|
\}|  |i ¡ |  ||¡ |  |j|¡ |  |jj|¡ |  |jjˆ f¡ |  |jjd
¡ |  |jjd
¡ |  |jj|¡ d S )Nr   r:   r‚   r�  c                   @   r>   )zIComponentsTests.test_unregisterHandler_wo_explicit_required.<locals>.IFooNr?   r   r   r   r   rB   È	  rC   rB   c                       rõ   )zMComponentsTests.test_unregisterHandler_wo_explicit_required.<locals>._FactoryNrö   r   r„  r   r   rå   Í	  rù   rå   rc   rb   )rI   r;   rd   rƒ   re   r‚  r   r  r!   rŽ  r¡   r%   ri   r(   rW   rf   r   rã   r   rG   rV   )r   r;   rƒ   r‚  rB   rå   r/   r    r   rŸ   r   r   rm   r   r„  r   Ú+test_unregisterHandler_wo_explicit_requiredÃ	  s0   
ÿ
z;ComponentsTests.test_unregisterHandler_wo_explicit_requiredc                 C   sd   ddl m} ddl m} G dd„ d|ƒ}|dƒ}|  ¡ }||ƒG dd„ dƒƒ}|ƒ }| |f¡ d S )Nr   r:   ré   c                   @   r>   )z/ComponentsTests.test_handle_empty.<locals>.IFooNr?   r   r   r   r   rB   æ	  rC   rB   c                   @   r>   )z.ComponentsTests.test_handle_empty.<locals>.BarNr?   r   r   r   r   rt  ì	  rF   rt  )rI   r;   rê   r   Úhandle)r   r;   rê   rB   rK   r/   rt  rv  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ƒƒ}|ƒ }	| |	¡ |  ˆ |	g¡ |  ˆ|	g¡ d S )Nr   r:   ré   c                   @   r>   )z3ComponentsTests.test_handle_non_empty.<locals>.IFooNr?   r   r   r   r   rB   ÷	  rC   rB   c                    ó   ˆ   | ¡ d S r	   r   rà   )Ú	_called_1r   r   Ú
_factory_1ý	  rD  z9ComponentsTests.test_handle_non_empty.<locals>._factory_1c                    r™  r	   r   rà   )Ú	_called_2r   r   Ú
_factory_2
  rD  z9ComponentsTests.test_handle_non_empty.<locals>._factory_2c                   @   r>   )z2ComponentsTests.test_handle_non_empty.<locals>.BarNr?   r   r   r   r   rt  	
  rF   rt  )rI   r;   rê   r   r  r—  r%   )
r   r;   rê   rB   rK   r›  r�  r/   rt  rv  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   rB   
  rC   rB   r  rv  r§   rc   rb   r™   é   r   )r   r   rW   rJ   r%   ri   r*   rh   Z	_providedr›   r¡   )r   Ú	identicalrB   r/   Ú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_provided0
  s   
ÿzBComponentsTests.test_register_unregister_nonequal_objects_providedc                 C   sÜ  G dd„ dt ƒ}G dd„ dƒ}|  ¡ }tdƒD ]}|j|ƒ ||› 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t|
ƒƒ}
|d | |
 |	|
< q”|  ||¡ t
|ƒƒ  }|j_	| i ¡ i  }	|d |< d|	d	< tddƒD ]}
t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	 ¡ �q7| ¡ }|  |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@   rA   Ú__doc__r   r   r   r   rB   7
  ó    rB   c                   @   r¦  )zYComponentsTests.test_rebuildUtilityRegistryFromLocalCache.<locals>.UtilityImplementingFoor§  Nr¨  r   r   r   r   ÚUtilityImplementingFoo:
  rª  r«  é   r¸   rc   r   rb   é
   r   é   é   é   é   é   )Zdid_not_registerZneeded_registeredZdid_not_subscribeZneeded_subscribedT)Zrebuild)r   r   ÚrangerJ   r*   Z_generationrg   r%   ri   rh   Útyper   ÚstrÚassertNotEqualZ$rebuildUtilityRegistryFromLocalCacheÚassertIn)r   rB   r«  ÚcompsÚiZorig_generationZorig_adaptersZorig_subscribersZnew_adaptersÚdr   Znew_subsr/   Zrebuild_preflightZrebuild_resultsZorig_subscriberZpreflight_afterZrebuild_afterr   r   r   Ú)test_rebuildUtilityRegistryFromLocalCache5
  s€   
ÿ

û	ÿþûÿz9ComponentsTests.test_rebuildUtilityRegistryFromLocalCache)r   )T)vr&   r@   rA   r   r   r!   r0   r2   r6   r9   rM   r\   rn   rr   rs   rv   rx   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%  r1  r4  r=  r>  rF  rI  rJ  r-  rO  rQ  rT  rX  rZ  r_  r`  ra  rc  re  rf  rk  rl  rm  rn  rp  rq  rr  rs  rw  r}  r€  rƒ  r…  r‡  r�  r�  r�  r’  r”  r•  r–  r˜  rž  r¤  r¥  r»  r�   r   r   r�   r   r      sè    

!!"*  "$% 


&)*1(##!$,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   ™
  s    r   )rŠ   r¼  r   r‹   )r   r   r�   r   r   r   •
  s   
ÿz)UnhashableComponentsTests._getTargetClass)r&   r@   rA   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   r`   )re   ra   )r   ra   r   r   r   r   ¦
  ó   z(UtilityRegistrationTests._getTargetClassNc                 C   s`   ddl m} G dd„ d|ƒ}|dƒ}G dd„ dƒ}|ƒ }d}d	}	|  ¡ }
|
|||||	|ƒ||fS )
Nr   r:   c                   @   r>   )zAUtilityRegistrationTests._makeOne.<locals>.InterfaceClassSubclassNr?   r   r   r   r   ÚInterfaceClassSubclass­
  rC   rÀ  rB   c                   @   r  )z4UtilityRegistrationTests._makeOne.<locals>._Registryc                 S   ó   dS ©NZ	_REGISTRYr   r
   r   r   r   Ú__repr__³
  r   z=UtilityRegistrationTests._makeOne.<locals>._Registry.__repr__N©r&   r@   rA   rÃ  r   r   r   r   Ú	_Registry²
  r  rÅ  r   Ú	DOCSTRING©rI   r;   r   )r   rU   rV   r;   rÀ  rK   rÅ  r   r   ÚdocÚklassr   r   r   r   ª
  ó   ýz!UtilityRegistrationTests._makeOnec                 C   ó*   ddl m} ddlm} |||  ¡ ƒ d S )Nr   ©ÚIUtilityRegistration©ÚverifyClass)rd   rÍ  Úzope.interface.verifyrÏ  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   rÌ  ©ÚverifyObject)rd   rÍ  rÐ  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|ƒ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')r3   ©r   rÝ  Ú
_componentrÖ  Ú	_registryrl   r   r   r   r6   Ë
  ó   ýÿz&UtilityRegistrationTests.test___repr__c                 C   óD   G dd„ dƒ}|ƒ }|   |¡\}}}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')©r   rW   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	   ©rW   r   r%   Ú__hash__Úid©r   rß  rÖ  rà  rl   r   r   r   Útest___hash__ù
  ó   z&UtilityRegistrationTests.test___hash__c                 C   ó&   t ƒ }|  |¡\}}}|  ||¡ d S r	   ©rW   r   r%   rí  r   r   r   Útest___eq___identityþ
  ó   z-UtilityRegistrationTests.test___eq___identityc                 C   ó6   t ƒ }|  |¡\}}}|  |¡\}}}|  ||¡ d S r	   rñ  ©r   rß  rÖ  rà  rl   Úur2r×  r   r   r   Útest___eq___hit  ó   z(UtilityRegistrationTests.test___eq___hitc                 C   ó<   t ƒ }t ƒ }|  |¡\}}}|  |¡\}}}|  ||¡ d S r	   ©rW   r   r¶  ©r   rß  Ú_component2rÖ  rà  rl   rö  r×  r   r   r   Útest___eq___miss	  ó
   z)UtilityRegistrationTests.test___eq___missc                 C   rð  r	   rñ  rí  r   r   r   Útest___ne___identity  ró  z-UtilityRegistrationTests.test___ne___identityc                 C   rô  r	   rñ  rõ  r   r   r   Útest___ne___hit  rø  z(UtilityRegistrationTests.test___ne___hitc                 C   rù  r	   rú  rû  r   r   r   Útest___ne___miss  rþ  z)UtilityRegistrationTests.test___ne___missc                 C   ó(   t ƒ }|  |¡\}}}|  ||k ¡ d S r	   ©rW   r   rž   rí  r   r   r   Útest___lt___identity"  ó   z-UtilityRegistrationTests.test___lt___identityc                 C   ó8   t ƒ }|  |¡\}}}|  |¡\}}}|  ||k ¡ d S r	   r  rõ  r   r   r   Útest___lt___hit'  ó   z(UtilityRegistrationTests.test___lt___hitc                 C   óF   t ƒ }t ƒ }|  |¡\}}}|  |¡\}}}|d |_|  ||¡ d S ©NÚ2©rW   r   r   Z
assertLessrû  r   r   r   Útest___lt___miss-  ó   
z)UtilityRegistrationTests.test___lt___missc                 C   rð  r	   ©rW   r   ÚassertLessEqualrí  r   r   r   Útest___le___identity5  ró  z-UtilityRegistrationTests.test___le___identityc                 C   rô  r	   r  rõ  r   r   r   Útest___le___hit:  rø  z(UtilityRegistrationTests.test___le___hitc                 C   r	  r
  ©rW   r   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___identityH  r  z-UtilityRegistrationTests.test___gt___identityc                 C   óF   t ƒ }t ƒ }|  |¡\}}}|  |¡\}}}|d |_|  ||¡ d S r
  ©rW   r   r   ZassertGreaterrû  r   r   r   Útest___gt___hitM  r  z(UtilityRegistrationTests.test___gt___hitc                 C   ó8   t ƒ }|  |¡\}}}|  |¡\}}}|  ||k¡ d S r	   r  rõ  r   r   r   Útest___gt___missU  r  z)UtilityRegistrationTests.test___gt___missc                 C   rð  r	   ©rW   r   ÚassertGreaterEqualrí  r   r   r   Útest___ge___identity[  ró  z-UtilityRegistrationTests.test___ge___identityc                 C   óH   t ƒ }t ƒ }|  |¡\}}}|  |¡\}}}|d |_|  ||k¡ d S r
  ©rW   r   r   rž   rû  r   r   r   Útest___ge___miss`  ó   
z)UtilityRegistrationTests.test___ge___missc                 C   ó@   t ƒ }|  |¡\}}}|  |¡\}}}|d |_|  ||¡ d S r
  ©rW   r   r   r  rõ  r   r   r   Útest___ge___hith  ó
   
z(UtilityRegistrationTests.test___ge___hit)NN)r&   r@   rA   r   r   rÑ  rØ  r6   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½  ¤
  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Þ   )re   rß   )r   rß   r   r   r   r   r  r¿  z(AdapterRegistrationTests._getTargetClassNc                 C   ój   ddl m} G dd„ d|ƒ}|dƒ}|dƒ}G dd„ dƒ}|ƒ }d}d	}	|  ¡ }
|
||f||||	ƒ||fS )
Nr   r:   c                   @   r>   )z/AdapterRegistrationTests._makeOne.<locals>.IFooNr?   r   r   r   r   rB   y  rC   rB   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;   rB   rK   rÜ   rÅ  r   r   rÈ  rÉ  r   r   r   r   v  ó   ýz!AdapterRegistrationTests._makeOnec                 C   rË  )Nr   ©ÚIAdapterRegistrationrÎ  )rd   r,  rÐ  rÏ  r   )r   r,  rÏ  r   r   r   Ú+test_class_conforms_to_IAdapterRegistration�  rÒ  zDAdapterRegistrationTests.test_class_conforms_to_IAdapterRegistrationc                 C   rÓ  )Nr   r+  rÔ  )rd   r,  rÐ  rÕ  r   )r   r,  rÕ  Úarr×  r   r   r   Ú.test_instance_conforms_to_IAdapterRegistration’  rÙ  zGAdapterRegistrationTests.test_instance_conforms_to_IAdapterRegistrationc                 C   rÚ  )Nc                   @   rÛ  )z:AdapterRegistrationTests.test___repr__.<locals>._ComponentrÜ  Nr?   r   r   r   r   rÝ  š  rª  rÝ  zCAdapterRegistration(_REGISTRY, [IBar], IFoo, %r, TEST, 'DOCSTRING')r3   ©r   rÝ  rß  r.  rà  rl   r   r   r   r6   ˜  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å  r0  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Ý  r1  rå  r0  r   r   r   rè  ¶  rç  z8AdapterRegistrationTests.test___repr___component_wo_namec                 C   ré  r	   rê  ©r   rß  r.  rà  rl   r   r   r   rî  Æ  rï  z&AdapterRegistrationTests.test___hash__c                 C   rð  r	   rñ  r2  r   r   r   rò  Ë  ró  z-AdapterRegistrationTests.test___eq___identityc                 C   rô  r	   rñ  ©r   rß  r.  rà  rl   Úar2r×  r   r   r   r÷  Ð  rø  z(AdapterRegistrationTests.test___eq___hitc                 C   rù  r	   rú  ©r   rß  rü  r.  rà  rl   r4  r×  r   r   r   rý  Ö  rþ  z)AdapterRegistrationTests.test___eq___missc                 C   rð  r	   rñ  r2  r   r   r   rÿ  Ý  ró  z-AdapterRegistrationTests.test___ne___identityc                 C   rô  r	   rñ  r3  r   r   r   r  â  rø  z)AdapterRegistrationTests.test___ne___missc                 C   rù  r	   rú  r5  r   r   r   Útest___ne___hit_componentè  rþ  z2AdapterRegistrationTests.test___ne___hit_componentc           
      C   s`   ddl m} G dd„ d|ƒ}|dƒ}tƒ }|  |¡\}}}|  |¡\}}	}	||_|  ||¡ d S )Nr   r:   c                   @   r>   )z?AdapterRegistrationTests.test___ne___hit_provided.<locals>.IFooNr?   r   r   r   r   rB   ò  rC   rB   r5  )rI   r;   rW   r   rj   r¶  )
r   r;   rB   r:  rß  r.  rà  rl   r4  r×  r   r   r   Útest___ne___hit_providedï  s   z1AdapterRegistrationTests.test___ne___hit_providedc                 C   sh   ddl m} G dd„ d|ƒ}|dƒ}tƒ }tƒ }|  |¡\}}}|  |¡\}	}
}
|f|	_|  ||	¡ d S )Nr   r:   c                   @   r>   )z?AdapterRegistrationTests.test___ne___hit_required.<locals>.IFooNr?   r   r   r   r   rB   ÿ  rC   rB   r5  )rI   r;   rW   r   rã   r¶  )r   r;   rB   r:  rß  rü  r.  rà  rl   r4  r×  r   r   r   Útest___ne___hit_requiredü  s   z1AdapterRegistrationTests.test___ne___hit_requiredc                 C   r  r	   r  r2  r   r   r   r  
  r  z-AdapterRegistrationTests.test___lt___identityc                 C   r  r	   r  r3  r   r   r   r    r  z(AdapterRegistrationTests.test___lt___hitc                 C   r	  r
  r  r5  r   r   r   r    r  z)AdapterRegistrationTests.test___lt___missc                 C   rð  r	   r  r2  r   r   r   r    ró  z-AdapterRegistrationTests.test___le___identityc                 C   rô  r	   r  r3  r   r   r   r  "  rø  z(AdapterRegistrationTests.test___le___hitc                 C   r	  r
  r  r5  r   r   r   r  (  r  z)AdapterRegistrationTests.test___le___missc                 C   r  r	   r  r2  r   r   r   r  0  r  z-AdapterRegistrationTests.test___gt___identityc                 C   r  r
  r  r5  r   r   r   r  5  r  z(AdapterRegistrationTests.test___gt___hitc                 C   r  r	   r  r3  r   r   r   r  =  r  z)AdapterRegistrationTests.test___gt___missc                 C   rð  r	   r  r2  r   r   r   r  C  ró  z-AdapterRegistrationTests.test___ge___identityc                 C   r  r
  r   r5  r   r   r   r!  H  r"  z)AdapterRegistrationTests.test___ge___missc                 C   r#  r
  r$  r3  r   r   r   r%  P  r&  z(AdapterRegistrationTests.test___ge___hitr	   )r&   r@   rA   r   r   r-  r/  r6   ræ  rè  rî  rò  r÷  rý  rÿ  r  r6  r7  r8  r  r  r  r  r  r  r  r  r  r  r!  r%  r   r   r   r   r'  p  s:    
r'  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   r[  )re   r\  )r   r\  r   r   r   r   Z  r¿  z-SubscriptionRegistrationTests._getTargetClassNc                 C   r(  )
Nr   r:   c                   @   r>   )z4SubscriptionRegistrationTests._makeOne.<locals>.IFooNr?   r   r   r   r   rB   a  rC   rB   r˜   c                   @   r  )z9SubscriptionRegistrationTests._makeOne.<locals>._Registryc                 S   rÁ  rÂ  r   r
   r   r   r   rÃ  h  r   zBSubscriptionRegistrationTests._makeOne.<locals>._Registry.__repr__NrÄ  r   r   r   r   rÅ  g  r  rÅ  r   rÆ  rÇ  r)  r   r   r   r   ^  r*  z&SubscriptionRegistrationTests._makeOnec                 C   rË  )Nr   ©Ú ISubscriptionAdapterRegistrationrÎ  )rd   r;  rÐ  rÏ  r   )r   r;  rÏ  r   r   r   Ú7test_class_conforms_to_ISubscriptionAdapterRegistrationu  rÒ  zUSubscriptionRegistrationTests.test_class_conforms_to_ISubscriptionAdapterRegistrationc                 C   rÓ  )Nr   r:  rÔ  )rd   r;  rÐ  rÕ  r   )r   r;  rÕ  Zsarr×  r   r   r   Ú:test_instance_conforms_to_ISubscriptionAdapterRegistrationz  rÙ  zXSubscriptionRegistrationTests.test_instance_conforms_to_ISubscriptionAdapterRegistrationr	   )r&   r@   rA   r   r   r<  r=  r   r   r   r   r9  X  s
    
r9  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�  )re   r‚  )r   r‚  r   r   r   r   ƒ  r¿  z(HandlerRegistrationTests._getTargetClassNc           
      C   s`   ddl m} G dd„ d|ƒ}|dƒ}G dd„ dƒ}|ƒ }d}d}|  ¡ }	|	||f|||ƒ||fS )	Nr   r:   c                   @   r>   )z/HandlerRegistrationTests._makeOne.<locals>.IFooNr?   r   r   r   r   rB   Š  rC   rB   c                   @   r  )z4HandlerRegistrationTests._makeOne.<locals>._Registryc                 S   rÁ  rÂ  r   r
   r   r   r   rÃ  �  r   z=HandlerRegistrationTests._makeOne.<locals>._Registry.__repr__NrÄ  r   r   r   r   rÅ  �  r  rÅ  r   rÆ  rÇ  )
r   rU   r;   rB   rK   rÅ  r   r   rÈ  rÉ  r   r   r   r   ‡  rÊ  z!HandlerRegistrationTests._makeOnec                 C   rË  )Nr   ©ÚIHandlerRegistrationrÎ  )rd   r@  rÐ  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Ô  )rd   r@  rÐ  rÕ  r   )r   r@  rÕ  Úhrr×  r   r   r   Ú.test_instance_conforms_to_IHandlerRegistration¢  rÙ  zGHandlerRegistrationTests.test_instance_conforms_to_IHandlerRegistrationc                 C   sF   dd„ }|   |¡\}}}|  |j|¡ |  |j|j¡ |  |j¡ d S )Nc                 S   rO   r	   rP   rà   r   r   r   rR   ©  rS   z:HandlerRegistrationTests.test_properties.<locals>._factory)r   rf   ÚhandlerrV   rk   rj   )r   rR   rB  r×  r   r   r   Útest_properties¨  s
   z(HandlerRegistrationTests.test_propertiesc                 C   ó8   G dd„ dƒ}|   |ƒ ¡\}}}|  t|ƒd| ¡ d S )Nc                   @   rÛ  )zGHandlerRegistrationTests.test___repr___factory_w_name.<locals>._FactoryrÜ  Nr?   r   r   r   r   rå   ²  rª  rå   ú=HandlerRegistration(_REGISTRY, [IFoo], %r, TEST, 'DOCSTRING')r3   ©r   rå   rB  rà  rl   r   r   r   Útest___repr___factory_w_name°  s   ýÿz5HandlerRegistrationTests.test___repr___factory_w_namec                 C   rF  )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å   ¾  r  rå   rG  r3   rH  r   r   r   Útest___repr___factory_wo_name¼  s   ýÿz6HandlerRegistrationTests.test___repr___factory_wo_namer	   )
r&   r@   rA   r   r   rA  rC  rE  rI  rJ  r   r   r   r   r>  �  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 )NZ_vÚro)Ú__dict__Úcopyr”   Z
_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  rM  ÚupdateZ_createLookupr'   rM  rL  )r   rQ  Úbasesr   r   r   Ú__setstate__Õ  s
   z&PersistentAdapterRegistry.__setstate__N)r&   r@   rA   rS  rV  r   r   r   r   rK  Ë  s    rK  c                   @   r  )ÚPersistentComponentsc                 C   s   t ƒ | _t ƒ | _d S r	   )rK  r)   r*   r
   r   r   r   Ú_init_registriesá  s   z%PersistentComponents._init_registriesN)r&   r@   rA   rX  r   r   r   r   rW  Ý  s    rW  c                   @   r>   )ÚPersistentDictComponentsNr?   r   r   r   r   rY  æ  rF   rY  c                   @   r  )ÚPersistentComponentsDictc                 C   s   t  | ¡ t | |¡ d S r	   )r‹   r°   rW  )r   r   r   r   r   r°   í  s   
z!PersistentComponentsDict.__init__Nr  r   r   r   r   rZ  ë  ó    rZ  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   )rW  r
   r   r   r   r   ô  r|  z!TestPersistentComponents._makeOnec                 C   s   d S r	   r   ©r   Z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`  r/   Úcomp2r   r   r   Útest_pickles_emptyú  s
   
z+TestPersistentComponents.test_pickles_emptyc                 C   sŽ   dd l }|  ¡ }tƒ }| |t¡ |  || t¡¡ | | |¡¡}|  	|j
d¡ |  | t¡¡ | |t¡ |  || t¡¡ |  |¡ d S r_  )r`  r   rW   rJ   r   rf   rÏ   rb  ra  r%   r&   ZassertIsNotNoner^  )r   r`  r/   Zutilityrc  r   r   r   Ú&test_pickles_with_utility_registration  s*   þÿþÿz?TestPersistentComponents.test_pickles_with_utility_registrationN)r&   r@   rA   r   r^  rd  re  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	   )rY  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¾   rh  )r·  r%   r]  r   r   r   r^  '  s   z9TestPersistentDictComponents._check_equality_after_pickleN)r&   r@   rA   r   r   r^  r   r   r   r   rg    s    rg  c                   @   r  )ÚTestPersistentComponentsDictc                 C   r   r	   )rZ  r
   r   r   r   r   .  r   z,TestPersistentComponentsDict._getTargetClassN)r&   r@   rA   r   r   r   r   r   ri  ,  r[  ri  c                   @   rf  )r   c                    s<   ˆ | _ ‡ fdd„|D ƒ| _| ¡ D ]
\}}tˆ ||ƒ qd S )Nc                    s   i | ]}|t ˆ |ƒ“qS r   )Úgetattr)Ú.0r¾   ©Úmoduler   r   Ú
<dictcomp>6  s    z$_Monkey.__init__.<locals>.<dictcomp>)rm  Ú
to_restoreÚitemsÚsetattr)r   rm  r   r¾   Úvaluer   rl  r   r°   4  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	   )ro  rp  rq  rm  )r   Úexc_typeÚexc_valÚexc_tbr¾   rr  r   r   r   Ú__exit__=  s   ÿz_Monkey.__exit__N)r&   r@   rA   r°   rs  rw  r   r   r   r   r   2  s    r   )r©  Zunittestr   r   r$   r   re   r   ZTestCaser   r¼  r½  r'  r9  r>  rK  rW  r‹   rY  rZ  r\  rg  ri  r   r   r   r   r   Ú<module>   sT                         M i)J	+