o
    ¼>h×· ã                   @   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„ZIdd‘„ 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   ú‚/var/www/vedio/testing/chatpythonscript.ninositsolution.com/env/lib/python3.10/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   Úinfo1Úinfo2r   é   rb   ©rI   r;   rW   r   rJ   r!   r%   ri   r+   r*   rh   )r   r;   rB   rK   Ú_info1Ú_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   r|   ©r   r;   rB   rK   rL   Ú_name1Ú_name2Ú
_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   r{   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   Ú_beforeÚ_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   r{   ©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   r{   )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   r{   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   Ú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>©Úkeyr{   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;   Ú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û   Ú	_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Å   r{   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   r0  c                   @   r>   )z;ComponentsTests.test_getAdapter_hit_super.<locals>.IDerivedNr?   r   r   r   r   ÚIDerived½  rC   r1  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   r2  c                   @   r>   )z:ComponentsTests.test_getAdapter_hit_super.<locals>.DerivedNr?   r   r   r   r   ÚDerivedÇ  rF   r3  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(  r4  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(  r5  ©r   r   rI   rò   r   rã   Ú_should_not_changer-  r(   rf   ré   r‘   ©r   r   rò   r0  r1  rB   r2  r3  r4  r5  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   r0  æ  rC   r0  c                   @   r>   )zaComponentsTests.test_getAdapter_hit_super_w_parent_implements_interface_diamond.<locals>.IDerivedNr?   r   r   r   r   r1  é  rC   r1  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   r2  ï  rC   r2  c                   @   r>   )z_ComponentsTests.test_getAdapter_hit_super_w_parent_implements_interface_diamond.<locals>.Child1Nr?   r   r   r   r   ÚChild1ò  rC   r<  c                   @   r>   )z_ComponentsTests.test_getAdapter_hit_super_w_parent_implements_interface_diamond.<locals>.Child2Nr?   r   r   r   r   ÚChild2õ  rF   r=  c                   @   r>   )z`ComponentsTests.test_getAdapter_hit_super_w_parent_implements_interface_diamond.<locals>.DerivedNr?   r   r   r   r   r3  ù  rF   r3  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   r4  ý  r(  r4  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   r5    r(  r5  r6  )r   r   rò   r0  r1  rB   r2  r<  r=  r3  r4  r5  r/   r9  r*  r:  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   r@  c                   @   r>   )z>ComponentsTests.test_queryMultiAdapter_miss.<locals>._Context2Nr?   r   r   r   r   Ú	_Context2"  rF   rA  )rI   r;   rò   r   r%   ÚqueryMultiAdapter©r   r;   rò   rB   rK   rä   Úibazr@  rA  Ú	_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Ÿ   r?  c                   @   r>   )zHComponentsTests.test_queryMultiAdapter_miss_w_default.<locals>._Context1Nr?   r   r   r   r   r@  7  rF   r@  c                   @   r>   )zHComponentsTests.test_queryMultiAdapter_miss_w_default.<locals>._Context2Nr?   r   r   r   r   rA  ;  rF   rA  rÍ   )rI   r;   rò   rW   r   rf   rB  )r   r;   rò   rB   rK   rä   rD  r@  rA  rE  rF  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Ÿ   r?  c                   @   r>   )z=ComponentsTests.test_queryMultiAdapter_hit.<locals>._Context1Nr?   r   r   r   r   r@  T  rF   r@  c                   @   r>   )z=ComponentsTests.test_queryMultiAdapter_hit.<locals>._Context2Nr?   r   r   r   r   rA  X  rF   rA  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ã   rB  r(   r%   ré   ©r   r;   rò   rB   rK   rä   rD  r@  rA  rE  rF  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Ÿ   r?  c                   @   r>   )z<ComponentsTests.test_getMultiAdapter_miss.<locals>._Context1Nr?   r   r   r   r   r@  u  rF   r@  c                   @   r>   )z<ComponentsTests.test_getMultiAdapter_miss.<locals>._Context2Nr?   r   r   r   r   rA  y  rF   rA  )rI   r;   rò   rd   rÖ   r   rX   ÚgetMultiAdapter)r   r;   rò   rÖ   rB   rK   rä   rD  r@  rA  rE  rF  r/   r   r   r   Útest_getMultiAdapter_missi  s"   ÿz)ComponentsTests.test_getMultiAdapter_missc                 C   rI  )Nr   r:   rñ   c                   @   r>   )z6ComponentsTests.test_getMultiAdapter_hit.<locals>.IFooNr?   r   r   r   r   rB   ‡  rC   rB   rŸ   r?  c                   @   r>   )z;ComponentsTests.test_getMultiAdapter_hit.<locals>._Context1Nr?   r   r   r   r   r@  Ž  rF   r@  c                   @   r>   )z;ComponentsTests.test_getMultiAdapter_hit.<locals>._Context2Nr?   r   r   r   r   rA  ’  rF   rA  c                   @   r#  )z:ComponentsTests.test_getMultiAdapter_hit.<locals>._Factoryc                 S   rJ  r	   rè   rK  r   r   r   r¸   š  rN  zCComponentsTests.test_getMultiAdapter_hit.<locals>._Factory.__init__Nr'  r   r   r   r   rí   ™  r(  rí   )	rI   r;   rò   r   rã   rR  r(   r%   ré   rO  r   r   r   Útest_getMultiAdapter_hitƒ  rQ  z(ComponentsTests.test_getMultiAdapter_hitc                    s(   ‡ fdd„}||_ ||j_ ||jj_ d S )Nc                     s   ˆ   d¡ d S )NzNothing should get changed)Úfail)r   r
   r   r   Ú
no_changes§  rN  z6ComponentsTests._should_not_change.<locals>.no_changes)Úchangedr)   Ú	_v_lookup)r   r/   rV  r   r
   r   r7  £  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   r0  ±  rC   r0  c                   @   r>   )z@ComponentsTests.test_getMultiAdapter_hit_super.<locals>.IDerivedNr?   r   r   r   r   r1  ´  rC   r1  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   r2  º  rF   r2  c                   @   r>   )z?ComponentsTests.test_getMultiAdapter_hit_super.<locals>.DerivedNr?   r   r   r   r   r3  ¾  rF   r3  c                   @   r#  )zCComponentsTests.test_getMultiAdapter_hit_super.<locals>.AdapterBasec                 S   s   || _ || _d S r	   ©rL  rM  rK  r   r   r   r¸   Ã  s   
zLComponentsTests.test_getMultiAdapter_hit_super.<locals>.AdapterBase.__init__Nr'  r   r   r   r   r4  Â  r(  r4  c                   @   r>   )zFComponentsTests.test_getMultiAdapter_hit_super.<locals>.AdapterDerivedNr?   r   r   r   r   r5  Ç  rC   r5  )r   r   rI   rò   r   rã   r7  rR  r(   rf   rL  rM  r‘   ÚassertNotIsInstancer8  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Ÿ   r?  c                   @   r>   )z9ComponentsTests.test_getAdapters_empty.<locals>._Context1Nr?   r   r   r   r   r@  ç  rF   r@  c                   @   r>   )z9ComponentsTests.test_getAdapters_empty.<locals>._Context2Nr?   r   r   r   r   rA  ë  rF   rA  )rI   r;   rò   r   r%   r›   ÚgetAdaptersrC  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Ÿ   r?  c                   @   r>   )zHComponentsTests.test_getAdapters_factory_returns_None.<locals>._Context1Nr?   r   r   r   r   r@     rF   r@  c                   @   r>   )zHComponentsTests.test_getAdapters_factory_returns_None.<locals>._Context2Nr?   r   r   r   r   rA    rF   rA  c                    r   r	   r   rY  ©Ú_called_withr   r   Ú_side_effect_only  s   zPComponentsTests.test_getAdapters_factory_returns_None.<locals>._side_effect_only)rI   r;   rò   r   rã   r%   r›   r\  )r   r;   rò   rB   rK   rä   rD  r@  rA  rE  rF  r/   r`  r   r^  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Ÿ   r?  c                   @   r>   )z=ComponentsTests.test_getAdapters_non_empty.<locals>._Context1Nr?   r   r   r   r   r@  !  rF   r@  c                   @   r>   )z=ComponentsTests.test_getAdapters_non_empty.<locals>._Context2Nr?   r   r   r   r   rA  %  rF   rA  c                   @   r#  )z=ComponentsTests.test_getAdapters_non_empty.<locals>._Factory1c                 S   rJ  r	   rè   rK  r   r   r   r¸   -  rN  zFComponentsTests.test_getAdapters_non_empty.<locals>._Factory1.__init__Nr'  r   r   r   r   Ú	_Factory1,  r(  rb  c                   @   r#  )z=ComponentsTests.test_getAdapters_non_empty.<locals>._Factory2c                 S   rJ  r	   rè   rK  r   r   r   r¸   1  rN  zFComponentsTests.test_getAdapters_non_empty.<locals>._Factory2.__init__Nr'  r   r   r   r   Ú	_Factory20  r(  rc  r€   r   rÀ   r{   rc   )
rI   r;   rò   r   rã   rÇ   r\  r%   ri   r(   )r   r;   rò   rB   rK   rä   rD  r@  rA  rE  rF  rb  rc  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   ri  r   r!   rf  r)   rh   r%   ri   rf   r-   r(   rW   r   rj   rë   r   rG   rV   )r   r;   r_   ri  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^   rh  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   ri  r   r!   rf  r)   rh   r%   ri   rf   r-   r(   rW   r   rj   rë   r   rG   rV   )r   r;   rò   r_   ri  rB   rK   rä   rL   rk  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^   rh  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   rj  )r   r;   r_   ri  rB   rK   rL   rk  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!   rf  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:   rh  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   r{   rc   )rI   r;   re   ri  r   rf  r›   rq  r%   ri   r(   rf   r   rj   rë   r   rG   rV   )r   r;   ri  rB   rK   rä   rL   rk  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   rv  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  ru  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!   rv  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‡   rh  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   ri  r   rf  r!   rv  r¨   r¥   r)   rh   r-   r%   ri   r(   rW   rf   r   rj   rë   r   rG   rk   rV   ©r   r;   rˆ   ri  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‡   rh  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   ri  r   rf  r!   rv  r¨   r¥   r)   rh   r-   r%   ri   r(   rW   rf   r   rj   rë   r   rG   rV   r|  r   r   r   Ú0test_unregisterSubscriptionAdapter_hit_w_factoryW  r  z@ComponentsTests.test_unregisterSubscriptionAdapter_hit_w_factoryc                 C   r  )Nr   r:   rñ   r‡   rh  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   ri  r   rf  r!   rv  r¨   r%   ri   r(   rW   rf   r   rj   rë   r   rG   rV   )r   r;   rò   rˆ   ri  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‡   rh  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   ri  r   rf  r!   rv  r¨   r%   ri   r(   rW   rf   r   rj   rë   r   rG   rV   )r   r;   rˆ   ri  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   r  )rI   r;   rò   r   r%   r›   Úsubscribers)	r   r;   rò   rB   rK   rä   r/   r  Úbarr   r   r   Útest_subscribers_empty¾  s   z&ComponentsTests.test_subscribers_emptyc                    sô   ddl m} ddl m} G dd„ d|ƒ}|dƒ}|dƒ‰ G ‡ fdd„dƒ}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   r…  c                   @   r>   )z7ComponentsTests.test_subscribers_non_empty.<locals>.BarNr?   r   r   r   r   r  ç  rF   r  c                 S   s   | j jS r	   )r•   r&   ©Úxr   r   r   Ú
_klassnameî  ó   z>ComponentsTests.test_subscribers_non_empty.<locals>._klassnamerÅ   r{   rc   )
rI   r;   rò   r   rf  r‚  rÇ   r%   ri   r(   )r   r;   rò   rB   rK   rí   r…  r/   r  rƒ  r‚  rˆ  r   r  r   Útest_subscribers_non_emptyÐ  s&   z*ComponentsTests.test_subscribers_non_emptyc                 C   sR   ddl m} G dd„ d|ƒ}|dƒ}d}|  ¡ }dd„ }| jt|j|||d d S )	Nr   r:   c                   @   r>   )zBComponentsTests.test_registerHandler_w_nonblank_name.<locals>.IFooNr?   r   r   r   r   rB   ù  rC   rB   rt  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   rw  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   rk  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í   Fro  rc   )rI   r;   r   r!   rŒ  r)   rh   r%   ri   rf   r.   )
r   r;   rB   rL   rk  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_namer†  r   r   r   Ú_factory_nameZ	  r&  zHComponentsTests.test_registeredHandlers_non_empty.<locals>._factory_namerÅ   r{   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™  r‚  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   rt  r‹  )rI   r;   r   rX   rY   ÚunregisterHandler)r   r;   rB   rK   rw  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   r  ì	  rF   r  )rI   r;   rò   r   Úhandle)r   r;   rò   rB   rK   r/   r  rƒ  r   r   r   Útest_handle_emptyâ	  s   z!ComponentsTests.test_handle_emptyc           
         sº   ddl m} ddl m} G dd„ d|ƒ}|dƒ}g ‰ ‡ fdd„}g ‰‡fdd	„}|  ¡ }| ||f¡ | ||f¡ ||ƒG d
d„ dƒƒ}|ƒ }	| |	¡ |  ˆ |	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ý	  rN  z9ComponentsTests.test_handle_non_empty.<locals>._factory_1c                    r¦  r	   r   rè   )Ú	_called_2r   r   Ú
_factory_2
  rN  z9ComponentsTests.test_handle_non_empty.<locals>._factory_2c                   @   r>   )z2ComponentsTests.test_handle_non_empty.<locals>.BarNr?   r   r   r   r   r  	
  rF   r  )rI   r;   rò   r   rŒ  r¤  r%   )
r   r;   rò   rB   rK   r¨  rª  r/   r  rƒ  r   )r§  r©  r   Útest_handle_non_emptyó	  s"   
z%ComponentsTests.test_handle_non_emptyTc                 C   sü   G dd„ dt ƒ}|  ¡ }tƒ }|r|ntƒ }|j||d |j||dd |  t|jjƒd¡ |  |jj|d|r;|fn||fiig¡ |  |jj||rMdnd	i¡ |j	||d}|  
|¡ |j	||dd}|  
|¡ |  |jji ¡ |  t|jjƒd
¡ d S )Nc                   @   r>   )zQComponentsTests.test_register_unregister_identical_objects_provided.<locals>.IFooNr?   r   r   r   r   rB   
  rC   rB   r  rƒ  r¯   rc   rb   r    é   r   )r   r   rW   rJ   r%   ri   r*   rh   Ú	_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   é   é   é   é   é   )Údid_not_registerÚneeded_registeredÚdid_not_subscribeÚneeded_subscribedT)Úrebuild)r   r   ÚrangerJ   r*   Ú_generationrg   r%   ri   rh   Útyper   ÚstrÚassertNotEqualÚ$rebuildUtilityRegistryFromLocalCacheÚassertIn)r   rB   r¹  ÚcompsÚiÚorig_generationÚorig_adaptersÚorig_subscribersÚnew_adaptersÚdr   Únew_subsr/   Úrebuild_preflightÚrebuild_resultsÚorig_subscriberÚpreflight_afterÚ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/  r;  r>  rG  rH  rP  rS  rT  r7  r[  r]  ra  re  rg  rl  rm  rn  rp  rr  rs  rx  ry  rz  r{  r}  r~  r  r€  r„  rŠ  r  r  r’  r”  rš  rœ  r  rŸ  r¡  r¢  r£  r¥  r«  r²  r³  rÚ  r—   r   r   r”   r   r      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 ©NÚ	_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   Ú
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	   r0  r  r   r   r   Útest___le___hit:  r  z(UtilityRegistrationTests.test___le___hitc                 C   r)  r*  ©rW   r   r   r1  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   Ú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.  r2  r3  r5  r7  r;  r=  r@  rC  rG  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   rN  rð  rï  r   )r   rN  rï  r   r   r   Ú+test_class_conforms_to_IAdapterRegistration  rò  zDAdapterRegistrationTests.test_class_conforms_to_IAdapterRegistrationc                 C   ró  )Nr   rM  rô  )rd   rN  rð  rõ  r   )r   rN  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ÿ  rP  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  rR  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ý  rS  r  rR  r   r   r   r  ¶  r  z8AdapterRegistrationTests.test___repr___component_wo_namec                 C   r	  r	   r
  ©r   rÿ  rP  r   rl   r   r   r   r  Æ  r  z&AdapterRegistrationTests.test___hash__c                 C   r  r	   r  rT  r   r   r   r  Ë  r  z-AdapterRegistrationTests.test___eq___identityc                 C   r  r	   r  ©r   rÿ  rP  r   rl   Úar2r÷  r   r   r   r  Ð  r  z(AdapterRegistrationTests.test___eq___hitc                 C   r  r	   r  ©r   rÿ  r  rP  r   rl   rV  r÷  r   r   r   r  Ö  r  z)AdapterRegistrationTests.test___eq___missc                 C   r  r	   r  rT  r   r   r   r  Ý  r  z-AdapterRegistrationTests.test___ne___identityc                 C   r  r	   r  rU  r   r   r   r!  â  r  z)AdapterRegistrationTests.test___ne___missc                 C   r  r	   r  rW  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   r?  )rI   r;   rW   r   rj   rÊ  )
r   r;   rB   rD  rÿ  rP  r   rl   rV  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   r?  )rI   r;   rW   r   rë   rÊ  )r   r;   rB   rD  rÿ  r  rP  r   rl   rV  r÷  r   r   r   Útest___ne___hit_requiredü  s   z1AdapterRegistrationTests.test___ne___hit_requiredc                 C   r"  r	   r#  rT  r   r   r   r$  
  r%  z-AdapterRegistrationTests.test___lt___identityc                 C   r&  r	   r#  rU  r   r   r   r'    r(  z(AdapterRegistrationTests.test___lt___hitc                 C   r)  r*  r,  rW  r   r   r   r.    r/  z)AdapterRegistrationTests.test___lt___missc                 C   r  r	   r0  rT  r   r   r   r2    r  z-AdapterRegistrationTests.test___le___identityc                 C   r  r	   r0  rU  r   r   r   r3  "  r  z(AdapterRegistrationTests.test___le___hitc                 C   r)  r*  r4  rW  r   r   r   r5  (  r/  z)AdapterRegistrationTests.test___le___missc                 C   r6  r	   r#  rT  r   r   r   r7  0  r%  z-AdapterRegistrationTests.test___gt___identityc                 C   r8  r*  r9  rW  r   r   r   r;  5  r/  z(AdapterRegistrationTests.test___gt___hitc                 C   r<  r	   r#  rU  r   r   r   r=  =  r(  z)AdapterRegistrationTests.test___gt___missc                 C   r  r	   r>  rT  r   r   r   r@  C  r  z-AdapterRegistrationTests.test___ge___identityc                 C   rA  r*  rB  rW  r   r   r   rC  H  rD  z)AdapterRegistrationTests.test___ge___missc                 C   rE  r*  rF  rU  r   r   r   rG  P  rH  z(AdapterRegistrationTests.test___ge___hitr	   )r&   r@   rA   r   r   rO  rQ  r6   r  r  r  r  r  r  r  r!  rX  rY  rZ  r$  r'  r.  r2  r3  r5  r7  r;  r=  r@  rC  rG  r   r   r   r   rI  p  s:    
rI  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   rh  )re   ri  )r   ri  r   r   r   r   Z  rÞ  z-SubscriptionRegistrationTests._getTargetClassNc                 C   rJ  )
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ç  rK  r   r   r   r   ^  rL  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õ  Ú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   r[  X  s
    
r[  c                   @   sF   e Zd Zdd„ Zddd„Zdd„ Zdd	„ Zd
d„ Zdd„ Zdd„ Z	dS )ÚHandlerRegistrationTestsc                 C   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   rc  rð  rï  r   )r   rc  rï  r   r   r   Ú+test_class_conforms_to_IHandlerRegistration  rò  zDHandlerRegistrationTests.test_class_conforms_to_IHandlerRegistrationc                 C   ró  )Nr   rb  rô  )rd   rc  rð  rõ  r   )r   rc  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   re  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í   re  r   rl   r   r   r   Útest___repr___factory_w_name°  s   ýÿz5HandlerRegistrationTests.test___repr___factory_w_namec                 C   ri  )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í   rj  r3   rk  r   r   r   Útest___repr___factory_wo_name¼  s   ýÿz6HandlerRegistrationTests.test___repr___factory_wo_namer	   )
r&   r@   rA   r   r   rd  rf  rh  rl  rm  r   r   r   r   ra    s    
ra  c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚPersistentAdapterRegistryc                 C   sF   | j  ¡ }t|ƒD ]}|| jv s| d¡r| |¡ q	| dd ¡ |S )NÚ_vÚro)Ú__dict__Úcopyr›   Ú
_delegatedÚ
startswithÚpop)r   ÚstateÚkr   r   r   Ú__getstate__Í  s   

€z&PersistentAdapterRegistry.__getstate__c                 C   s6   |  dd¡}| j |¡ |  ¡  || _| j | ¡ d S )Nr'   r   )ru  rq  ÚupdateÚ_createLookupr'   rX  rW  )r   rv  Úbasesr   r   r   Ú__setstate__Õ  s
   z&PersistentAdapterRegistry.__setstate__N)r&   r@   rA   rx  r|  r   r   r   r   rn  Ë  s    rn  c                   @   r#  )ÚPersistentComponentsc                 C   s   t ƒ | _t ƒ | _d S r	   )rn  r)   r*   r
   r   r   r   Ú_init_registriesá  s   z%PersistentComponents._init_registriesN)r&   r@   rA   r~  r   r   r   r   r}  Ý  s    r}  c                   @   r>   )ÚPersistentDictComponentsNr?   r   r   r   r   r  æ  rF   r  c                   @   r#  )ÚPersistentComponentsDictc                 C   s   t  | ¡ t | |¡ d S r	   )r’   r¸   r}  )r   r   r   r   r   r¸   í  s   
z!PersistentComponentsDict.__init__Nr'  r   r   r   r   r€  ë  ó    r€  c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚTestPersistentComponentsc                 C   s   t dƒS )Nr   )r}  r
   r   r   r   r   ô  r‰  z!TestPersistentComponents._makeOnec                 C   s   d S r	   r   ©r   Úmader   r   r   Ú_check_equality_after_pickle÷  r   z5TestPersistentComponents._check_equality_after_picklec                 C   s<   dd l }|  ¡ }| |¡ | | |¡¡}|  |jd¡ d S ©Nr   r   )Úpickler   ÚdumpsÚloadsr%   r&   )r   r‡  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×   r‰  rˆ  r%   r&   ÚassertIsNotNoner…  )r   r‡  r/   ÚutilityrŠ  r   r   r   Ú&test_pickles_with_utility_registration  s*   þÿþÿz?TestPersistentComponents.test_pickles_with_utility_registrationN)r&   r@   rA   r   r…  r‹  rŽ  r   r   r   r   r‚  ò  s
    r‚  c                   @   ó$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTestPersistentDictComponentsc                 C   r   r	   )r  r
   r   r   r   r     r   z,TestPersistentDictComponents._getTargetClassc                 C   s   |   ¡ dd}d|d< |S )Nr   rÀ   é*   rÆ   r   r5   r   r   r   r   "  s   z%TestPersistentDictComponents._makeOnec                 C   s    |   d|¡ |  |d d¡ d S )NrÆ   r‘  )rÌ  r%   rƒ  r   r   r   r…  '  s   z9TestPersistentDictComponents._check_equality_after_pickleN)r&   r@   rA   r   r   r…  r   r   r   r   r    s    r  c                   @   r#  )ÚTestPersistentComponentsDictc                 C   r   r	   )r€  r
   r   r   r   r   .  r   z,TestPersistentComponentsDict._getTargetClassN)r&   r@   rA   r   r   r   r   r   r’  ,  r  r’  c                   @   r  )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>)r–  Ú
to_restoreÚitemsÚsetattr)r   r–  r   rÆ   Úvaluer   r•  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	   )r˜  r™  rš  r–  )r   Úexc_typeÚexc_valÚexc_tbrÆ   r›  r   r   r   Ú__exit__=  s   ÿz_Monkey.__exit__N)r&   r@   rA   r¸   rœ  r   r   r   r   r   r   2  s    r   )r·  Úunittestr   r   r$   r   re   r   ÚTestCaser   rÛ  rÜ  rI  r[  ra  rn  r}  r’   r  r€  r‚  r  r’  r   r   r   r   r   Ú<module>   sT                         M i)J	+