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dd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 ZAdd ZBdd ZCdd ZDdd ZEdd ZFdd ZG fddZH fddZIdd ZJdd ZKdd ZLdd ZMdd ZNdd ZO fddZPdd ZQdd ZRdd ZSdd ZTdd ZUdd ZVdd ZWdd ZXdd ZYdd ZZdd Z[dd Z\dd Z]dd Z^dd Z_dd Z`dd Zadd ZbddÄ Zcddń ZdddǄ ZeddɄ Zfdd˄ Zgdd̈́ Zhddτ Ziddф Zjddӄ ZkddՄ Zlddׄ Zmddل Znddۄ Zodd݄ Zpdd߄ Zq	dddZrdd Zsdd Zt  ZuS )ComponentsTestsc                 C      t S Nr   self r   U/var/www/html/venv/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   Zinfo1Zinfo2r      rb   rI   r;   rW   r   rJ   r!   r%   ri   r+   r*   rh   )r   r;   rB   rK   Z_info1Z_info2rl   r[   r/   r    r   r   r   r   %test_registerUtility_w_different_info   s(   z5ComponentsTests.test_registerUtility_w_different_infoc                 C   s   ddl m} G dd d|}|d}d}d}d}t }t }|  }	|	|||| |  \}
}|
 |	|||| W d    n1 sEw   Y  | t|d | |	j||f ||d f | |	j||f ||d f | |	j	j
d | d	 ||f d S )
Nr   r:   c                   @   r>   )zSComponentsTests.test_registerUtility_w_different_names_same_component.<locals>.IFooNr?   r   r   r   r   rB     rC   rB   rG   name1name2rc   rb   rz   r   r;   rB   rK   rL   _name1_name2Z
_other_regr[   r/   r    r   r   r   r   5test_registerUtility_w_different_names_same_component  s0   zEComponentsTests.test_registerUtility_w_different_names_same_componentc                 C   s  ddl m} ddlm} ddlm} ddlm} G dd d|}|d}d}d	}t t }	}
|  }|	|	||| | 
 \}}| |	|
||| W d    n1 sVw   Y  | t|d
 |d \}}|\}| |i  | || | |j| | |jj| | |jj| | |jj| | |jj|	 | |jj| | |jj |d \}}|\}| |i  | || | |j| | |jj| | |jj| | |jj| | |jj|
 | |jj| | |jj d S )Nr   r:   r^   Unregisteredr`   c                   @   r>   )zHComponentsTests.test_registerUtility_replaces_existing_reg.<locals>.IFooNr?   r   r   r   r   rB   $  rC   rB   rG   r   ry   rc   )rI   r;   rd   r_   r   re   ra   rW   r   rJ   r!   r%   ri   r(   rf   r   rj   r   rU   rG   rk   rV   )r   r;   r_   r   ra   rB   rK   rL   rl   Z_beforeZ_afterr/   r    r   r   r   rm   r   r   r   *test_registerUtility_replaces_existing_reg  sL   z:ComponentsTests.test_registerUtility_replaces_existing_regc                 C   s   ddl m} G dd d|}|d}d}d}d}t }|  }||||| |  \}	}
|	 ||||| W d    n1 sBw   Y  | |jjd | d |f d S )	Nr   r:   c                   @   r>   )zDComponentsTests.test_registerUtility_w_existing_subscr.<locals>.IFooNr?   r   r   r   r   rB   K  rC   rB   rG   r|   r}   rb   )	rI   r;   rW   r   rJ   r!   r%   r*   rh   r   r;   rB   rK   rL   r   r   r[   r/   r    r   r   r   r   &test_registerUtility_w_existing_subscrH  s   "z6ComponentsTests.test_registerUtility_w_existing_subscrc           
      C   s   ddl m} G dd d|}|d}d}d}t }|  }|  \}}	| |||||d W d    n1 s9w   Y  | t|	d d S )Nr   r:   c                   @   r>   )z;ComponentsTests.test_registerUtility_wo_event.<locals>.IFooNr?   r   r   r   r   rB   ]  rC   rB   rG   r   F)rI   r;   rW   r   r!   rJ   r%   ri   rw   r   r   r   test_registerUtility_wo_eventZ  s   z-ComponentsTests.test_registerUtility_wo_eventc                 C   sz   G dd d|   }| }|t t | tt| d G dd dt}|t | | tt| d d S )Nc                           e Zd ZdZ fddZ  ZS )zdComponentsTests.test_registerUtility_changes_object_identity_after.<locals>.CompThatChangesAfter1Regr   c                    s8   |  j d7  _ t j|  | j dkrt| j| _d S d S )Nrc   )	reg_countsuperrJ   dictr+   r   r   	__class__r   r   rJ   p  s   

ztComponentsTests.test_registerUtility_changes_object_identity_after.<locals>.CompThatChangesAfter1Reg.registerUtilityr&   r@   rA   r   rJ   __classcell__r   r   r   r   CompThatChangesAfter1Regm      r   rc   c                   @   r>   )zPComponentsTests.test_registerUtility_changes_object_identity_after.<locals>.IFooNr?   r   r   r   r   rB   }  rC   rB   ry   r   rJ   rW   r   r%   ri   listregisteredUtilities)r   r   r/   rB   r   r   r   2test_registerUtility_changes_object_identity_afterj  s   zBComponentsTests.test_registerUtility_changes_object_identity_afterc                 C   s   G dd d|   }| }|t t | tt| d G dd dt}|t | | tt| d G dd dt}|t | | tt| d	 d S )
Nc                       r   )zeComponentsTests.test_registerUtility_changes_object_identity_before.<locals>.CompThatChangesAfter2Regr   c                    s4   |  j d7  _ | j dkrt| j| _t j|  d S )Nrc   ry   )r   r   r+   r   rJ   r   r   r   r   rJ     s   
zuComponentsTests.test_registerUtility_changes_object_identity_before.<locals>.CompThatChangesAfter2Reg.registerUtilityr   r   r   r   r   CompThatChangesAfter2Reg  r   r   rc   c                   @   r>   )zQComponentsTests.test_registerUtility_changes_object_identity_before.<locals>.IFooNr?   r   r   r   r   rB     rC   rB   ry   c                   @   r>   )zQComponentsTests.test_registerUtility_changes_object_identity_before.<locals>.IBarNr?   r   r   r   r   IBar  rC   r      r   )r   r   r/   rB   r   r   r   r   3test_registerUtility_changes_object_identity_before  s   zCComponentsTests.test_registerUtility_changes_object_identity_beforec                 C   s"   |   }| jt|jd d d d d S )N)rU   rj   rV   )r   rX   rY   unregisterUtilityr5   r   r   r   <test_unregisterUtility_wo_factory_nor_component_nor_provided  s   

zLComponentsTests.test_unregisterUtility_wo_factory_nor_component_nor_providedc                 C   rN   )Nc                   S   rO   r	   rP   r   r   r   r   rR     rS   zSComponentsTests.test_unregisterUtility_both_factory_and_component.<locals>._factoryrT   )rW   r   rX   rY   r   rZ   r   r   r   1test_unregisterUtility_both_factory_and_component  r]   zAComponentsTests.test_unregisterUtility_both_factory_and_componentc           
      C   s   ddl m} G dd d|}|d}d}t }|  }|  \}}| ||||}	W d    n1 s5w   Y  | |	 | | d S )Nr   r:   c                   @   r>   )zEComponentsTests.test_unregisterUtility_w_component_miss.<locals>.IFooNr?   r   r   r   r   rB     rC   rB   r   )rI   r;   rW   r   r!   r   assertFalse)
r   r;   rB   rK   rl   r[   r/   r    r   unregr   r   r   'test_unregisterUtility_w_component_miss  s   
z7ComponentsTests.test_unregisterUtility_w_component_missc                 C   sl  ddl m} ddlm} ddlm} G dd d|}|d}d}t }|  }|||| | 	 \}	}
|	 |
|||}W d    n1 sHw   Y  | | | |jj | ||f|j | |jj | t|
d |
d \}}|\}| |i  | || | |j| | |jj| | |jj| | |jj| | |jj| | |jj d S )	Nr   r:   r   r`   c                   @   r>   )z@ComponentsTests.test_unregisterUtility_w_component.<locals>.IFooNr?   r   r   r   r   rB     rC   rB   r   rc   )rI   r;   rd   r   re   ra   rW   r   rJ   r!   r   
assertTruer   r*   rg   ZassertNotInr+   rh   r%   ri   r(   rf   r   rj   r   rU   rk   rV   )r   r;   r   ra   rB   rK   rl   r[   r/   r    r   r   r   r   rm   r   r   r   "test_unregisterUtility_w_component  s8   
z2ComponentsTests.test_unregisterUtility_w_componentc                    sZ  ddl m} ddlm} ddlm} G dd d|}|d}d}d}t   fd	d
}|  }	|	jd ||||d | 	 \}
}|
 |	j
d |||d}W d    n1 sUw   Y  | | | t|d |d \}}|\}| |i  | || | |j| | |jj|	 | |jj| | |jj| | |jj  | |jj| d S )Nr   r:   r   r`   c                   @   r>   )z>ComponentsTests.test_unregisterUtility_w_factory.<locals>.IFooNr?   r   r   r   r   rB     rC   rB   rG   r   c                      ro   r	   r   r   rp   r   r   rR     r   zBComponentsTests.test_unregisterUtility_w_factory.<locals>._factoryrq   rc   )rI   r;   rd   r   re   ra   rW   r   rJ   r!   r   r   r%   ri   r(   rf   r   rj   r   rU   rV   )r   r;   r   ra   rB   rK   rL   rl   rR   r/   r    r   r   r   r   rm   r   rp   r    test_unregisterUtility_w_factory  s6   
z0ComponentsTests.test_unregisterUtility_w_factoryc                 C   sx  ddl m} ddl m} ddlm} ddlm} G dd d|}G dd	 d	}|d}d
}d}	| }
||
| |  }||
||	| | 	 \}}| |
|
d |	}W d    n1 s]w   Y  | | | t|d |d \}}|\}| |i  | || | |j| | |jj| | |jj| | |jj|	 | |jj|
 | |jj| | |jj d S )Nr   r:   rt   r   r`   c                   @   r>   )zIComponentsTests.test_unregisterUtility_wo_explicit_provided.<locals>.IFooNr?   r   r   r   r   rB     rC   rB   c                   @   r>   )zHComponentsTests.test_unregisterUtility_wo_explicit_provided.<locals>.FooNr?   r   r   r   r   rE     rC   rE   rG   r   rc   rI   r;   ru   rd   r   re   ra   r   rJ   r!   r   r   r%   ri   r(   rW   rf   r   rj   r   rU   rG   rk   rV   r   r;   ru   r   ra   rB   rE   rK   rL   rl   r[   r/   r    r   r   r   r   rm   r   r   r   +test_unregisterUtility_wo_explicit_provided  s<   

z;ComponentsTests.test_unregisterUtility_wo_explicit_providedc                 C   sx  ddl m} ddl m} ddlm} ddlm} G dd d|}G dd	 d	}|d}d
}d}	| }
||
| |  }||
||	| | 	 \}}| |j
||	d}W d    n1 s]w   Y  | | | t|d |d \}}|\}| |i  | || | |j| | |jj| | |jj| | |jj|	 | |jj|
 | |jj| | |jj d S )Nr   r:   rt   r   r`   c                   @   r>   )zLComponentsTests.test_unregisterUtility_wo_component_or_factory.<locals>.IFooNr?   r   r   r   r   rB   ,  rC   rB   c                   @   r>   )zKComponentsTests.test_unregisterUtility_wo_component_or_factory.<locals>.FooNr?   r   r   r   r   rE   /  rC   rE   rG   r   rj   r   rc   r   r   r   r   r   .test_unregisterUtility_wo_component_or_factory&  s<   

z>ComponentsTests.test_unregisterUtility_wo_component_or_factoryc                 C      ddl m} G dd d|}|d}d}d}d}t }|  }||||| ||||| |  \}	}
|	 |||| W d    n1 sIw   Y  | |jj	d | d |f d S )	Nr   r:   c                   @   r>   )zFComponentsTests.test_unregisterUtility_w_existing_subscr.<locals>.IFooNr?   r   r   r   r   rB   N  rC   rB   rG   r|   r}   rb   
rI   r;   rW   r   rJ   r!   r   r%   r*   rh   r   r   r   r   (test_unregisterUtility_w_existing_subscrK     "z8ComponentsTests.test_unregisterUtility_w_existing_subscrc                 C   r   )	Nr   r:   c                   @   r>   )zSComponentsTests.test_unregisterUtility_w_existing_subscr_non_hashable.<locals>.IFooNr?   r   r   r   r   rB   a  rC   rB   rG   r|   r}   rb   )
rI   r;   r   r   rJ   r!   r   r%   r*   rh   r   r   r   r   5test_unregisterUtility_w_existing_subscr_non_hashable^  r   zEComponentsTests.test_unregisterUtility_w_existing_subscr_non_hashablec                 C   s   ddl m} ddlm} G dd d|}|d}d}d}d}t }|  }	|	|||| |	|||| |  \}
}|
 |	||| W d    n1 sOw   Y  | 	|	j
jd | d	 |f d S )
Nr   r:   )_UtilityRegistrationsc                   @   r>   )z]ComponentsTests.test_unregisterUtility_w_existing_subs_non_hashable_fresh_cache.<locals>.IFooNr?   r   r   r   r   rB   w  rC   rB   rG   r|   r}   rb   )rI   r;   re   r   r   r   rJ   r!   r   r%   r*   rh   )r   r;   r   rB   rK   rL   r   r   r[   r/   r    r   r   r   r   ?test_unregisterUtility_w_existing_subs_non_hashable_fresh_cacheq  s    "zOComponentsTests.test_unregisterUtility_w_existing_subs_non_hashable_fresh_cachec                 C   s   ddl m} G dd d|}|d}d}d}d}t }|  }||||| ||||| |d ||||| |  \}	}
|	 |||| W d    n1 sVw   Y  | dt	|j
j d S )	Nr   r:   c                   @   r>   )z]ComponentsTests.test_unregisterUtility_w_existing_subscr_non_hashable_reinitted.<locals>.IFooNr?   r   r   r   r   rB     rC   rB   rG   r|   r}   r1   )rI   r;   r   r   rJ   __init__r!   r   r%   ri   r*   rh   r   r   r   r   ?test_unregisterUtility_w_existing_subscr_non_hashable_reinitted  s"   
zOComponentsTests.test_unregisterUtility_w_existing_subscr_non_hashable_reinittedc                 C   s   ddl m} G dd d|}|d}d}d}d}t }t }|  }	|	|||| |	|||| |  \}
}|
 |	||| W d    n1 sLw   Y  | |	jj	d | d |f d S )	Nr   r:   c                   @   r>   )zVComponentsTests.test_unregisterUtility_w_existing_subscr_other_component.<locals>.IFooNr?   r   r   r   r   rB     rC   rB   rG   r|   r}   rb   r   r~   r   r   r   8test_unregisterUtility_w_existing_subscr_other_component  s$   zHComponentsTests.test_unregisterUtility_w_existing_subscr_other_componentc                 C   s   ddl m} G dd d|}|d}d}d}d}t }t }|  }	|	|||| |	|||| |  \}
}|
 |	||| W d    n1 sLw   Y  | |	j	j
d | d |f d S )	Nr   r:   c                   @   r>   )z[ComponentsTests.test_unregisterUtility_w_existing_subscr_oter_comp_mixed_hash.<locals>.IFooNr?   r   r   r   r   rB     rC   rB   rG   r|   r}   rb   )rI   r;   rW   r   r   rJ   r!   r   r%   r*   rh   r~   r   r   r   =test_unregisterUtility_w_existing_subscr_oter_comp_mixed_hash  s$   zMComponentsTests.test_unregisterUtility_w_existing_subscr_oter_comp_mixed_hashc                 C       |   }| t| g  d S r	   )r   r%   r   r   r5   r   r   r   test_registeredUtilities_empty     z.ComponentsTests.test_registeredUtilities_emptyc                 C   s  ddl m} ddlm} G dd d|}|d}d}d}d}t }|  }	|	|||| |	|||| t|	 d	d
 d}
| 	t
|
d | |
d | | |
d j|	 | |
d j| | |
d j| | |
d j| | |
d j| | |
d j | |
d | | |
d j|	 | |
d j| | |
d j| | |
d j| | |
d j| | |
d j d S )Nr   r:   r`   c                   @   r>   )z?ComponentsTests.test_registeredUtilities_notempty.<locals>.IFooNr?   r   r   r   r   rB     rC   rB   rG   r|   r}   c                 S      | j S r	   r   rr   r   r   <lambda>      zCComponentsTests.test_registeredUtilities_notempty.<locals>.<lambda>keyry   rc   )rI   r;   re   ra   rW   r   rJ   sortedr   r%   ri   r(   rf   r   rj   r   rU   rG   rk   rV   )r   r;   ra   rB   rK   rL   r   r   r[   r/   regr   r   r   !test_registeredUtilities_notempty  s6   z1ComponentsTests.test_registeredUtilities_notemptyc                 C   s@   ddl m} G dd d|}|d}|  }| || d S )Nr   r:   c                   @   r>   )z?ComponentsTests.test_queryUtility_miss_no_default.<locals>.IFooNr?   r   r   r   r   rB     rC   rB   )rI   r;   r   rk   queryUtilityr   r;   rB   rK   r/   r   r   r   !test_queryUtility_miss_no_default  s
   z1ComponentsTests.test_queryUtility_miss_no_defaultc                 C   sL   ddl m} G dd d|}|d}|  }t }| |j||d| d S )Nr   r:   c                   @   r>   )z>ComponentsTests.test_queryUtility_miss_w_default.<locals>.IFooNr?   r   r   r   r   rB     rC   rB   default)rI   r;   r   rW   rf   r   )r   r;   rB   rK   r/   _defaultr   r   r    test_queryUtility_miss_w_default  s   z0ComponentsTests.test_queryUtility_miss_w_defaultc                 C   T   ddl m} G dd d|}|d}t }|  }||| | ||| d S )Nr   r:   c                   @   r>   )z3ComponentsTests.test_queryUtility_hit.<locals>.IFooNr?   r   r   r   r   rB     rC   rB   )rI   r;   rW   r   rJ   rf   r   r   r;   rB   rK   r[   r/   r   r   r   test_queryUtility_hit	     z%ComponentsTests.test_queryUtility_hitc                 C   sL   ddl m} ddlm} G dd d|}|d}|  }| ||j| d S )Nr   r:   ComponentLookupErrorc                   @   r>   )z2ComponentsTests.test_getUtility_miss.<locals>.IFooNr?   r   r   r   r   rB     rC   rB   )rI   r;   rd   r   r   rX   
getUtility)r   r;   r   rB   rK   r/   r   r   r   test_getUtility_miss  s   z$ComponentsTests.test_getUtility_missc                 C   r   )Nr   r:   c                   @   r>   )z1ComponentsTests.test_getUtility_hit.<locals>.IFooNr?   r   r   r   r   rB   #  rC   rB   )rI   r;   rW   r   rJ   rf   r   r   r   r   r   test_getUtility_hit   r   z#ComponentsTests.test_getUtility_hitc                 C   F   ddl m} G dd d|}|d}|  }| t||g  d S )Nr   r:   c                   @   r>   )z7ComponentsTests.test_getUtilitiesFor_miss.<locals>.IFooNr?   r   r   r   r   rB   /  rC   rB   )rI   r;   r   r%   r   getUtilitiesForr   r   r   r   test_getUtilitiesFor_miss,  
   z)ComponentsTests.test_getUtilitiesFor_missc                 C   s   ddl m} G dd d|}|d}d}d}t }|  }|j|||d |j|||d | t||||f||fg d S )Nr   r:   c                   @   r>   )z6ComponentsTests.test_getUtilitiesFor_hit.<locals>.IFooNr?   r   r   r   r   rB   9  rC   rB   r|   r}   r   )rI   r;   rW   r   rJ   r%   r   r   r   r;   rB   rK   r   r   r[   r/   r   r   r   test_getUtilitiesFor_hit6  s   z(ComponentsTests.test_getUtilitiesFor_hitc                 C   r   )Nr   r:   c                   @   r>   )zDComponentsTests.test_getAllUtilitiesRegisteredFor_miss.<locals>.IFooNr?   r   r   r   r   rB   I  rC   rB   )rI   r;   r   r%   r   getAllUtilitiesRegisteredForr   r   r   r   &test_getAllUtilitiesRegisteredFor_missF  r   z6ComponentsTests.test_getAllUtilitiesRegisteredFor_missc                 C   sv   ddl m} G dd d|}|d}d}d}t }|  }|j|||d |j|||d | t|||g d S )Nr   r:   c                   @   r>   )zCComponentsTests.test_getAllUtilitiesRegisteredFor_hit.<locals>.IFooNr?   r   r   r   r   rB   S  rC   rB   r|   r}   r   )rI   r;   rW   r   rJ   r%   r   r   r   r   r   r   %test_getAllUtilitiesRegisteredFor_hitP  s   z5ComponentsTests.test_getAllUtilitiesRegisteredFor_hitc           	      C   s   ddl m} ddl m} G dd d|}|d}|d}|dG dd	 d	}d
}|  }|j||f||d | |j|f|df ||f d S )Nr   r:   r<   c                   @   r>   )zFComponentsTests.test_registerAdapter_with_component_name.<locals>.IFooNr?   r   r   r   r   rB   d  rC   rB   r   rD   c                   @   r>   )zEComponentsTests.test_registerAdapter_with_component_name.<locals>.FooNr?   r   r   r   r   rE   j  rF   rE   rG   rH   )rI   r;   r=   r   registerAdapterr%   r,   )	r   r;   r=   rB   rK   ibarrE   rL   r/   r   r   r   (test_registerAdapter_with_component_name`  s   z8ComponentsTests.test_registerAdapter_with_component_namec                 C   s  ddl m} ddlm} ddlm} G dd d|}|d}|d}d}d	}d
d }	|  }
|  \}}| |
|	|f||| W d    n1 sKw   Y  | 	|
j
jd | | | |	 | |
j|f||f |	|f | t|d |d \}}|\}| |i  | || | |j| | 	|jj|
 | 	|jj| | |jj|f | 	|jj| | 	|jj| | 	|jj|	 d S )Nr   r:   r^   AdapterRegistrationc                   @   r>   )zSComponentsTests.test_registerAdapter_w_explicit_provided_and_required.<locals>.IFooNr?   r   r   r   r   rB   {  rC   rB   r   rG   r   c                 S   rO   r	   rP   contextr   r   r   rR     rS   zWComponentsTests.test_registerAdapter_w_explicit_provided_and_required.<locals>._factoryrc   rI   r;   rd   r_   re   r   r   r!   r   rf   r)   rg   r%   r,   ri   r(   rW   r   rj   requiredr   rG   rV   )r   r;   r_   r   rB   rK   r   rL   rl   rR   r/   r    r   r   r   rm   r   r   r   5test_registerAdapter_w_explicit_provided_and_requiredv  sB   zEComponentsTests.test_registerAdapter_w_explicit_provided_and_requiredc                 C   s`   ddl m} G dd d|}|d}d}d}G dd	 d	}|  }| jt|j||f||d
 d S )Nr   r:   c                   @   r>   )zHComponentsTests.test_registerAdapter_no_provided_available.<locals>.IFooNr?   r   r   r   r   rB     rC   rB   r   rG   r   c                   @   r>   )zLComponentsTests.test_registerAdapter_no_provided_available.<locals>._FactoryNr?   r   r   r   r   _Factory  rC   r   r   rG   rI   r;   r   rX   rY   r   )r   r;   rB   r   rL   rl   r   r/   r   r   r   *test_registerAdapter_no_provided_available  s   
z:ComponentsTests.test_registerAdapter_no_provided_availablec                 C   s  ddl m} ddl m} ddlm} ddlm} G dd d|}|d}|d}d	}d
}	||G dd d}
|  }|  \}}| |j	|
|f|	|d W d    n1 sXw   Y  | 
|jjd | | |	 |
 | |j|f||	f |
|f | t|d |d \}}|\}| |i  | || | |j| | 
|jj| | 
|jj| | |jj|f | 
|jj|	 | 
|jj| | 
|jj|
 d S )Nr   r:   implementerr^   r   c                   @   r>   )zGComponentsTests.test_registerAdapter_wo_explicit_provided.<locals>.IFooNr?   r   r   r   r   rB     rC   rB   r   rG   r   c                   @   r>   )zKComponentsTests.test_registerAdapter_wo_explicit_provided.<locals>._FactoryNr?   r   r   r   r   r     rF   r   r   rc   )rI   r;   r   rd   r_   re   r   r   r!   r   rf   r)   rg   r%   r,   ri   r(   rW   r   rj   r   r   rG   rV   )r   r;   r   r_   r   rB   rK   r   rL   rl   r   r/   r    r   r   r   rm   r   r   r   )test_registerAdapter_wo_explicit_provided  sF   z9ComponentsTests.test_registerAdapter_wo_explicit_providedc                 C   s^   ddl m} G dd d|}|d}d}d}G dd d}|  }| jt|j||||d	 d S )
Nr   r:   c                   @   r>   )zHComponentsTests.test_registerAdapter_no_required_available.<locals>.IFooNr?   r   r   r   r   rB     rC   rB   rG   r   c                   @   r>   )zLComponentsTests.test_registerAdapter_no_required_available.<locals>._FactoryNr?   r   r   r   r   r     rC   r   rj   r   rG   r   r   r;   rB   rK   rL   rl   r   r/   r   r   r   *test_registerAdapter_no_required_available  s   
z:ComponentsTests.test_registerAdapter_no_required_availablec           	   	   C   sh   ddl m} G dd d|}|d}|d}d}d}G dd	 d	}|  }| jt|j|||||d
 d S )Nr   r:   c                   @   r>   )zEComponentsTests.test_registerAdapter_w_invalid_required.<locals>.IFooNr?   r   r   r   r   rB     rC   rB   r   rG   r   c                   @   r>   )zIComponentsTests.test_registerAdapter_w_invalid_required.<locals>._FactoryNr?   r   r   r   r   r     rC   r   r   r   )	r   r;   rB   rK   r   rL   rl   r   r/   r   r   r   'test_registerAdapter_w_invalid_required  s   
z7ComponentsTests.test_registerAdapter_w_invalid_requiredc                 C   s  ddl m} ddlm} ddlm} ddlm} G dd d|}|d}d}d	}G d
d d}	|  }
| 	 \}}| |
j
|	d g|||d W d    n1 sQw   Y  | |
jjd | | | |	 | |
j|f||f |	|f | t|d |d \}}|\}| |i  | || | |j| | |jj|
 | |jj| | |jj|f | |jj| | |jj| | |jj|	 d S )Nr   r:   r   r^   r   c                   @   r>   )zMComponentsTests.test_registerAdapter_w_required_containing_None.<locals>.IFooNr?   r   r   r   r   rB      rC   rB   rG   r   c                   @   r>   )zQComponentsTests.test_registerAdapter_w_required_containing_None.<locals>._FactoryNr?   r   r   r   r   r     rC   r   r   rc   )rI   r;   Zzope.interface.interfacer   rd   r_   re   r   r   r!   r   rf   r)   rg   r%   r,   ri   r(   rW   r   rj   r   r   rG   rV   )r   r;   r   r_   r   rB   rK   rL   rl   r   r/   r    r   r   r   rm   r   r   r   /test_registerAdapter_w_required_containing_None  sH   z?ComponentsTests.test_registerAdapter_w_required_containing_Nonec                 C   s  ddl m} ddl m} ddl m} ddlm} ddlm} G dd d|}|d}|d	}d
}	d}
G dd d}||G dd d}||}|  }| 	 \}}| |j
||g||
|	d W d    n1 sjw   Y  | |jjd | | |
 | | |j|f||
f ||	f | t|d |d \}}|\}| |i  | || | |j| | |jj| | |jj| | |jj|f | |jj|
 | |jj|	 | |jj| d S )Nr   r:   )implementedByr   r^   r   c                   @   r>   )zNComponentsTests.test_registerAdapter_w_required_containing_class.<locals>.IFooNr?   r   r   r   r   rB   +  rC   rB   r   rG   r   c                   @   r>   )zRComponentsTests.test_registerAdapter_w_required_containing_class.<locals>._FactoryNr?   r   r   r   r   r   3  rC   r   c                   @   r>   )zRComponentsTests.test_registerAdapter_w_required_containing_class.<locals>._ContextNr?   r   r   r   r   _Context6  rF   r   r   rc   )rI   r;   r   r   rd   r_   re   r   r   r!   r   rf   r)   rg   r%   r,   ri   r(   rW   r   rj   r   r   rG   rV   )r   r;   r   r   r_   r   rB   rK   r   rL   rl   r   r   Z	_ctx_implr/   r    r   r   r   rm   r   r   r   0test_registerAdapter_w_required_containing_class$  sR   z@ComponentsTests.test_registerAdapter_w_required_containing_classc                 C   s   ddl m} G dd d|}|d}d}d}G dd d}|  }| t |j|t g|||d	 W d    d S 1 s>w   Y  d S )
Nr   r:   c                   @   r>   )zMComponentsTests.test_registerAdapter_w_required_containing_junk.<locals>.IFooNr?   r   r   r   r   rB   X  rC   rB   rG   r   c                   @   r>   )zQComponentsTests.test_registerAdapter_w_required_containing_junk.<locals>._FactoryNr?   r   r   r   r   r   `  rC   r   r   )rI   r;   r   rX   rY   r   rW   r   r   r   r   /test_registerAdapter_w_required_containing_junkU  s   "z?ComponentsTests.test_registerAdapter_w_required_containing_junkc                    s  ddl m} ddlm} ddlm} G dd d|}|d}|d d}d	}G  fd
dd}|  }	|  \}
}|
 |	j||||d W d    n1 sOw   Y  | 	|	j
jd   | | | | |	j f||f ||f | t|d |d \}}|\}| |i  | || | |j| | 	|jj|	 | 	|jj| | |jj f | 	|jj| | 	|jj| | 	|jj| d S )Nr   r:   r^   r   c                   @   r>   )zGComponentsTests.test_registerAdapter_wo_explicit_required.<locals>.IFooNr?   r   r   r   r   rB   n  rC   rB   r   rG   r   c                          e Zd Z fZdS )zKComponentsTests.test_registerAdapter_wo_explicit_required.<locals>._FactoryNr&   r@   rA   __component_adapts__r   r   r   r   r   v      
r   r   rc   r   )r   r;   r_   r   rB   rK   rL   rl   r   r/   r    r   r   r   rm   r   r   r   )test_registerAdapter_wo_explicit_requiredi  sF   
z9ComponentsTests.test_registerAdapter_wo_explicit_requiredc              	   C   s   ddl m} G dd d|}|d}|d}d}d}dd	 }|  }|  \}	}
|	 |j||f|||d
d W d    n1 sAw   Y  | t|
d d S )Nr   r:   c                   @   r>   )z;ComponentsTests.test_registerAdapter_wo_event.<locals>.IFooNr?   r   r   r   r   rB     rC   rB   r   rG   r   c                 S   rO   r	   rP   r   r   r   r   rR     rS   z?ComponentsTests.test_registerAdapter_wo_event.<locals>._factoryF)rm   )rI   r;   r   r!   r   r%   ri   )r   r;   rB   rK   r   rL   rl   rR   r/   r    r   r   r   r   test_registerAdapter_wo_event  s   z-ComponentsTests.test_registerAdapter_wo_eventc                 C       |   }| jt|jd d d d S N)rV   rj   )r   rX   rY   unregisterAdapterr5   r   r   r   3test_unregisterAdapter_neither_factory_nor_provided     

zCComponentsTests.test_unregisterAdapter_neither_factory_nor_providedc                 C   F   ddl m} G dd d|}|d}|  }| jt|jd |d d d S )Nr   r:   c                   @   r>   )zQComponentsTests.test_unregisterAdapter_neither_factory_nor_required.<locals>.IFooNr?   r   r   r   r   rB     rC   rB   rV   rj   r   )rI   r;   r   rX   rY   r   r   r   r   r   3test_unregisterAdapter_neither_factory_nor_required     

zCComponentsTests.test_unregisterAdapter_neither_factory_nor_requiredc           
      C   s   ddl m} G dd d|}|d}|d}G dd d}|  }|  \}}| |||f|}	W d    n1 s<w   Y  | |	 d S )Nr   r:   c                   @   r>   )z9ComponentsTests.test_unregisterAdapter_miss.<locals>.IFooNr?   r   r   r   r   rB     rC   rB   r   c                   @   r>   )z=ComponentsTests.test_unregisterAdapter_miss.<locals>._FactoryNr?   r   r   r   r   r     rC   r   )rI   r;   r   r!   r   r   
r   r;   rB   rK   r   r   r/   r    r   r   r   r   r   test_unregisterAdapter_miss  s   z+ComponentsTests.test_unregisterAdapter_missc                 C   |  ddl m} ddlm} ddlm} G dd d|}|d}|d}G dd	 d	}|  }|||f| |  \}	}
|	 |	||f|}W d    n1 sPw   Y  | 
| | |jj | |j | t|
d
 |
d \}}|\}| |i  | || | |j| | |jj| | |jj| | |jj|f | |jjd | |jjd | |jj| d S )Nr   r:   r   r   c                   @   r>   )zYComponentsTests.test_unregisterAdapter_hit_w_explicit_provided_and_required.<locals>.IFooNr?   r   r   r   r   rB     rC   rB   r   c                   @   r>   )z]ComponentsTests.test_unregisterAdapter_hit_w_explicit_provided_and_required.<locals>._FactoryNr?   r   r   r   r   r     rC   r   rc   rb   )rI   r;   rd   r   re   r   r   r   r!   r   r   r   r)   rg   r,   r%   ri   r(   rW   rf   r   rj   r   r   rG   rV   )r   r;   r   r   rB   rK   r   r   r/   r    r   r   r   r   rm   r   r   r   ;test_unregisterAdapter_hit_w_explicit_provided_and_required  8   
zKComponentsTests.test_unregisterAdapter_hit_w_explicit_provided_and_requiredc                 C   t  ddl m} ddl m} ddlm} ddlm} G dd d|}|d}|d}||G d	d
 d
}|  }	|	||f| | 	 \}
}|
 |	
||f}W d    n1 sYw   Y  | | | t|d |d \}}|\}| |i  | || | |j| | |jj|	 | |jj| | |jj|f | |jjd | |jjd | |jj| d S )Nr   r:   r   r   r   c                   @   r>   )zIComponentsTests.test_unregisterAdapter_wo_explicit_provided.<locals>.IFooNr?   r   r   r   r   rB     rC   rB   r   c                   @   r>   )zMComponentsTests.test_unregisterAdapter_wo_explicit_provided.<locals>._FactoryNr?   r   r   r   r   r     rF   r   rc   rb   )rI   r;   r   rd   r   re   r   r   r   r!   r   r   r%   ri   r(   rW   rf   r   rj   r   r   rG   rV   )r   r;   r   r   r   rB   rK   r   r   r/   r    r   r   r   r   rm   r   r   r   +test_unregisterAdapter_wo_explicit_provided  8   
z;ComponentsTests.test_unregisterAdapter_wo_explicit_providedc                    d  ddl m} ddlm} ddlm} G dd d|}|d}|d G  fdd	d	}|  }|| f| |  \}}	| |j	||d
}
W d    n1 sQw   Y  | 
|
 | t|	d |	d \}}|\}| |i  | || | |j| | |jj| | |jj| | |jj f | |jjd | |jjd | |jj| d S )Nr   r:   r   r   c                   @   r>   )zIComponentsTests.test_unregisterAdapter_wo_explicit_required.<locals>.IFooNr?   r   r   r   r   rB     rC   rB   r   c                       r   )zMComponentsTests.test_unregisterAdapter_wo_explicit_required.<locals>._FactoryNr   r   r   r   r   r     r   r   rj   rc   rb   )rI   r;   rd   r   re   r   r   r   r!   r   r   r%   ri   r(   rW   rf   r   rj   r   r   rG   rV   )r   r;   r   r   rB   rK   r   r/   r    r   r   r   r   rm   r   r   r   +test_unregisterAdapter_wo_explicit_required  4   
z;ComponentsTests.test_unregisterAdapter_wo_explicit_requiredc                 C   r   r	   )r   r%   r   registeredAdaptersr5   r   r   r   test_registeredAdapters_empty.  r   z-ComponentsTests.test_registeredAdapters_emptyc                 C   s  ddl m} ddlm} G dd d|}|d}|d}d}d}d}G d	d
 d
}	|  }
|
|	|f||| |
|	|f||| t|
 dd d}| t	|d | 
|d | | |d j|
 | |d j| | |d j|f | |d j| | |d j| | |d j|	 | 
|d | | |d j|
 | |d j| | |d j|f | |d j| | |d j| | |d j|	 d S )Nr   r:   r   c                   @   r>   )z>ComponentsTests.test_registeredAdapters_notempty.<locals>.IFooNr?   r   r   r   r   rB   6  rC   rB   rG   r|   r}   c                   @   r>   )zBComponentsTests.test_registeredAdapters_notempty.<locals>._FactoryNr?   r   r   r   r   r   ?  rC   r   c                 S   r   r	   r   r   r   r   r   r   E  r   zBComponentsTests.test_registeredAdapters_notempty.<locals>.<lambda>r   ry   rc   )rI   r;   re   r   r   r   r   r  r%   ri   r(   rf   r   rj   r   r   rG   rV   )r   r;   r   rB   rK   r   rL   r   r   r   r/   r   r   r   r    test_registeredAdapters_notempty2  s8   z0ComponentsTests.test_registeredAdapters_notemptyc                 C   sH   ddl m} G dd d|}|d}|  }t }| ||| d S )Nr   r:   c                   @   r>   )z?ComponentsTests.test_queryAdapter_miss_no_default.<locals>.IFooNr?   r   r   r   r   rB   Y  rC   rB   )rI   r;   r   rW   rk   queryAdapter)r   r;   rB   rK   r/   _contextr   r   r   !test_queryAdapter_miss_no_defaultV  s   z1ComponentsTests.test_queryAdapter_miss_no_defaultc                 C   sT   ddl m} G dd d|}|d}|  }t }t }| |j|||d| d S )Nr   r:   c                   @   r>   )z>ComponentsTests.test_queryAdapter_miss_w_default.<locals>.IFooNr?   r   r   r   r   rB   d  rC   rB   r   )rI   r;   r   rW   rf   r  )r   r;   rB   rK   r/   r  r   r   r   r    test_queryAdapter_miss_w_defaulta  s   z0ComponentsTests.test_queryAdapter_miss_w_defaultc                 C      ddl m} ddl m} G dd d|}|d}|d}G dd d}||G d	d
 d
}| }|  }	|	||f| |	||}
| |
| | |
j| d S )Nr   r:   r   c                   @   r>   )z3ComponentsTests.test_queryAdapter_hit.<locals>.IFooNr?   r   r   r   r   rB   t  rC   rB   r   c                   @      e Zd Zdd ZdS )z7ComponentsTests.test_queryAdapter_hit.<locals>._Factoryc                 S   
   || _ d S r	   r   r   r   r   r   r   r   {     
z@ComponentsTests.test_queryAdapter_hit.<locals>._Factory.__init__Nr&   r@   rA   r   r   r   r   r   r   z      r   c                   @   r>   )z7ComponentsTests.test_queryAdapter_hit.<locals>._ContextNr?   r   r   r   r   r   ~  rF   r   )	rI   r;   r   r   r   r  r(   rf   r   r   r;   r   rB   rK   r   r   r   r  r/   adapterr   r   r   test_queryAdapter_hitp     z%ComponentsTests.test_queryAdapter_hitc           
      C   s~   ddl m} ddl m} ddlm} G dd d|}|d}|d}||G dd	 d	}| }|  }	| ||	j|| d S )
Nr   r:   r   r   c                   @   r>   )z2ComponentsTests.test_getAdapter_miss.<locals>.IFooNr?   r   r   r   r   rB     rC   rB   r   c                   @   r>   )z6ComponentsTests.test_getAdapter_miss.<locals>._ContextNr?   r   r   r   r   r     rF   r   )rI   r;   r   rd   r   r   rX   
getAdapter)
r   r;   r   r   rB   rK   r   r   r  r/   r   r   r   test_getAdapter_miss  s   z$ComponentsTests.test_getAdapter_missc                 C   r  )Nr   r:   r   c                   @   r>   )z1ComponentsTests.test_getAdapter_hit.<locals>.IFooNr?   r   r   r   r   rB     rC   rB   r   c                   @   r  )z5ComponentsTests.test_getAdapter_hit.<locals>._Factoryc                 S   r  r	   r   r  r   r   r   r     r  z>ComponentsTests.test_getAdapter_hit.<locals>._Factory.__init__Nr  r   r   r   r   r     r  r   c                   @   r>   )z5ComponentsTests.test_getAdapter_hit.<locals>._ContextNr?   r   r   r   r   r     rF   r   )	rI   r;   r   r   r   r#  r(   rf   r   r  r   r   r   test_getAdapter_hit  r"  z#ComponentsTests.test_getAdapter_hitc                    s$  ddl m} ddlm} G dd d|}G dd d|}G dd	 d	|}||G d
d d}||G dd d|}G dd d}G dd d}	|  }
|
|	|f| |
||f| | |
 | }|
||}| ||	 | 	|j
| t||}|
||}| || | 	|j
| d S )Nr   r   r   c                   @   r>   )z8ComponentsTests.test_getAdapter_hit_super.<locals>.IBaseNr?   r   r   r   r   IBase  rC   r&  c                   @   r>   )z;ComponentsTests.test_getAdapter_hit_super.<locals>.IDerivedNr?   r   r   r   r   IDerived  rC   r'  c                   @   r>   )z7ComponentsTests.test_getAdapter_hit_super.<locals>.IFooNr?   r   r   r   r   rB     rC   rB   c                   @   r>   )z7ComponentsTests.test_getAdapter_hit_super.<locals>.BaseNr?   r   r   r   r   Base  rF   r(  c                   @   r>   )z:ComponentsTests.test_getAdapter_hit_super.<locals>.DerivedNr?   r   r   r   r   Derived  rF   r)  c                   @   r  )z>ComponentsTests.test_getAdapter_hit_super.<locals>.AdapterBasec                 S   r  r	   r   r  r   r   r   r     r  zGComponentsTests.test_getAdapter_hit_super.<locals>.AdapterBase.__init__Nr  r   r   r   r   AdapterBase  r  r*  c                   @   r  )zAComponentsTests.test_getAdapter_hit_super.<locals>.AdapterDerivedc                 S   r  r	   r   r  r   r   r   r     r  zJComponentsTests.test_getAdapter_hit_super.<locals>.AdapterDerived.__init__Nr  r   r   r   r   AdapterDerived  r  r+  r   r   rI   r   r   r   _should_not_changer#  r(   rf   r   r   r   r   r   r&  r'  rB   r(  r)  r*  r+  r/   derivedr   super   r   r   test_getAdapter_hit_super  s.   

z)ComponentsTests.test_getAdapter_hit_superc                    sF  ddl m} ddlm} G dd d|}G dd d|}G dd	 d	|}G d
d d}G dd d|}||G dd d|}||G dd d||}	G dd d}
G dd d}|  }|||f| ||
|f| | | |	 }|||}| || | 	|j
| t|	|}|||}| ||
 | 	|j
| d S )Nr   r   r   c                   @   r>   )z^ComponentsTests.test_getAdapter_hit_super_w_parent_implements_interface_diamond.<locals>.IBaseNr?   r   r   r   r   r&    rC   r&  c                   @   r>   )zaComponentsTests.test_getAdapter_hit_super_w_parent_implements_interface_diamond.<locals>.IDerivedNr?   r   r   r   r   r'    rC   r'  c                   @   r>   )z]ComponentsTests.test_getAdapter_hit_super_w_parent_implements_interface_diamond.<locals>.IFooNr?   r   r   r   r   rB     rC   rB   c                   @   r>   )z]ComponentsTests.test_getAdapter_hit_super_w_parent_implements_interface_diamond.<locals>.BaseNr?   r   r   r   r   r(    rC   r(  c                   @   r>   )z_ComponentsTests.test_getAdapter_hit_super_w_parent_implements_interface_diamond.<locals>.Child1Nr?   r   r   r   r   Child1  rC   r2  c                   @   r>   )z_ComponentsTests.test_getAdapter_hit_super_w_parent_implements_interface_diamond.<locals>.Child2Nr?   r   r   r   r   Child2  rF   r3  c                   @   r>   )z`ComponentsTests.test_getAdapter_hit_super_w_parent_implements_interface_diamond.<locals>.DerivedNr?   r   r   r   r   r)    rF   r)  c                   @   r  )zdComponentsTests.test_getAdapter_hit_super_w_parent_implements_interface_diamond.<locals>.AdapterBasec                 S   r  r	   r   r  r   r   r   r     r  zmComponentsTests.test_getAdapter_hit_super_w_parent_implements_interface_diamond.<locals>.AdapterBase.__init__Nr  r   r   r   r   r*    r  r*  c                   @   r  )zgComponentsTests.test_getAdapter_hit_super_w_parent_implements_interface_diamond.<locals>.AdapterDerivedc                 S   r  r	   r   r  r   r   r   r     r  zpComponentsTests.test_getAdapter_hit_super_w_parent_implements_interface_diamond.<locals>.AdapterDerived.__init__Nr  r   r   r   r   r+    r  r+  r,  )r   r   r   r&  r'  rB   r(  r2  r3  r)  r*  r+  r/   r/  r   r0  r   r   r   ?test_getAdapter_hit_super_w_parent_implements_interface_diamond  s2   

zOComponentsTests.test_getAdapter_hit_super_w_parent_implements_interface_diamondc                 C   s   ddl m} ddl m} G dd d|}|d}|d}|d}||G dd	 d	}||G d
d d}| }	| }
|  }| ||	|
f|d  d S )Nr   r:   r   c                   @   r>   )z9ComponentsTests.test_queryMultiAdapter_miss.<locals>.IFooNr?   r   r   r   r   rB     rC   rB   r   IBazc                   @   r>   )z>ComponentsTests.test_queryMultiAdapter_miss.<locals>._Context1Nr?   r   r   r   r   	_Context1  rF   r6  c                   @   r>   )z>ComponentsTests.test_queryMultiAdapter_miss.<locals>._Context2Nr?   r   r   r   r   	_Context2"  rF   r7  )rI   r;   r   r   r%   queryMultiAdapterr   r;   r   rB   rK   r   ibazr6  r7  	_context1	_context2r/   r   r   r   test_queryMultiAdapter_miss  s    z+ComponentsTests.test_queryMultiAdapter_missc                 C   s   ddl m} ddl m} G dd d|}|d}|d}|d}||G dd	 d	}||G d
d d}| }	| }
t }|  }| |j|	|
f||d| d S )Nr   r:   r   c                   @   r>   )zCComponentsTests.test_queryMultiAdapter_miss_w_default.<locals>.IFooNr?   r   r   r   r   rB   0  rC   rB   r   r5  c                   @   r>   )zHComponentsTests.test_queryMultiAdapter_miss_w_default.<locals>._Context1Nr?   r   r   r   r   r6  7  rF   r6  c                   @   r>   )zHComponentsTests.test_queryMultiAdapter_miss_w_default.<locals>._Context2Nr?   r   r   r   r   r7  ;  rF   r7  r   )rI   r;   r   rW   r   rf   r8  )r   r;   r   rB   rK   r   r:  r6  r7  r;  r<  r   r/   r   r   r   %test_queryMultiAdapter_miss_w_default,  s(   z5ComponentsTests.test_queryMultiAdapter_miss_w_defaultc                 C      ddl m} ddl m} G dd d|}|d}|d}|d}||G dd	 d	}||G d
d d}| }	| }
G dd d}|  }||||f| ||	|
f|}| || | |j|	|
f d S )Nr   r:   r   c                   @   r>   )z8ComponentsTests.test_queryMultiAdapter_hit.<locals>.IFooNr?   r   r   r   r   rB   M  rC   rB   r   r5  c                   @   r>   )z=ComponentsTests.test_queryMultiAdapter_hit.<locals>._Context1Nr?   r   r   r   r   r6  T  rF   r6  c                   @   r>   )z=ComponentsTests.test_queryMultiAdapter_hit.<locals>._Context2Nr?   r   r   r   r   r7  X  rF   r7  c                   @   r  )z<ComponentsTests.test_queryMultiAdapter_hit.<locals>._Factoryc                 S      ||f| _ d S r	   r   r   context1context2r   r   r   r   `     zEComponentsTests.test_queryMultiAdapter_hit.<locals>._Factory.__init__Nr  r   r   r   r   r   _  r  r   )	rI   r;   r   r   r   r8  r(   r%   r   r   r;   r   rB   rK   r   r:  r6  r7  r;  r<  r   r/   r   r   r   r   test_queryMultiAdapter_hitI  $   z*ComponentsTests.test_queryMultiAdapter_hitc                 C   s   ddl m} ddl m} ddlm} G dd d|}|d}|d}|d}||G d	d
 d
}||G dd d}	| }
|	 }|  }| ||j|
|f| d S )Nr   r:   r   r   c                   @   r>   )z7ComponentsTests.test_getMultiAdapter_miss.<locals>.IFooNr?   r   r   r   r   rB   n  rC   rB   r   r5  c                   @   r>   )z<ComponentsTests.test_getMultiAdapter_miss.<locals>._Context1Nr?   r   r   r   r   r6  u  rF   r6  c                   @   r>   )z<ComponentsTests.test_getMultiAdapter_miss.<locals>._Context2Nr?   r   r   r   r   r7  y  rF   r7  )rI   r;   r   rd   r   r   rX   getMultiAdapter)r   r;   r   r   rB   rK   r   r:  r6  r7  r;  r<  r/   r   r   r   test_getMultiAdapter_missi  s"   z)ComponentsTests.test_getMultiAdapter_missc                 C   r?  )Nr   r:   r   c                   @   r>   )z6ComponentsTests.test_getMultiAdapter_hit.<locals>.IFooNr?   r   r   r   r   rB     rC   rB   r   r5  c                   @   r>   )z;ComponentsTests.test_getMultiAdapter_hit.<locals>._Context1Nr?   r   r   r   r   r6    rF   r6  c                   @   r>   )z;ComponentsTests.test_getMultiAdapter_hit.<locals>._Context2Nr?   r   r   r   r   r7    rF   r7  c                   @   r  )z:ComponentsTests.test_getMultiAdapter_hit.<locals>._Factoryc                 S   r@  r	   r   rA  r   r   r   r     rD  zCComponentsTests.test_getMultiAdapter_hit.<locals>._Factory.__init__Nr  r   r   r   r   r     r  r   )	rI   r;   r   r   r   rH  r(   r%   r   rE  r   r   r   test_getMultiAdapter_hit  rG  z(ComponentsTests.test_getMultiAdapter_hitc                    s(    fdd}||_ ||j_ ||jj_ d S )Nc                     s     d d S )NzNothing should get changed)Zfail)r   r
   r   r   
no_changes  rD  z6ComponentsTests._should_not_change.<locals>.no_changes)changedr)   	_v_lookup)r   r/   rK  r   r
   r   r-    s   z"ComponentsTests._should_not_changec                    sZ  ddl m} ddlm} G dd d|}G dd d|}G dd	 d	|}||G d
d d}||G dd d|}G dd d}G dd d|}	|  }
|
|	||f| |
|||f| | |
 | }|
||f|}| ||	 | 	|j
| | 	|j| t||}|
||f|}| || | ||	 | 	|j
| | 	|j| d S )Nr   r   r   c                   @   r>   )z=ComponentsTests.test_getMultiAdapter_hit_super.<locals>.IBaseNr?   r   r   r   r   r&    rC   r&  c                   @   r>   )z@ComponentsTests.test_getMultiAdapter_hit_super.<locals>.IDerivedNr?   r   r   r   r   r'    rC   r'  c                   @   r>   )z<ComponentsTests.test_getMultiAdapter_hit_super.<locals>.IFooNr?   r   r   r   r   rB     rC   rB   c                   @   r>   )z<ComponentsTests.test_getMultiAdapter_hit_super.<locals>.BaseNr?   r   r   r   r   r(    rF   r(  c                   @   r>   )z?ComponentsTests.test_getMultiAdapter_hit_super.<locals>.DerivedNr?   r   r   r   r   r)    rF   r)  c                   @   r  )zCComponentsTests.test_getMultiAdapter_hit_super.<locals>.AdapterBasec                 S   s   || _ || _d S r	   rB  rC  rA  r   r   r   r     s   
zLComponentsTests.test_getMultiAdapter_hit_super.<locals>.AdapterBase.__init__Nr  r   r   r   r   r*    r  r*  c                   @   r>   )zFComponentsTests.test_getMultiAdapter_hit_super.<locals>.AdapterDerivedNr?   r   r   r   r   r+    rC   r+  )r   r   rI   r   r   r   r-  rH  r(   rf   rB  rC  r   ZassertNotIsInstancer.  r   r   r   test_getMultiAdapter_hit_super  s4   

z.ComponentsTests.test_getMultiAdapter_hit_superc                 C   s   ddl m} ddl m} G dd d|}|d}|d}|d}||G dd	 d	}||G d
d d}| }	| }
|  }| t||	|
f|g  d S )Nr   r:   r   c                   @   r>   )z4ComponentsTests.test_getAdapters_empty.<locals>.IFooNr?   r   r   r   r   rB     rC   rB   r   r5  c                   @   r>   )z9ComponentsTests.test_getAdapters_empty.<locals>._Context1Nr?   r   r   r   r   r6    rF   r6  c                   @   r>   )z9ComponentsTests.test_getAdapters_empty.<locals>._Context2Nr?   r   r   r   r   r7    rF   r7  )rI   r;   r   r   r%   r   getAdaptersr9  r   r   r   test_getAdapters_empty  s    z&ComponentsTests.test_getAdapters_emptyc                    s   ddl m} ddl m} G dd d|}|d}|d}|d}||G dd	 d	}||G d
d d}| }	| }
|  }g   fdd}||||f| | t||	|
f|g  |  |	|
fg d S )Nr   r:   r   c                   @   r>   )zCComponentsTests.test_getAdapters_factory_returns_None.<locals>.IFooNr?   r   r   r   r   rB     rC   rB   r   r5  c                   @   r>   )zHComponentsTests.test_getAdapters_factory_returns_None.<locals>._Context1Nr?   r   r   r   r   r6     rF   r6  c                   @   r>   )zHComponentsTests.test_getAdapters_factory_returns_None.<locals>._Context2Nr?   r   r   r   r   r7    rF   r7  c                    r   r	   r   rN  Z_called_withr   r   _side_effect_only  s   zPComponentsTests.test_getAdapters_factory_returns_None.<locals>._side_effect_only)rI   r;   r   r   r   r%   r   rP  )r   r;   r   rB   rK   r   r:  r6  r7  r;  r<  r/   rS  r   rR  r   %test_getAdapters_factory_returns_None  s(   z5ComponentsTests.test_getAdapters_factory_returns_Nonec                 C   sH  ddl m} ddl m} G dd d|}|d}|d}|d}||G dd	 d	}||G d
d d}| }	| }
G dd d}G dd d}d}d}|  }|j|||f||d |j|||f||d t||	|
f|}| t|d | |d d | | 	|d d | | |d d | | 	|d d | d S )Nr   r:   r   c                   @   r>   )z8ComponentsTests.test_getAdapters_non_empty.<locals>.IFooNr?   r   r   r   r   rB     rC   rB   r   r5  c                   @   r>   )z=ComponentsTests.test_getAdapters_non_empty.<locals>._Context1Nr?   r   r   r   r   r6  !  rF   r6  c                   @   r>   )z=ComponentsTests.test_getAdapters_non_empty.<locals>._Context2Nr?   r   r   r   r   r7  %  rF   r7  c                   @   r  )z=ComponentsTests.test_getAdapters_non_empty.<locals>._Factory1c                 S   r@  r	   r   rA  r   r   r   r   -  rD  zFComponentsTests.test_getAdapters_non_empty.<locals>._Factory1.__init__Nr  r   r   r   r   	_Factory1,  r  rU  c                   @   r  )z=ComponentsTests.test_getAdapters_non_empty.<locals>._Factory2c                 S   r@  r	   r   rA  r   r   r   r   1  rD  zFComponentsTests.test_getAdapters_non_empty.<locals>._Factory2.__init__Nr  r   r   r   r   	_Factory20  r  rV  r|   r}   r   ry   rc   )
rI   r;   r   r   r   r   rP  r%   ri   r(   )r   r;   r   rB   rK   r   r:  r6  r7  r;  r<  rU  rV  r   r   r/   foundr   r   r   test_getAdapters_non_empty  s2   z*ComponentsTests.test_getAdapters_non_emptyc           	   	   C   sb   ddl m} G dd d|}|d}|d}d}d}dd	 }|  }| t|j||f||| d S )
Nr   r:   c                   @   r>   )zNComponentsTests.test_registerSubscriptionAdapter_w_nonblank_name.<locals>.IFooNr?   r   r   r   r   rB   C  rC   rB   r   r   rG   c                 S   rO   r	   rP   r   r   r   r   rR   K  rS   zRComponentsTests.test_registerSubscriptionAdapter_w_nonblank_name.<locals>._factory)rI   r;   r   rX   rY   registerSubscriptionAdapter)	r   r;   rB   rK   r   rl   rL   rR   r/   r   r   r   0test_registerSubscriptionAdapter_w_nonblank_name@  s   
z@ComponentsTests.test_registerSubscriptionAdapter_w_nonblank_namec                 C   s  ddl m} ddlm} ddlm} G dd d|}|d}|d}d}d	}d
d }	|  }
|  \}}| |
j|	|f||d W d    n1 sKw   Y  |
j	j
d | | | }| t|d | |d |	 | |
j|f|||	|fg | t|d |d \}}|\}| |i  | || | |j| | |jj|
 | |jj| | |jj|f | |jj| | |jj| | |jj|	 d S )Nr   r:   r^   SubscriptionRegistrationc                   @   r>   )z]ComponentsTests.test_registerSubscriptionAdapter_w_explicit_provided_n_required.<locals>.IFooNr?   r   r   r   r   rB   W  rC   rB   r   rb   rG   c                 S   rO   r	   rP   r   r   r   r   rR   _  rS   zaComponentsTests.test_registerSubscriptionAdapter_w_explicit_provided_n_required.<locals>._factoryrH   rc   rI   r;   rd   r_   re   r\  r   r!   rY  r)   rh   r%   ri   rf   r-   r(   rW   r   rj   r   r   rG   rV   )r   r;   r_   r\  rB   rK   r   _blankrL   rR   r/   r    r   r   r   r   rm   r   r   r   ?test_registerSubscriptionAdapter_w_explicit_provided_n_requiredR  sD   zOComponentsTests.test_registerSubscriptionAdapter_w_explicit_provided_n_requiredc                 C   s  ddl m} ddl m} ddlm} ddlm} G dd d|}|d}|d}d	}d
}	||G dd d}
|  }|  \}}| |j	|
|f|d W d    n1 sWw   Y  |j
jd | | |	 }| t|d | |d |
 | |j|f||	|
|fg | t|d |d \}}|\}| |i  | || | |j| | |jj| | |jj| | |jj|f | |jj|	 | |jj| | |jj|
 d S )Nr   r:   r   r^   r[  c                   @   r>   )zSComponentsTests.test_registerSubscriptionAdapter_wo_explicit_provided.<locals>.IFooNr?   r   r   r   r   rB     rC   rB   r   rG   rb   c                   @   r>   )zWComponentsTests.test_registerSubscriptionAdapter_wo_explicit_provided.<locals>._FactoryNr?   r   r   r   r   r     rF   r   rH   rc   )rI   r;   r   rd   r_   re   r\  r   r!   rY  r)   rh   r%   ri   rf   r-   r(   rW   r   rj   r   r   rG   rV   )r   r;   r   r_   r\  rB   rK   r   rL   r^  r   r/   r    r   r   r   r   rm   r   r   r   5test_registerSubscriptionAdapter_wo_explicit_providedy  sD   zEComponentsTests.test_registerSubscriptionAdapter_wo_explicit_providedc                    s  ddl m} ddlm} ddlm} G dd d|}|d}|d d}d	}G  fd
dd}|  }	|  \}
}|
 |	j|||d W d    n1 sNw   Y  |	j	j
d   | | }| t|d | |d | | |	j f||||fg | t|d |d \}}|\}| |i  | || | |j| | |jj|	 | |jj| | |jj f | |jj| | |jj| | |jj| d S )Nr   r:   r^   r[  c                   @   r>   )zSComponentsTests.test_registerSubscriptionAdapter_wo_explicit_required.<locals>.IFooNr?   r   r   r   r   rB     rC   rB   r   rG   rb   c                       r   )zWComponentsTests.test_registerSubscriptionAdapter_wo_explicit_required.<locals>._FactoryNr   r   r   r   r   r     r   r   )rj   rG   rc   r]  )r   r;   r_   r\  rB   rK   rL   r^  r   r/   r    r   r   r   r   rm   r   r   r   5test_registerSubscriptionAdapter_wo_explicit_required  sD   zEComponentsTests.test_registerSubscriptionAdapter_wo_explicit_requiredc           
      C   s   ddl m} G dd d|}|d}|d}d}dd }|  }|  \}}	| |j||f||d	d
 W d    n1 s>w   Y  | t|	d d S )Nr   r:   c                   @   r>   )zGComponentsTests.test_registerSubscriptionAdapter_wo_event.<locals>.IFooNr?   r   r   r   r   rB     rC   rB   r   rG   c                 S   rO   r	   rP   r   r   r   r   rR     rS   zKComponentsTests.test_registerSubscriptionAdapter_wo_event.<locals>._factoryFrG   rm   )rI   r;   r   r!   rY  r%   ri   )
r   r;   rB   rK   r   rL   rR   r/   r    r   r   r   r   )test_registerSubscriptionAdapter_wo_event  s   z9ComponentsTests.test_registerSubscriptionAdapter_wo_eventc                 C   r   r	   )r   r%   r   registeredSubscriptionAdaptersr5   r   r   r   )test_registeredSubscriptionAdapters_empty  r   z9ComponentsTests.test_registeredSubscriptionAdapters_emptyc                 C   s  ddl m} ddlm} G dd d|}|d}|d}d}d}G dd	 d	}|  }	|	j||f||d
 |	j||f||d
 t|	 }
| t	|
d | 
|
d | | |
d j|	 | |
d j| | |
d j|f | |
d j| | |
d j| | |
d j| | 
|
d | | |
d j|	 | |
d j| | |
d j|f | |
d j| | |
d j| | |
d j| d S )Nr   r:   r[  c                   @   r>   )zJComponentsTests.test_registeredSubscriptionAdapters_notempty.<locals>.IFooNr?   r   r   r   r   rB     rC   rB   rG   rb   c                   @   r>   )zNComponentsTests.test_registeredSubscriptionAdapters_notempty.<locals>._FactoryNr?   r   r   r   r   r     rC   r   rH   ry   rc   )rI   r;   re   r\  r   rY  r   rd  r%   ri   r(   rf   r   rj   r   r   rG   rV   )r   r;   r\  rB   rK   r   rL   r^  r   r/   r   r   r   r   ,test_registeredSubscriptionAdapters_notempty  s6   z<ComponentsTests.test_registeredSubscriptionAdapters_notemptyc                 C   sR   ddl m} G dd d|}|d}|d}d}|  }| jt|j|||d d S )Nr   r:   c                   @   r>   )zPComponentsTests.test_unregisterSubscriptionAdapter_w_nonblank_name.<locals>.IFooNr?   r   r   r   r   rB     rC   rB   r   nonblank)r   rj   r   rI   r;   r   rX   rY   unregisterSubscriptionAdapter)r   r;   rB   rK   r   	_nonblankr/   r   r   r   2test_unregisterSubscriptionAdapter_w_nonblank_name  s   

zBComponentsTests.test_unregisterSubscriptionAdapter_w_nonblank_namec                 C   r   r   )r   rX   rY   ri  r5   r   r   r   ?test_unregisterSubscriptionAdapter_neither_factory_nor_provided  r   zOComponentsTests.test_unregisterSubscriptionAdapter_neither_factory_nor_providedc                 C   r  )Nr   r:   c                   @   r>   )z]ComponentsTests.test_unregisterSubscriptionAdapter_neither_factory_nor_required.<locals>.IFooNr?   r   r   r   r   rB     rC   rB   r  rh  r   r   r   r   ?test_unregisterSubscriptionAdapter_neither_factory_nor_required  r  zOComponentsTests.test_unregisterSubscriptionAdapter_neither_factory_nor_requiredc           
      C   s   ddl m} G dd d|}|d}|d}G dd d}|  }|  \}}| |||f|}	W d    n1 s<w   Y  | |	 | | d S )Nr   r:   c                   @   r>   )zEComponentsTests.test_unregisterSubscriptionAdapter_miss.<locals>.IFooNr?   r   r   r   r   rB   $  rC   rB   r   c                   @   r>   )zIComponentsTests.test_unregisterSubscriptionAdapter_miss.<locals>._FactoryNr?   r   r   r   r   r   *  rC   r   )rI   r;   r   r!   ri  r   r  r   r   r   'test_unregisterSubscriptionAdapter_miss!  s   
z7ComponentsTests.test_unregisterSubscriptionAdapter_missc                 C   sz  ddl m} ddlm} ddlm} G dd d|}|d}|d}G dd	 d	}|  }|||f| |  \}	}
|	 |	d |f|}W d    n1 sPw   Y  | 
| | |jj | |j | t|
d
 |
d \}}|\}| |i  | || | |j| | |jj| | |jj| | |jj|f | |jjd | |jjd | |jj d S )Nr   r:   r   r[  c                   @   r>   )zOComponentsTests.test_unregisterSubscriptionAdapter_hit_wo_factory.<locals>.IFooNr?   r   r   r   r   rB   9  rC   rB   r   c                   @   r>   )zSComponentsTests.test_unregisterSubscriptionAdapter_hit_wo_factory.<locals>._FactoryNr?   r   r   r   r   r   ?  rC   r   rc   rb   )rI   r;   rd   r   re   r\  r   rY  r!   ri  r   r   r)   rh   r-   r%   ri   r(   rW   rf   r   rj   r   r   rG   rk   rV   r   r;   r   r\  rB   rK   r   r   r/   r    r   r   r   r   rm   r   r   r   1test_unregisterSubscriptionAdapter_hit_wo_factory4  s8   
zAComponentsTests.test_unregisterSubscriptionAdapter_hit_wo_factoryc                 C   r  )Nr   r:   r   r[  c                   @   r>   )zNComponentsTests.test_unregisterSubscriptionAdapter_hit_w_factory.<locals>.IFooNr?   r   r   r   r   rB   \  rC   rB   r   c                   @   r>   )zRComponentsTests.test_unregisterSubscriptionAdapter_hit_w_factory.<locals>._FactoryNr?   r   r   r   r   r   b  rC   r   rc   rb   )rI   r;   rd   r   re   r\  r   rY  r!   ri  r   r   r)   rh   r-   r%   ri   r(   rW   rf   r   rj   r   r   rG   rV   ro  r   r   r   0test_unregisterSubscriptionAdapter_hit_w_factoryW  r	  z@ComponentsTests.test_unregisterSubscriptionAdapter_hit_w_factoryc                 C   r
  )Nr   r:   r   r   r[  c                   @   r>   )zUComponentsTests.test_unregisterSubscriptionAdapter_wo_explicit_provided.<locals>.IFooNr?   r   r   r   r   rB     rC   rB   r   c                   @   r>   )zYComponentsTests.test_unregisterSubscriptionAdapter_wo_explicit_provided.<locals>._FactoryNr?   r   r   r   r   r     rF   r   rc   rb   )rI   r;   r   rd   r   re   r\  r   rY  r!   ri  r   r%   ri   r(   rW   rf   r   rj   r   r   rG   rV   )r   r;   r   r   r\  rB   rK   r   r   r/   r    r   r   r   r   rm   r   r   r   7test_unregisterSubscriptionAdapter_wo_explicit_providedz  r  zGComponentsTests.test_unregisterSubscriptionAdapter_wo_explicit_providedc                    r  )Nr   r:   r   r[  c                   @   r>   )zUComponentsTests.test_unregisterSubscriptionAdapter_wo_explicit_required.<locals>.IFooNr?   r   r   r   r   rB     rC   rB   r   c                       r   )zYComponentsTests.test_unregisterSubscriptionAdapter_wo_explicit_required.<locals>._FactoryNr   r   r   r   r   r     r   r   r  rc   rb   )rI   r;   rd   r   re   r\  r   rY  r!   ri  r   r%   ri   r(   rW   rf   r   rj   r   r   rG   rV   )r   r;   r   r\  rB   rK   r   r/   r    r   r   r   r   rm   r   r   r   7test_unregisterSubscriptionAdapter_wo_explicit_required  r  zGComponentsTests.test_unregisterSubscriptionAdapter_wo_explicit_requiredc           	      C   sz   ddl m} ddl m} G dd d|}|d}|d}|  }||G dd d}| }| t||f|g  d S )	Nr   r:   r   c                   @   r>   )z4ComponentsTests.test_subscribers_empty.<locals>.IFooNr?   r   r   r   r   rB     rC   rB   r   c                   @   r>   )z3ComponentsTests.test_subscribers_empty.<locals>.BarNr?   r   r   r   r   Bar  rF   rt  )rI   r;   r   r   r%   r   subscribers)	r   r;   r   rB   rK   r   r/   rt  barr   r   r   test_subscribers_empty  s   z&ComponentsTests.test_subscribers_emptyc                    s   ddl m} ddl m} G dd d|}|d}|d G  fddd}G d	d
 d
|}|  }|| f| || f| | G dd d}| }	||	f|}
dd }t|
|d}
| t|
d | 	|
d | | 	|
d | d S )Nr   r:   r   c                   @   r>   )z8ComponentsTests.test_subscribers_non_empty.<locals>.IFooNr?   r   r   r   r   rB     rC   rB   r   c                       s   e Zd Z fZdd ZdS )z<ComponentsTests.test_subscribers_non_empty.<locals>._Factoryc                 S   r  r	   )r  r  r   r   r   r     r  zEComponentsTests.test_subscribers_non_empty.<locals>._Factory.__init__N)r&   r@   rA   r   r   r   r   r   r   r     s    r   c                   @   r>   )z<ComponentsTests.test_subscribers_non_empty.<locals>._DerivedNr?   r   r   r   r   _Derived  rC   rx  c                   @   r>   )z7ComponentsTests.test_subscribers_non_empty.<locals>.BarNr?   r   r   r   r   rt    rF   rt  c                 S   s   | j jS r	   )r   r&   xr   r   r   
_klassname     z>ComponentsTests.test_subscribers_non_empty.<locals>._klassnamer   ry   rc   )
rI   r;   r   r   rY  ru  r   r%   ri   r(   )r   r;   r   rB   rK   r   rx  r/   rt  rv  ru  r{  r   r   r   test_subscribers_non_empty  s&   z*ComponentsTests.test_subscribers_non_emptyc                 C   sR   ddl m} G dd d|}|d}d}|  }dd }| jt|j|||d d S )	Nr   r:   c                   @   r>   )zBComponentsTests.test_registerHandler_w_nonblank_name.<locals>.IFooNr?   r   r   r   r   rB     rC   rB   rg  c                 S   rO   r	   rP   r   r   r   r   rR    	  rS   zFComponentsTests.test_registerHandler_w_nonblank_name.<locals>._factoryr   r   )rI   r;   r   rX   rY   registerHandler)r   r;   rB   rK   rj  r/   rR   r   r   r   $test_registerHandler_w_nonblank_name  s   
z4ComponentsTests.test_registerHandler_w_nonblank_namec                 C   s  ddl m} ddlm} ddlm} G dd d|}|d}d}d}d	d
 }|  }	|  \}
}|
 |	j||f|d W d    n1 sFw   Y  |	j	j
d | d  | }| t|d | |d | | |	j|f|||fg | t|d |d \}}|\}| |i  | || | |j| | |jj|	 | |jj|f | |jj| | |jj| | |jj| d S )Nr   r:   r^   HandlerRegistrationc                   @   r>   )zFComponentsTests.test_registerHandler_w_explicit_required.<locals>.IFooNr?   r   r   r   r   rB   	  rC   rB   rb   rG   c                 S   rO   r	   rP   r   r   r   r   rR   	  rS   zJComponentsTests.test_registerHandler_w_explicit_required.<locals>._factoryrH   rc   )rI   r;   rd   r_   re   r  r   r!   r  r)   rh   r%   ri   rf   r.   r(   rW   r   r   r   rG   rV   )r   r;   r_   r  rB   rK   r^  rL   rR   r/   r    r   r   r   r   rm   r   r   r   (test_registerHandler_w_explicit_required	  s<   z8ComponentsTests.test_registerHandler_w_explicit_requiredc           
         s   ddl m} G dd d|}|d d}d}G  fddd}|  }|  \}}| |j||d	d
 W d    n1 s>w   Y  |jjd   d  | }	| t|	d | 	|	d | | |j
 f|||fg | t|d d S )Nr   r:   c                   @   r>   )zPComponentsTests.test_registerHandler_wo_explicit_required_no_event.<locals>.IFooNr?   r   r   r   r   rB   -	  rC   rB   rG   rb   c                       r   )zTComponentsTests.test_registerHandler_wo_explicit_required_no_event.<locals>._FactoryNr   r   rK   r   r   r   4	  s    r   Frb  rc   )rI   r;   r   r!   r  r)   rh   r%   ri   rf   r.   )
r   r;   rB   rL   r^  r   r/   r    r   r   r   r  r   2test_registerHandler_wo_explicit_required_no_event*	  s$   zBComponentsTests.test_registerHandler_wo_explicit_required_no_eventc                 C   s   |   }| t|  d S r	   )r   r   r   registeredHandlersr5   r   r   r   test_registeredHandlers_emptyC	  s   z-ComponentsTests.test_registeredHandlers_emptyc           
      C   sD  ddl m} ddlm} G dd d|}|d}dd }dd	 }|  }|||f |||f d
d }t| |d}	| t	|	d | 
|	d | | |	d j|f | |	d jd | |	d j| | |	d jd | 
|	d | | |	d j|f | |	d jd | |	d j| | |	d jd d S )Nr   r:   r  c                   @   r>   )z?ComponentsTests.test_registeredHandlers_non_empty.<locals>.IFooNr?   r   r   r   r   rB   K	  rC   rB   c                 S   rO   r	   rP   r   r   r   r   	_factory1P	  rS   zDComponentsTests.test_registeredHandlers_non_empty.<locals>._factory1c                 S   rO   r	   rP   r   r   r   r   	_factory2S	  rS   zDComponentsTests.test_registeredHandlers_non_empty.<locals>._factory2c                 S   s
   | j jjS r	   )rV   __code__co_namery  r   r   r   _factory_nameZ	  r  zHComponentsTests.test_registeredHandlers_non_empty.<locals>._factory_namer   ry   rb   rc   )rI   r;   re   r  r   r  r   r  r%   ri   r(   r   r   rV   rG   )
r   r;   r  rB   rK   r  r  r/   r  ru  r   r   r   !test_registeredHandlers_non_emptyG	  s,   z1ComponentsTests.test_registeredHandlers_non_emptyc                 C   sJ   ddl m} G dd d|}|d}d}|  }| jt|j|f|d d S )Nr   r:   c                   @   r>   )zDComponentsTests.test_unregisterHandler_w_nonblank_name.<locals>.IFooNr?   r   r   r   r   rB   m	  rC   rB   rg  r~  )rI   r;   r   rX   rY   unregisterHandler)r   r;   rB   rK   rj  r/   r   r   r   &test_unregisterHandler_w_nonblank_namej	  s   

z6ComponentsTests.test_unregisterHandler_w_nonblank_namec                 C   s   |   }| t|j d S r	   )r   rX   rY   r  r5   r   r   r   3test_unregisterHandler_neither_factory_nor_requiredv	  s   zCComponentsTests.test_unregisterHandler_neither_factory_nor_requiredc                 C   sH   ddl m} G dd d|}|d}|  }|j|fd}| | d S )Nr   r:   c                   @   r>   )z9ComponentsTests.test_unregisterHandler_miss.<locals>.IFooNr?   r   r   r   r   rB   }	  rC   rB   r   )rI   r;   r   r  r   )r   r;   rB   rK   r/   r   r   r   r   test_unregisterHandler_missz	  s   z+ComponentsTests.test_unregisterHandler_missc                 C   s8  ddl m} ddlm} ddlm} G dd d|}|d}|  }dd }|  }|||f |  \}}	| |	||f}
W d    n1 sKw   Y  | 
|
 | t|	d	 |	d \}}|\}| |i  | || | |j| | |jj| | |jj|f | |jjd
 | |jj| d S )Nr   r:   r   r  c                   @   r>   )zXComponentsTests.test_unregisterHandler_hit_w_factory_and_explicit_provided.<locals>.IFooNr?   r   r   r   r   rB   	  rC   rB   c                 S   rO   r	   rP   r   r   r   r   rR   	  rS   z\ComponentsTests.test_unregisterHandler_hit_w_factory_and_explicit_provided.<locals>._factoryrc   rb   )rI   r;   rd   r   re   r  r   r  r!   r  r   r%   ri   r(   rW   rf   r   r   r   rV   r   r;   r   r  rB   rK   r/   rR   r    r   r   r   r   rm   r   r   r   :test_unregisterHandler_hit_w_factory_and_explicit_provided	  s0   
zJComponentsTests.test_unregisterHandler_hit_w_factory_and_explicit_providedc                 C   s6  ddl m} ddlm} ddlm} G dd d|}|d}|  }dd }|  }|||f |  \}}	| |j	|fd	}
W d    n1 sKw   Y  | 
|
 | t|	d
 |	d \}}|\}| |i  | || | |j| | |jj| | |jj|f | |jjd | |jj d S )Nr   r:   r   r  c                   @   r>   )zQComponentsTests.test_unregisterHandler_hit_w_only_explicit_provided.<locals>.IFooNr?   r   r   r   r   rB   	  rC   rB   c                 S   rO   r	   rP   r   r   r   r   rR   	  rS   zUComponentsTests.test_unregisterHandler_hit_w_only_explicit_provided.<locals>._factoryr  rc   rb   )rI   r;   rd   r   re   r  r   r  r!   r  r   r%   ri   r(   rW   rf   r   r   r   rk   rV   r  r   r   r   3test_unregisterHandler_hit_w_only_explicit_provided	  s0   
zCComponentsTests.test_unregisterHandler_hit_w_only_explicit_providedc                    sB  ddl m} ddlm} ddlm} G dd d|}|d G  fddd}|  }|| |  \}}| |	|}	W d    n1 sHw   Y  | 
|	 | t|d	 |d \}
}|
\}| |i  | || | |j| | |jj| | |jj f | |jjd
 | |jjd
 | |jj| d S )Nr   r:   r   r  c                   @   r>   )zIComponentsTests.test_unregisterHandler_wo_explicit_required.<locals>.IFooNr?   r   r   r   r   rB   	  rC   rB   c                       r   )zMComponentsTests.test_unregisterHandler_wo_explicit_required.<locals>._FactoryNr   r   r  r   r   r   	  r   r   rc   rb   )rI   r;   rd   r   re   r  r   r  r!   r  r   r%   ri   r(   rW   rf   r   r   r   rG   rV   )r   r;   r   r  rB   r   r/   r    r   r   r   r   rm   r   r  r   +test_unregisterHandler_wo_explicit_required	  s0   

z;ComponentsTests.test_unregisterHandler_wo_explicit_requiredc                 C   sd   ddl m} ddl m} G dd d|}|d}|  }||G dd d}| }||f d S )Nr   r:   r   c                   @   r>   )z/ComponentsTests.test_handle_empty.<locals>.IFooNr?   r   r   r   r   rB   	  rC   rB   c                   @   r>   )z.ComponentsTests.test_handle_empty.<locals>.BarNr?   r   r   r   r   rt  	  rF   rt  )rI   r;   r   r   handle)r   r;   r   rB   rK   r/   rt  rv  r   r   r   test_handle_empty	  s   z!ComponentsTests.test_handle_emptyc           
         s   ddl m} ddl m} G dd d|}|d}g   fdd}g fdd	}|  }|||f |||f ||G d
d d}| }	||	 |  |	g | |	g d S )Nr   r:   r   c                   @   r>   )z3ComponentsTests.test_handle_non_empty.<locals>.IFooNr?   r   r   r   r   rB   	  rC   rB   c                         |  d S r	   r   r   )	_called_1r   r   
_factory_1	  rD  z9ComponentsTests.test_handle_non_empty.<locals>._factory_1c                    r  r	   r   r   )	_called_2r   r   
_factory_2
  rD  z9ComponentsTests.test_handle_non_empty.<locals>._factory_2c                   @   r>   )z2ComponentsTests.test_handle_non_empty.<locals>.BarNr?   r   r   r   r   rt  	
  rF   rt  )rI   r;   r   r   r  r  r%   )
r   r;   r   rB   rK   r  r  r/   rt  rv  r   )r  r  r   test_handle_non_empty	  s"   
z%ComponentsTests.test_handle_non_emptyTc                 C   s   G dd dt }|  }t }|r|nt }|j||d |j||dd | t|jjd | |jj|d|r;|fn||fiig | |jj||rMdnd	i |j	||d}| 
| |j	||dd}| 
| | |jji  | t|jjd
 d S )Nc                   @   r>   )zQComponentsTests.test_register_unregister_identical_objects_provided.<locals>.IFooNr?   r   r   r   r   rB   
  rC   rB   r  rv  r   rc   rb   r      r   )r   r   rW   rJ   r%   ri   r*   rh   Z	_providedr   r   )r   	identicalrB   r/   firstsecondresr   r   r   3test_register_unregister_identical_objects_provided
  s&   



zCComponentsTests.test_register_unregister_identical_objects_providedc                 C   s   | j dd d S )NF)r  )r  r
   r   r   r   2test_register_unregister_nonequal_objects_provided0
  s   
zBComponentsTests.test_register_unregister_nonequal_objects_providedc                 C   s  G dd dt }G dd d}|  }tdD ]}|j| || d q|jj}|jj}| t|d | t|d d | t|d | d |jj	}| t|d | t|d d | t|d | d | t|d | d	 d t
|  }|j_|i  i  }	|d |< td
D ]}
tt|
}
|d | |
 |	|
< q| || t
|  }|j_	|i  i  }	|d |< d|	d	< tddD ]}
tt|
}
|d | |
 }|	d	  |f7  < q| }| |jj| | |d
dddd |jdd}| |jj|d  | || | || | t|d | d	 t|d | d	  |d | d	 D ]}| ||d | d	  q7| }| |ddddd |jdd}| || | |jj|d  d S )Nc                   @      e Zd ZdZdS )zGComponentsTests.test_rebuildUtilityRegistryFromLocalCache.<locals>.IFooDoes nothingNr&   r@   rA   __doc__r   r   r   r   rB   7
      rB   c                   @   r  )zYComponentsTests.test_rebuildUtilityRegistryFromLocalCache.<locals>.UtilityImplementingFoor  Nr  r   r   r   r   UtilityImplementingFoo:
  r  r     r   rc   r   rb   
   r                  )Zdid_not_registerZneeded_registeredZdid_not_subscribeZneeded_subscribedT)Zrebuild)r   r   rangerJ   r*   Z_generationrg   r%   ri   rh   typer   strassertNotEqualZ$rebuildUtilityRegistryFromLocalCacheassertIn)r   rB   r  compsiZorig_generationZorig_adaptersZorig_subscribersZnew_adaptersdr   Znew_subsr/   Zrebuild_preflightZrebuild_resultsZorig_subscriberZpreflight_afterZrebuild_afterr   r   r   )test_rebuildUtilityRegistryFromLocalCache5
  s   


	z9ComponentsTests.test_rebuildUtilityRegistryFromLocalCache)r   )T)vr&   r@   rA   r   r   r!   r0   r2   r6   r9   rM   r\   rn   rr   rs   rv   rx   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r  r!  r$  r%  r1  r4  r=  r>  rF  rI  rJ  r-  rO  rQ  rT  rX  rZ  r_  r`  ra  rc  re  rf  rk  rl  rm  rn  rp  rq  rr  rs  rw  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r   r      s    

!!"*  "$% 


&)*1(##!$,2  
/!*'((####!&$# 
r   c                       s   e Zd Z fddZ  ZS )UnhashableComponentsTestsc                    s    G dd dt t|  t}|S )Nc                   @   r>   )z=UnhashableComponentsTests._getTargetClass.<locals>.ComponentsNr?   r   r   r   r   r   
  s    r   )r   r  r   r   )r   r   r   r   r   r   
  s   
z)UnhashableComponentsTests._getTargetClass)r&   r@   rA   r   r   r   r   r   r   r  
  s    r  c                   @   s   e Zd Zdd Zd6ddZdd Zdd	 Zd
d Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 ZdS )7UtilityRegistrationTestsc                 C      ddl m} |S )Nr   r`   )re   ra   )r   ra   r   r   r   r   
     z(UtilityRegistrationTests._getTargetClassNc                 C   s`   ddl m} G dd d|}|d}G dd d}| }d}d	}	|  }
|
|||||	|||fS )
Nr   r:   c                   @   r>   )zAUtilityRegistrationTests._makeOne.<locals>.InterfaceClassSubclassNr?   r   r   r   r   InterfaceClassSubclass
  rC   r  rB   c                   @   r  )z4UtilityRegistrationTests._makeOne.<locals>._Registryc                 S      dS NZ	_REGISTRYr   r
   r   r   r   __repr__
  r   z=UtilityRegistrationTests._makeOne.<locals>._Registry.__repr__Nr&   r@   rA   r  r   r   r   r   	_Registry
  r  r  r   	DOCSTRINGrI   r;   r   )r   rU   rV   r;   r  rK   r  r   r   docklassr   r   r   r   
     z!UtilityRegistrationTests._makeOnec                 C   *   ddl m} ddlm} |||   d S )Nr   IUtilityRegistrationverifyClass)rd   r  zope.interface.verifyr  r   )r   r  r  r   r   r   +test_class_conforms_to_IUtilityRegistration
     zDUtilityRegistrationTests.test_class_conforms_to_IUtilityRegistrationc                 C   4   ddl m} ddlm} |  \}}}||| d S )Nr   r  verifyObject)rd   r  r  r  r   )r   r  r  ur_r   r   r   .test_instance_conforms_to_IUtilityRegistration
     zGUtilityRegistrationTests.test_instance_conforms_to_IUtilityRegistrationc                 C   <   G dd d}| }|  |\}}}| t|d|  d S )Nc                   @      e Zd ZdZ dS )z:UtilityRegistrationTests.test___repr__.<locals>._ComponentTESTNr?   r   r   r   r   
_Component
  r  r  zAUtilityRegistration(_REGISTRY, IFoo, %r, TEST, None, 'DOCSTRING')r3   r   r  
_componentr  	_registryrl   r   r   r   r6   
     z&UtilityRegistrationTests.test___repr__c                 C   D   G dd d}| }|  |\}}}t |_| t|d|  d S )Nc                   @   r  )zKUtilityRegistrationTests.test___repr___provided_wo_name.<locals>._Componentc                 S   r  Nr  r   r
   r   r   r   r  
  r   zTUtilityRegistrationTests.test___repr___provided_wo_name.<locals>._Component.__repr__Nr  r   r   r   r   r  
  r  r  AUtilityRegistration(_REGISTRY, None, %r, TEST, None, 'DOCSTRING')r   rW   rj   r%   r4   r  r   r   r   test___repr___provided_wo_name
     z7UtilityRegistrationTests.test___repr___provided_wo_namec                 C   r  )Nc                   @   r  )zLUtilityRegistrationTests.test___repr___component_wo_name.<locals>._Componentc                 S   r  r  r   r
   r   r   r   r  
  r   zUUtilityRegistrationTests.test___repr___component_wo_name.<locals>._Component.__repr__Nr  r   r   r   r   r  
  r  r  r  r  r  r   r   r   test___repr___component_wo_name
  r  z8UtilityRegistrationTests.test___repr___component_wo_namec                 C   .   t  }| |\}}}| | t| d S r	   rW   r   r%   __hash__idr   r  r  r  rl   r   r   r   test___hash__
     z&UtilityRegistrationTests.test___hash__c                 C   &   t  }| |\}}}| || d S r	   rW   r   r%   r  r   r   r   test___eq___identity
     z-UtilityRegistrationTests.test___eq___identityc                 C   6   t  }| |\}}}| |\}}}| || d S r	   r  r   r  r  r  rl   ur2r  r   r   r   test___eq___hit     z(UtilityRegistrationTests.test___eq___hitc                 C   <   t  }t  }| |\}}}| |\}}}| || d S r	   rW   r   r  r   r  _component2r  r  rl   r  r  r   r   r   test___eq___miss	  
   z)UtilityRegistrationTests.test___eq___missc                 C   r  r	   r  r  r   r   r   test___ne___identity  r  z-UtilityRegistrationTests.test___ne___identityc                 C   r  r	   r  r  r   r   r   test___ne___hit  r  z(UtilityRegistrationTests.test___ne___hitc                 C   r  r	   r  r  r   r   r   test___ne___miss  r  z)UtilityRegistrationTests.test___ne___missc                 C   (   t  }| |\}}}| ||k  d S r	   rW   r   r   r  r   r   r   test___lt___identity"     z-UtilityRegistrationTests.test___lt___identityc                 C   8   t  }| |\}}}| |\}}}| ||k  d S r	   r  r  r   r   r   test___lt___hit'     z(UtilityRegistrationTests.test___lt___hitc                 C   F   t  }t  }| |\}}}| |\}}}|d |_| || d S N2rW   r   r   Z
assertLessr  r   r   r   test___lt___miss-     
z)UtilityRegistrationTests.test___lt___missc                 C   r  r	   rW   r   assertLessEqualr  r   r   r   test___le___identity5  r  z-UtilityRegistrationTests.test___le___identityc                 C   r  r	   r  r  r   r   r   test___le___hit:  r  z(UtilityRegistrationTests.test___le___hitc                 C   r	  r
  rW   r   r   r  r  r   r   r   test___le___miss@  r  z)UtilityRegistrationTests.test___le___missc                 C   (   t  }| |\}}}| ||k d S r	   r  r  r   r   r   test___gt___identityH  r  z-UtilityRegistrationTests.test___gt___identityc                 C   F   t  }t  }| |\}}}| |\}}}|d |_| || d S r
  rW   r   r   ZassertGreaterr  r   r   r   test___gt___hitM  r  z(UtilityRegistrationTests.test___gt___hitc                 C   8   t  }| |\}}}| |\}}}| ||k d S r	   r  r  r   r   r   test___gt___missU  r  z)UtilityRegistrationTests.test___gt___missc                 C   r  r	   rW   r   assertGreaterEqualr  r   r   r   test___ge___identity[  r  z-UtilityRegistrationTests.test___ge___identityc                 C   H   t  }t  }| |\}}}| |\}}}|d |_| ||k d S r
  rW   r   r   r   r  r   r   r   test___ge___miss`     
z)UtilityRegistrationTests.test___ge___missc                 C   @   t  }| |\}}}| |\}}}|d |_| || d S r
  rW   r   r   r  r  r   r   r   test___ge___hith  
   
z(UtilityRegistrationTests.test___ge___hit)NN)r&   r@   rA   r   r   r  r  r6   r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r!  r%  r   r   r   r   r  
  s6    
r  c                   @   s   e Zd Zdd Zd:ddZdd Zdd	 Zd
d Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 ZdS );AdapterRegistrationTestsc                 C   r  )Nr   r   )re   r   )r   r   r   r   r   r   r  r  z(AdapterRegistrationTests._getTargetClassNc                 C   j   ddl m} G dd d|}|d}|d}G dd d}| }d}d	}	|  }
|
||f||||	||fS )
Nr   r:   c                   @   r>   )z/AdapterRegistrationTests._makeOne.<locals>.IFooNr?   r   r   r   r   rB   y  rC   rB   r   c                   @   r  )z4AdapterRegistrationTests._makeOne.<locals>._Registryc                 S   r  r  r   r
   r   r   r   r    r   z=AdapterRegistrationTests._makeOne.<locals>._Registry.__repr__Nr  r   r   r   r   r    r  r  r   r  r  r   rU   r;   rB   rK   r   r  r   r   r  r  r   r   r   r   v     z!AdapterRegistrationTests._makeOnec                 C   r  )Nr   IAdapterRegistrationr  )rd   r,  r  r  r   )r   r,  r  r   r   r   +test_class_conforms_to_IAdapterRegistration  r  zDAdapterRegistrationTests.test_class_conforms_to_IAdapterRegistrationc                 C   r  )Nr   r+  r  )rd   r,  r  r  r   )r   r,  r  arr  r   r   r   .test_instance_conforms_to_IAdapterRegistration  r  zGAdapterRegistrationTests.test_instance_conforms_to_IAdapterRegistrationc                 C   r  )Nc                   @   r  )z:AdapterRegistrationTests.test___repr__.<locals>._Componentr  Nr?   r   r   r   r   r    r  r  zCAdapterRegistration(_REGISTRY, [IBar], IFoo, %r, TEST, 'DOCSTRING')r3   r   r  r  r.  r  rl   r   r   r   r6     r  z&AdapterRegistrationTests.test___repr__c                 C   r  )Nc                   @   r  )zKAdapterRegistrationTests.test___repr___provided_wo_name.<locals>._Componentc                 S   r  r  r   r
   r   r   r   r    r   zTAdapterRegistrationTests.test___repr___provided_wo_name.<locals>._Component.__repr__Nr  r   r   r   r   r    r  r  CAdapterRegistration(_REGISTRY, [IBar], None, %r, TEST, 'DOCSTRING')r  r0  r   r   r   r    r  z7AdapterRegistrationTests.test___repr___provided_wo_namec                 C   r  )Nc                   @   r  )zLAdapterRegistrationTests.test___repr___component_wo_name.<locals>._Componentc                 S   r  r  r   r
   r   r   r   r    r   zUAdapterRegistrationTests.test___repr___component_wo_name.<locals>._Component.__repr__Nr  r   r   r   r   r    r  r  r1  r  r0  r   r   r   r    r  z8AdapterRegistrationTests.test___repr___component_wo_namec                 C   r  r	   r  r   r  r.  r  rl   r   r   r   r    r  z&AdapterRegistrationTests.test___hash__c                 C   r  r	   r  r2  r   r   r   r    r  z-AdapterRegistrationTests.test___eq___identityc                 C   r  r	   r  r   r  r.  r  rl   ar2r  r   r   r   r    r  z(AdapterRegistrationTests.test___eq___hitc                 C   r  r	   r  r   r  r  r.  r  rl   r4  r  r   r   r   r    r  z)AdapterRegistrationTests.test___eq___missc                 C   r  r	   r  r2  r   r   r   r    r  z-AdapterRegistrationTests.test___ne___identityc                 C   r  r	   r  r3  r   r   r   r    r  z)AdapterRegistrationTests.test___ne___missc                 C   r  r	   r  r5  r   r   r   test___ne___hit_component  r  z2AdapterRegistrationTests.test___ne___hit_componentc           
      C   s`   ddl m} G dd d|}|d}t }| |\}}}| |\}}	}	||_| || d S )Nr   r:   c                   @   r>   )z?AdapterRegistrationTests.test___ne___hit_provided.<locals>.IFooNr?   r   r   r   r   rB     rC   rB   r5  )rI   r;   rW   r   rj   r  )
r   r;   rB   r:  r  r.  r  rl   r4  r  r   r   r   test___ne___hit_provided  s   z1AdapterRegistrationTests.test___ne___hit_providedc                 C   sh   ddl m} G dd d|}|d}t }t }| |\}}}| |\}	}
}
|f|	_| ||	 d S )Nr   r:   c                   @   r>   )z?AdapterRegistrationTests.test___ne___hit_required.<locals>.IFooNr?   r   r   r   r   rB     rC   rB   r5  )rI   r;   rW   r   r   r  )r   r;   rB   r:  r  r  r.  r  rl   r4  r  r   r   r   test___ne___hit_required  s   z1AdapterRegistrationTests.test___ne___hit_requiredc                 C   r  r	   r  r2  r   r   r   r  
  r  z-AdapterRegistrationTests.test___lt___identityc                 C   r  r	   r  r3  r   r   r   r    r  z(AdapterRegistrationTests.test___lt___hitc                 C   r	  r
  r  r5  r   r   r   r    r  z)AdapterRegistrationTests.test___lt___missc                 C   r  r	   r  r2  r   r   r   r    r  z-AdapterRegistrationTests.test___le___identityc                 C   r  r	   r  r3  r   r   r   r  "  r  z(AdapterRegistrationTests.test___le___hitc                 C   r	  r
  r  r5  r   r   r   r  (  r  z)AdapterRegistrationTests.test___le___missc                 C   r  r	   r  r2  r   r   r   r  0  r  z-AdapterRegistrationTests.test___gt___identityc                 C   r  r
  r  r5  r   r   r   r  5  r  z(AdapterRegistrationTests.test___gt___hitc                 C   r  r	   r  r3  r   r   r   r  =  r  z)AdapterRegistrationTests.test___gt___missc                 C   r  r	   r  r2  r   r   r   r  C  r  z-AdapterRegistrationTests.test___ge___identityc                 C   r  r
  r   r5  r   r   r   r!  H  r"  z)AdapterRegistrationTests.test___ge___missc                 C   r#  r
  r$  r3  r   r   r   r%  P  r&  z(AdapterRegistrationTests.test___ge___hitr	   )r&   r@   rA   r   r   r-  r/  r6   r  r  r  r  r  r  r  r  r6  r7  r8  r  r  r  r  r  r  r  r  r  r  r!  r%  r   r   r   r   r'  p  s:    
r'  c                   @   s.   e Zd Zdd Zd
ddZdd Zdd	 ZdS )SubscriptionRegistrationTestsc                 C   r  )Nr   r[  )re   r\  )r   r\  r   r   r   r   Z  r  z-SubscriptionRegistrationTests._getTargetClassNc                 C   r(  )
Nr   r:   c                   @   r>   )z4SubscriptionRegistrationTests._makeOne.<locals>.IFooNr?   r   r   r   r   rB   a  rC   rB   r   c                   @   r  )z9SubscriptionRegistrationTests._makeOne.<locals>._Registryc                 S   r  r  r   r
   r   r   r   r  h  r   zBSubscriptionRegistrationTests._makeOne.<locals>._Registry.__repr__Nr  r   r   r   r   r  g  r  r  r   r  r  r)  r   r   r   r   ^  r*  z&SubscriptionRegistrationTests._makeOnec                 C   r  )Nr    ISubscriptionAdapterRegistrationr  )rd   r;  r  r  r   )r   r;  r  r   r   r   7test_class_conforms_to_ISubscriptionAdapterRegistrationu  r  zUSubscriptionRegistrationTests.test_class_conforms_to_ISubscriptionAdapterRegistrationc                 C   r  )Nr   r:  r  )rd   r;  r  r  r   )r   r;  r  Zsarr  r   r   r   :test_instance_conforms_to_ISubscriptionAdapterRegistrationz  r  zXSubscriptionRegistrationTests.test_instance_conforms_to_ISubscriptionAdapterRegistrationr	   )r&   r@   rA   r   r   r<  r=  r   r   r   r   r9  X  s
    
r9  c                   @   sF   e Zd Zdd ZdddZdd Zdd	 Zd
d Zdd Zdd Z	dS )HandlerRegistrationTestsc                 C   r  )Nr   r  )re   r  )r   r  r   r   r   r     r  z(HandlerRegistrationTests._getTargetClassNc           
      C   s`   ddl m} G dd d|}|d}G dd d}| }d}d}|  }	|	||f|||||fS )	Nr   r:   c                   @   r>   )z/HandlerRegistrationTests._makeOne.<locals>.IFooNr?   r   r   r   r   rB     rC   rB   c                   @   r  )z4HandlerRegistrationTests._makeOne.<locals>._Registryc                 S   r  r  r   r
   r   r   r   r    r   z=HandlerRegistrationTests._makeOne.<locals>._Registry.__repr__Nr  r   r   r   r   r    r  r  r   r  r  )
r   rU   r;   rB   rK   r  r   r   r  r  r   r   r   r     r  z!HandlerRegistrationTests._makeOnec                 C   r  )Nr   IHandlerRegistrationr  )rd   r@  r  r  r   )r   r@  r  r   r   r   +test_class_conforms_to_IHandlerRegistration  r  zDHandlerRegistrationTests.test_class_conforms_to_IHandlerRegistrationc                 C   r  )Nr   r?  r  )rd   r@  r  r  r   )r   r@  r  hrr  r   r   r   .test_instance_conforms_to_IHandlerRegistration  r  zGHandlerRegistrationTests.test_instance_conforms_to_IHandlerRegistrationc                 C   sF   dd }|  |\}}}| |j| | |j|j | |j d S )Nc                 S   rO   r	   rP   r   r   r   r   rR     rS   z:HandlerRegistrationTests.test_properties.<locals>._factory)r   rf   handlerrV   rk   rj   )r   rR   rB  r  r   r   r   test_properties  s
   z(HandlerRegistrationTests.test_propertiesc                 C   8   G dd d}|  | \}}}| t|d|  d S )Nc                   @   r  )zGHandlerRegistrationTests.test___repr___factory_w_name.<locals>._Factoryr  Nr?   r   r   r   r   r     r  r   =HandlerRegistration(_REGISTRY, [IFoo], %r, TEST, 'DOCSTRING')r3   r   r   rB  r  rl   r   r   r   test___repr___factory_w_name  s   z5HandlerRegistrationTests.test___repr___factory_w_namec                 C   rF  )Nc                   @   r  )zHHandlerRegistrationTests.test___repr___factory_wo_name.<locals>._Factoryc                 S   r  r  r   r
   r   r   r   r    r   zQHandlerRegistrationTests.test___repr___factory_wo_name.<locals>._Factory.__repr__Nr  r   r   r   r   r     r  r   rG  r3   rH  r   r   r   test___repr___factory_wo_name  s   z6HandlerRegistrationTests.test___repr___factory_wo_namer	   )
r&   r@   rA   r   r   rA  rC  rE  rI  rJ  r   r   r   r   r>    s    
r>  c                   @   s   e Zd Zdd Zdd ZdS )PersistentAdapterRegistryc                 C   sF   | j  }t|D ]}|| jv s|dr|| q	|dd  |S )N_vro)__dict__copyr   Z
_delegated
startswithpop)r   statekr   r   r   __getstate__  s   

z&PersistentAdapterRegistry.__getstate__c                 C   s6   | dd}| j| |   || _| j|  d S )Nr'   r   )rQ  rN  updateZ_createLookupr'   rM  rL  )r   rR  basesr   r   r   __setstate__  s
   z&PersistentAdapterRegistry.__setstate__N)r&   r@   rA   rT  rW  r   r   r   r   rK    s    rK  c                   @   r  )PersistentComponentsc                 C   s   t  | _t  | _d S r	   )rK  r)   r*   r
   r   r   r   _init_registries  s   z%PersistentComponents._init_registriesN)r&   r@   rA   rY  r   r   r   r   rX    s    rX  c                   @   r>   )PersistentDictComponentsNr?   r   r   r   r   rZ    rF   rZ  c                   @   r  )PersistentComponentsDictc                 C   s   t |  t| | d S r	   )r   r   rX  )r   r   r   r   r   r     s   
z!PersistentComponentsDict.__init__Nr  r   r   r   r   r[        r[  c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestPersistentComponentsc                 C   s   t dS )Nr   )rX  r
   r   r   r   r     r|  z!TestPersistentComponents._makeOnec                 C   s   d S r	   r   r   Zmader   r   r   _check_equality_after_pickle  r   z5TestPersistentComponents._check_equality_after_picklec                 C   s<   dd l }|  }|| |||}| |jd d S Nr   r   )pickler   dumpsloadsr%   r&   )r   ra  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`  )ra  r   rW   rJ   r   rf   r   rc  rb  r%   r&   ZassertIsNotNoner_  )r   ra  r/   Zutilityrd  r   r   r   &test_pickles_with_utility_registration  s*   z?TestPersistentComponents.test_pickles_with_utility_registrationN)r&   r@   rA   r   r_  re  rf  r   r   r   r   r]    s
    r]  c                   @   $   e Zd Zdd Zdd Zdd ZdS )TestPersistentDictComponentsc                 C   r   r	   )rZ  r
   r   r   r   r     r   z,TestPersistentDictComponents._getTargetClassc                 C   s   |   dd}d|d< |S )Nr   r   *   r   r   r5   r   r   r   r   "  s   z%TestPersistentDictComponents._makeOnec                 C   s    |  d| | |d d d S )Nr   ri  )r  r%   r^  r   r   r   r_  '  s   z9TestPersistentDictComponents._check_equality_after_pickleN)r&   r@   rA   r   r   r_  r   r   r   r   rh    s    rh  c                   @   r  )TestPersistentComponentsDictc                 C   r   r	   )r[  r
   r   r   r   r   .  r   z,TestPersistentComponentsDict._getTargetClassN)r&   r@   rA   r   r   r   r   r   rj  ,  r\  rj  c                   @   rg  )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>)rn  
to_restoreitemssetattr)r   rn  r   r   valuer   rm  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	   )rp  rq  rr  rn  )r   exc_typeexc_valexc_tbr   rs  r   r   r   __exit__=  s   z_Monkey.__exit__N)r&   r@   rA   r   rt  rx  r   r   r   r   r   2  s    r   )r  Zunittestr   r   r$   r   re   r   ZTestCaser   r  r  r'  r9  r>  rK  rX  r   rZ  r[  r]  rh  rj  r   r   r   r   r   <module>   sT                         M i)J	+