U
    ÈZjk! ã                   @   sJ  d Z ddlZddlmZ 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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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jƒZG dd„ dejƒZG d d!„ d!eƒZd"d#„ Zd$d%„ ZG d&d'„ d'eƒZdS )(zTest Interface implementation
é    N)Ú_skip_under_py3kc                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTest_invariantc                    sT   ddl m‰ ddl m} dd„ ‰ G ‡ ‡fdd„dtƒ}|  t||d ƒdˆ gi¡ d S )	Nr   ©Ú	invariant©ÚTAGGED_DATAc                  _   s
   t ƒ ‚d S ©N©ÚNotImplementedError©ÚargsÚkw© r   úf/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/site-packages/zope/interface/tests/test_interface.pyÚ_check   s    z,Test_invariant.test_w_single.<locals>._checkc                       s   e Zd Z”” ƒ dS )z)Test_invariant.test_w_single.<locals>.FooN©Ú__name__Ú
__module__Ú__qualname__r   ©r   r   r   r   ÚFoo!   s   r   Ú
invariants©Úzope.interface.interfacer   r   ÚobjectÚassertEqualÚgetattr©Úselfr   r   r   r   r   Útest_w_single   s    ÿzTest_invariant.test_w_singlec                    s`   ddl m‰ ddl m} dd„ ‰dd„ ‰ G ‡ ‡‡fdd	„d	tƒ}|  t||d ƒd
ˆˆ gi¡ d S )Nr   r   r   c                  _   s
   t ƒ ‚d S r   r	   r   r   r   r   r   +   s    z.Test_invariant.test_w_multiple.<locals>._checkc                  _   s
   t ƒ ‚d S r   r	   r   r   r   r   Ú_another_check.   s    z6Test_invariant.test_w_multiple.<locals>._another_checkc                       s   e Zd Z””ƒ ”” ƒ dS )z+Test_invariant.test_w_multiple.<locals>.FooNr   r   ©r    r   r   r   r   r   1   s   r   r   r   r   r   r!   r   Útest_w_multiple'   s    
ÿzTest_invariant.test_w_multipleN)r   r   r   r   r"   r   r   r   r   r      s   r   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTest_taggedValuec                    sJ   ddl m‰  ddl m} G ‡ fdd„dtƒ}|  t||d ƒddgi¡ d S )Nr   ©ÚtaggedValuer   c                       s   e Zd Z” ddgƒ dS )z+Test_taggedValue.test_w_single.<locals>.FooÚbarÚbazNr   r   r$   r   r   r   ?   s   r   r&   r'   ©r   r%   r   r   r   r   r   r   r$   r   r   ;   s    ÿzTest_taggedValue.test_w_singlec                    sL   ddl m‰  ddl m} G ‡ fdd„dtƒ}|  t||d ƒdgddœ¡ d S )	Nr   r$   r   c                       s"   e Zd Z” ddgƒ ” ddƒ dS )z-Test_taggedValue.test_w_multiple.<locals>.Foor&   r'   ÚquxÚspamNr   r   r$   r   r   r   I   s   r   r'   r*   ©r&   r)   r(   r   r   r$   r   r"   E   s    
ÿz Test_taggedValue.test_w_multiplec                    sJ   ddl m‰  ddl m} G ‡ fdd„dtƒ}|  t||d ƒdddœ¡ d S )	Nr   r$   r   c                       s,   e Zd Z” ddgƒ ” ddƒ ” ddƒ dS )z9Test_taggedValue.test_w_multiple_overwriting.<locals>.Foor&   r'   r)   r*   ÚfrobNr   r   r$   r   r   r   T   s   
r   r,   r*   r+   r(   r   r   r$   r   Útest_w_multiple_overwritingP   s    ÿz,Test_taggedValue.test_w_multiple_overwritingN)r   r   r   r   r"   r-   r   r   r   r   r#   9   s   
r#   c                   @   sR   e Zd 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S )ÚElementTestsZ	AnElementc                 C   s   ddl m} |S )Nr   )ÚElement)r   r/   )r   r/   r   r   r   Ú_getTargetClassa   s    zElementTests._getTargetClassNc                 C   s   |d kr| j }|  ¡ |ƒS r   )ÚDEFAULT_NAMEr0   )r   Únamer   r   r   Ú_makeOnee   s    zElementTests._makeOnec                 C   s`   |   ¡ }|  |j| j¡ |  | ¡ | j¡ |  |jd¡ |  | ¡ d¡ |  t| ¡ ƒg ¡ d S )NÚ )	r3   r   r   r1   ÚgetNameÚ__doc__ÚgetDocÚlistÚgetTaggedValueTags©r   Úelementr   r   r   Útest_ctor_defaultsj   s    zElementTests.test_ctor_defaultsc                 C   s*   |   d¡}|  |jd ¡ |  |jd¡ d S )Nz
An Element)r3   r   r   r6   r:   r   r   r   Útest_ctor_no_doc_space_in_namer   s    
z+ElementTests.test_ctor_no_doc_space_in_namec                 C   s   |   ¡ }|  t|jd¡ d S ©NÚnonesuch)r3   ÚassertRaisesÚKeyErrorÚgetTaggedValuer:   r   r   r   Útest_getTaggedValue_missw   s    z%ElementTests.test_getTaggedValue_missc                 C   s   |   ¡ }|  | d¡d ¡ d S r>   ©r3   r   ÚqueryTaggedValuer:   r   r   r   Útest_queryTaggedValue_miss{   s    z'ElementTests.test_queryTaggedValue_missc                 C   s    |   ¡ }|  | dd¡d¡ d S )Nr?   r&   rD   r:   r   r   r   Ú$test_queryTaggedValue_miss_w_default   s    z1ElementTests.test_queryTaggedValue_miss_w_defaultc                 C   sR   |   ¡ }| dd¡ |  t| ¡ ƒdg¡ |  | d¡d¡ |  | d¡d¡ d S ©NÚfoor&   )r3   ÚsetTaggedValuer   r8   r9   rB   rE   r:   r   r   r   Útest_setTaggedValueƒ   s
    z ElementTests.test_setTaggedValue)N)r   r   r   r1   r0   r3   r<   r=   rC   rF   rG   rK   r   r   r   r   r.   ]   s   
r.   c                   @   s\   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ ZdS )ÚSpecificationBasePyTestsc                 C   s   ddl m} |S ©Nr   )ÚSpecificationBasePy)r   rN   )r   rN   r   r   r   r0   �   s    z(SpecificationBasePyTests._getTargetClassc                 C   s
   |   ¡ ƒ S r   ©r0   ©r   r   r   r   r3   ‘   s    z!SpecificationBasePyTests._makeOnec              	      sZ   ddl m} ddlm‰  |  ¡ }‡ fdd„}t||d�� |  | tƒ ¡¡ W 5 Q R X d S )Nr   ©Ú	interface©Ú_emptyc                    s   ˆ S r   r   ©ÚobjrS   r   r   Ú_providedBy˜   s    zBSpecificationBasePyTests.test_providedBy_miss.<locals>._providedBy©Ú
providedBy)	Úzope.interfacerR   Úzope.interface.declarationsrT   r3   Ú_MonkeyÚassertFalserY   r   )r   rR   ÚsbrW   r   rS   r   Útest_providedBy_miss”   s    z-SpecificationBasePyTests.test_providedBy_missc              	      sb   ddl m} |  ¡ ‰G ‡fdd„dtƒ‰ ‡ fdd„}t||d�� |  ˆ tƒ ¡¡ W 5 Q R X d S )Nr   rQ   c                       s   e Zd Z” i iZdS )z;SpecificationBasePyTests.test_providedBy_hit.<locals>._DeclN©r   r   r   Ú_impliedr   ©r^   r   r   Ú_Decl    s   rc   c                    s   ˆ ƒ S r   r   rU   ©rc   r   r   rW   ¢   s    zASpecificationBasePyTests.test_providedBy_hit.<locals>._providedByrX   )rZ   rR   r3   r   r\   Ú
assertTruerY   )r   rR   rW   r   ©rc   r^   r   Útest_providedBy_hit�   s    z,SpecificationBasePyTests.test_providedBy_hitc              	      sZ   ddl m} ddlm‰  |  ¡ }‡ fdd„}t||d�� |  | tƒ ¡¡ W 5 Q R X d S )Nr   rQ   rS   c                    s   ˆ S r   r   rU   rS   r   r   Ú_implementedBy«   s    zHSpecificationBasePyTests.test_implementedBy_miss.<locals>._implementedBy©ÚimplementedBy)	rZ   rR   r[   rT   r3   r\   r]   rj   r   )r   rR   r^   rh   r   rS   r   Útest_implementedBy_miss§   s    z0SpecificationBasePyTests.test_implementedBy_missc              	      sb   ddl m} |  ¡ ‰G ‡fdd„dtƒ‰ ‡ fdd„}t||d�� |  ˆ tƒ ¡¡ W 5 Q R X d S )Nr   rQ   c                       s   e Zd Z” i iZdS )z>SpecificationBasePyTests.test_implementedBy_hit.<locals>._DeclNr`   r   rb   r   r   rc   ³   s   rc   c                    s   ˆ ƒ S r   r   rU   rd   r   r   rh   µ   s    zGSpecificationBasePyTests.test_implementedBy_hit.<locals>._implementedByri   )rZ   rR   r3   r   r\   re   rj   )r   rR   rh   r   rf   r   Útest_implementedBy_hit°   s    z/SpecificationBasePyTests.test_implementedBy_hitc                 C   s$   |   ¡ }i |_|  | tƒ ¡¡ d S r   ©r3   ra   r]   ZisOrExtendsr   ©r   r^   r   r   r   Útest_isOrExtends_missº   s    z.SpecificationBasePyTests.test_isOrExtends_missc                 C   s*   |   ¡ }tƒ }|i i|_|  ||ƒ¡ d S r   ©r3   r   ra   re   ©r   r^   Ztestingr   r   r   Útest_isOrExtends_hit¿   s    
z-SpecificationBasePyTests.test_isOrExtends_hitc                 C   s$   |   ¡ }i |_|  | tƒ ¡¡ d S r   rm   rn   r   r   r   Útest___call___missÅ   s    z+SpecificationBasePyTests.test___call___missc                 C   s*   |   ¡ }tƒ }|i i|_|  ||ƒ¡ d S r   rp   rq   r   r   r   Útest___call___hitÊ   s    
z*SpecificationBasePyTests.test___call___hitN)r   r   r   r0   r3   r_   rg   rk   rl   ro   rr   rs   rt   r   r   r   r   rL   ‹   s   	
	
rL   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚSpecificationBaseTestsc                 C   s   ddl m} |S )Nr   )ÚSpecificationBase)r   rv   )r   rv   r   r   r   r0   Ó   s    z&SpecificationBaseTests._getTargetClassc                 C   sR   ddl m} zdd l}W n$ tk
r<   |  |  ¡ |¡ Y nX |  |  ¡ |¡ d S rM   )r   rN   Ú-zope.interface._zope_interface_coptimizationsÚImportErrorÚassertIsr0   ÚassertIsNot)r   rN   Úzoper   r   r   Útest_optimizations×   s    z)SpecificationBaseTests.test_optimizationsN©r   r   r   r0   r|   r   r   r   r   ru   Ñ   s   ru   c                   @   sL   e Z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S )ÚInterfaceBasePyTestsc                 C   s   ddl m} |S ©Nr   )ÚInterfaceBasePy)r   r€   )r   r€   r   r   r   r0   ã   s    z$InterfaceBasePyTests._getTargetClassc                    s   G ‡ fdd„d|   ¡ ƒ}|ƒ S )Nc                       s    e Zd Zdd„ Z‡ fdd„ZdS )z)InterfaceBasePyTests._makeOne.<locals>.IBc                 S   s   || ƒS r   r   )r   Zconformr   r   r   Ú_call_conformé   s    z7InterfaceBasePyTests._makeOne.<locals>.IB._call_conformc                    s   ˆ S r   r   )r   rV   ©Úobject_should_provider   r   rY   ë   s    z4InterfaceBasePyTests._makeOne.<locals>.IB.providedByN)r   r   r   r�   rY   r   r‚   r   r   ÚIBè   s   r„   rO   )r   rƒ   r„   r   r‚   r   r3   ç   s    zInterfaceBasePyTests._makeOnec                    s<   |   d¡}tƒ ‰ G ‡ fdd„dtƒ}|  ||ƒ ƒˆ k¡ d S )NFc                       s   e Zd Z‡ fdd„ZdS )zRInterfaceBasePyTests.test___call___w___conform___returning_value.<locals>._Adaptedc                    s   ˆ S r   r   ©r   Úiface©Z	conformedr   r   Ú__conform__ó   s    z^InterfaceBasePyTests.test___call___w___conform___returning_value.<locals>._Adapted.__conform__N©r   r   r   rˆ   r   r‡   r   r   Ú_Adaptedò   s   rŠ   ©r3   r   re   )r   ÚibrŠ   r   r‡   r   Ú+test___call___w___conform___returning_valueï   s    
z@InterfaceBasePyTests.test___call___w___conform___returning_valuec                 C   s6   |   d¡}G dd„ dtƒ}|ƒ }|  ||ƒ|k¡ d S )NTc                   @   s   e Zd Zdd„ ZdS )zSInterfaceBasePyTests.test___call___w___conform___miss_ob_provides.<locals>._Adaptedc                 S   s   d S r   r   r…   r   r   r   rˆ   ú   s    z_InterfaceBasePyTests.test___call___w___conform___miss_ob_provides.<locals>._Adapted.__conform__Nr‰   r   r   r   r   rŠ   ù   s   rŠ   r‹   )r   rŒ   rŠ   Úadaptedr   r   r   Ú,test___call___w___conform___miss_ob_provides÷   s    
zAInterfaceBasePyTests.test___call___w___conform___miss_ob_providesc                 C   s.   |   d¡}tƒ }tƒ }|  |||ƒ|k¡ d S ©NFr‹   )r   rŒ   rŽ   Z	alternater   r   r   Ú7test___call___wo___conform___ob_no_provides_w_alternateÿ   s    
zLInterfaceBasePyTests.test___call___wo___conform___ob_no_provides_w_alternatec                 C   s"   |   d¡}tƒ }|  t||¡ d S r�   )r3   r   r@   Ú	TypeError©r   rŒ   rŽ   r   r   r   Ú7test___call___w___conform___ob_no_provides_wo_alternate  s    
zLInterfaceBasePyTests.test___call___w___conform___ob_no_provides_wo_alternatec                 C   s(   |   d¡}tƒ }|  | |¡|k¡ d S ©NT)r3   r   re   Ú	__adapt__r“   r   r   r   Útest___adapt___ob_provides
  s    
z/InterfaceBasePyTests.test___adapt___ob_providesc              	      sz   ddl m} |  d¡}tƒ }g ‰ ‡ fdd„}dd„ }t|||gd��, |  | |¡|k¡ |  ˆ ||fg¡ W 5 Q R X d S )	Nr   rQ   Fc                    s   ˆ   | |f¡ d S r   ©Úappend©r†   rV   ©Z_missedr   r   Ú
_hook_miss  s    zQInterfaceBasePyTests.test___adapt___ob_no_provides_uses_hooks.<locals>._hook_missc                 S   s   |S r   r   rš   r   r   r   Ú	_hook_hit  s    zPInterfaceBasePyTests.test___adapt___ob_no_provides_uses_hooks.<locals>._hook_hit©Úadapter_hooks)rZ   rR   r3   r   r\   re   r–   r   )r   rR   rŒ   rŽ   rœ   r�   r   r›   r   Ú(test___adapt___ob_no_provides_uses_hooks  s    
z=InterfaceBasePyTests.test___adapt___ob_no_provides_uses_hooksN)r   r   r   r0   r3   r�   r�   r‘   r”   r—   r    r   r   r   r   r~   á   s   r~   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚInterfaceBaseTestsc                 C   s   ddl m} |S )Nr   )ÚInterfaceBase)r   r¢   )r   r¢   r   r   r   r0      s    z"InterfaceBaseTests._getTargetClassc                 C   sR   ddl m} zdd l}W n$ tk
r<   |  |  ¡ |¡ Y nX |  |  ¡ |¡ d S r   )r   r€   rw   rx   ry   r0   rz   )r   r€   r{   r   r   r   r|   $  s    z%InterfaceBaseTests.test_optimizationsNr}   r   r   r   r   r¡     s   r¡   c                   @   sˆ   e Zd Zdd„ Zef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S ) ÚSpecificationTestsc                 C   s   ddl m} |S )Nr   )ÚSpecification)r   r¤   )r   r¤   r   r   r   r0   0  s    z"SpecificationTests._getTargetClassc                 C   s   |t kr|  ¡ ƒ S |  ¡ |ƒS r   )Ú_markerr0   )r   Úbasesr   r   r   r3   4  s    
zSpecificationTests._makeOnec                 C   sj   ddl m} |  ¡ }|  |jd¡ |  t|jƒd¡ |  ||jk¡ |  ||jk¡ |  t|jƒd¡ d S )Nr   ©Ú	Interfacer   é   )	r   r¨   r3   r   Ú	__bases__Úlenra   re   Ú
dependents)r   r¨   Úspecr   r   r   Ú	test_ctor9  s    zSpecificationTests.test_ctorc                 C   s@   |   ¡ }tƒ }| |¡ |  t|jƒd¡ |  |j| d¡ d S ©Né   )r3   ÚDummyDependentÚ	subscriber   r«   r¬   ©r   r­   Údepr   r   r   Útest_subscribe_first_timeB  s
    
z,SpecificationTests.test_subscribe_first_timec                 C   s8   |   ¡ }tƒ }| |¡ | |¡ |  |j| d¡ d S )Nr©   )r3   r±   r²   r   r¬   r³   r   r   r   Útest_subscribe_againI  s
    

z'SpecificationTests.test_subscribe_againc                 C   s"   |   ¡ }tƒ }|  t|j|¡ d S r   )r3   r±   r@   rA   Úunsubscriber³   r   r   r   Útest_unsubscribe_missP  s    z(SpecificationTests.test_unsubscribe_missc                 C   s\   |   ¡ }tƒ }| |¡ | |¡ | |¡ |  |j| d¡ | |¡ |  ||jk¡ d S r¯   )r3   r±   r²   r·   r   r¬   r]   r³   r   r   r   Útest_unsubscribeU  s    



z#SpecificationTests.test_unsubscribec                 C   s    ddl m} |  ¡ }tƒ }| |¡ G dd„ d|ƒ}G dd„ d|ƒ}|f|_|  |j|g¡ |  |j| d¡ |f|_|  |j 	|¡d ¡ |  |j| d¡ d S )Nr   r§   c                   @   s   e Zd ZdS )zVSpecificationTests.test___setBases_subscribes_bases_and_notifies_dependents.<locals>.INr   r   r   r   r   ÚId  s   rº   c                   @   s   e Zd ZdS )zVSpecificationTests.test___setBases_subscribes_bases_and_notifies_dependents.<locals>.JNr   r   r   r   r   ÚJf  s   r»   r°   )
r   r¨   r3   r±   r²   rª   r   Ú_changedr¬   Úget)r   r¨   r­   r´   rº   r»   r   r   r   Ú8test___setBases_subscribes_bases_and_notifies_dependents_  s    
zKSpecificationTests.test___setBases_subscribes_bases_and_notifies_dependentsc                 C   sh   ddl m} G dd„ d|ƒ}|  ¡ }d|_d|j|< | |¡ |  t|d| ƒ| k¡ |  ||jk¡ d S )Nr   r§   c                   @   s   e Zd ZdS )zGSpecificationTests.test_changed_clears_volatiles_and_implied.<locals>.INr   r   r   r   r   rº   q  s   rº   r   r   Ú_v_attrs)	r   r¨   r3   r¿   ra   Úchangedre   r   r]   )r   r¨   rº   r­   r   r   r   Ú)test_changed_clears_volatiles_and_impliedo  s    

z<SpecificationTests.test_changed_clears_volatiles_and_impliedc                 C   sD   ddl m} G dd„ d|ƒ}|  ||g¡}|  t| ¡ ƒ|g¡ d S )Nr   r§   c                   @   s   e Zd ZdS )zCSpecificationTests.test_interfaces_skips_already_seen.<locals>.IFooNr   r   r   r   r   ÚIFoo|  s   rÂ   )r   r¨   r3   r   r8   Ú
interfaces©r   r¨   rÂ   r­   r   r   r   Ú"test_interfaces_skips_already_seenz  s    z5SpecificationTests.test_interfaces_skips_already_seenc                 C   s>   ddl m} G dd„ d|ƒ}|  |¡}|  |j|dd�¡ d S )Nr   r§   c                   @   s   e Zd ZdS )z<SpecificationTests.test_extends_strict_wo_self.<locals>.IFooNr   r   r   r   r   rÂ   ƒ  s   rÂ   T©Ústrict)r   r¨   r3   r]   ÚextendsrÄ   r   r   r   Útest_extends_strict_wo_self�  s    
z.SpecificationTests.test_extends_strict_wo_selfc                 C   s    |   ¡ }|  |j|dd�¡ d S )NTrÆ   )r3   r]   rÈ   ©r   r­   r   r   r   Útest_extends_strict_w_selfˆ  s    z-SpecificationTests.test_extends_strict_w_selfc                 C   s    |   ¡ }|  |j|dd�¡ d S )NFrÆ   )r3   re   rÈ   rÊ   r   r   r   Útest_extends_non_strict_w_selfŒ  s    z1SpecificationTests.test_extends_non_strict_w_selfc                 C   s0   |   ¡ }tƒ }d|i|_|  | d¡|k¡ d S )NrI   )r3   r   r¿   re   r½   )r   r­   rI   r   r   r   Útest_get_hit_w__v_attrs�  s    
z*SpecificationTests.test_get_hit_w__v_attrsc                    s†   ddl m‰  ddl m} G ‡ fdd„d|ƒ}G ‡ fdd„d|ƒ}|  ||g¡}|  | d¡| d¡k¡ |  | d	¡| d	¡k¡ d S )
Nr   ©Ú	Attributer§   c                       s   e Zd Z” dƒZdS )zCSpecificationTests.test_get_hit_from_base_wo__v_attrs.<locals>.IFoorI   N)r   r   r   rI   r   rÎ   r   r   rÂ   ™  s   rÂ   c                       s   e Zd Z” dƒZdS )zCSpecificationTests.test_get_hit_from_base_wo__v_attrs.<locals>.IBarr&   N©r   r   r   r&   r   rÎ   r   r   ÚIBar›  s   rÑ   rI   r&   )r   rÏ   r¨   r3   re   r½   )r   r¨   rÂ   rÑ   r­   r   rÎ   r   Ú"test_get_hit_from_base_wo__v_attrs–  s    z5SpecificationTests.test_get_hit_from_base_wo__v_attrsN)r   r   r   r0   r¥   r3   r®   rµ   r¶   r¸   r¹   r¾   rÁ   rÅ   rÉ   rË   rÌ   rÍ   rÒ   r   r   r   r   r£   .  s   	
r£   c                   @   sv  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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]„ Z/dS )_ÚInterfaceClassTestsc                 C   s   ddl m} |S )Nr   ©ÚInterfaceClass)r   rÕ   )r   rÕ   r   r   r   r0   £  s    z#InterfaceClassTests._getTargetClassÚITestr   Nc                 C   s   |   ¡ |||||ƒS r   rO   )r   r2   r¦   Úattrsr6   r   r   r   r   r3   §  s    zInterfaceClassTests._makeOnec                 C   sN   |   ¡ }|dƒ}|  |jd¡ |  |jd¡ |  |jd¡ |  | ¡ d¡ d S )NÚITestingr4   r   )r0   r   r   r6   rª   ÚgetBases)r   ÚklassÚinstr   r   r   r<   «  s    z&InterfaceClassTests.test_ctor_defaultsc                 C   s    |   ¡ }|  t|dtƒ f¡ d S )NrØ   )r0   r@   r’   r   )r   rÚ   r   r   r   Útest_ctor_bad_bases³  s    z'InterfaceClassTests.test_ctor_bad_basesc                 C   sŠ   ddl m} ddl m} dd„ }|ddƒ||ƒdœ}|  ¡ }|d	|d
�}|  |jd	¡ |  |jd¡ |  |jd¡ |  | ¡ | 	¡ ¡ d S )Nr   rÎ   ©ÚfromFunctionc                   S   s   dS ©Ú	DOCSTRINGNr   r   r   r   r   Ú_barº  s    zBInterfaceClassTests.test_ctor_w_attrs_attrib_methods.<locals>._barr   r4   ©rI   r&   rØ   ©r×   r   )
r   rÏ   rÞ   r0   r   r   r6   rª   ÚnamesÚkeys)r   rÏ   rÞ   rá   ÚATTRSrÚ   rÛ   r   r   r   Ú test_ctor_w_attrs_attrib_methods·  s    ÿz4InterfaceClassTests.test_ctor_w_attrs_attrib_methodsc                 C   s^   di i}|   ¡ }|d|d�}|  |jd¡ |  |jd¡ |  |jd¡ |  | ¡ | ¡ ¡ d S )NZ
__locals__rØ   rã   r4   r   ©r0   r   r   r6   rª   rä   rå   ©r   ræ   rÚ   rÛ   r   r   r   Útest_ctor_attrs_w___locals__Æ  s    z0InterfaceClassTests.test_ctor_attrs_w___locals__c                 C   s^   di i}|   ¡ }|d|d�}|  |jd¡ |  |jd¡ |  |jd¡ |  | ¡ | ¡ ¡ d S )NÚ__annotations__rØ   rã   r4   r   rè   ré   r   r   r   Ú!test_ctor_attrs_w___annotations__Ï  s    z5InterfaceClassTests.test_ctor_attrs_w___annotations__c                 C   sj   ddl m} d|i}|  ¡ }|d|d�}|  |jd¡ |  |jd¡ |  |jd¡ |  t| ¡ ƒg ¡ d S )Nr   )Ú_decorator_non_returnZdropmerØ   rã   r4   r   )	r   rí   r0   r   r   r6   rª   r8   rä   )r   rí   ræ   rÚ   rÛ   r   r   r   Ú'test_ctor_attrs_w__decorator_non_returnØ  s    z;InterfaceClassTests.test_ctor_attrs_w__decorator_non_returnc                 C   s4   ddl m} dtƒ i}|  ¡ }| j||d|d� d S )Nr   )ÚInvalidInterfaceÚinvalidrØ   rã   )Úzope.interface.exceptionsrï   r   r0   r@   )r   rï   ræ   rÚ   r   r   r   Ú#test_ctor_attrs_w_invalid_attr_typeâ  s    
z7InterfaceClassTests.test_ctor_attrs_w_invalid_attr_typec                 C   s0   ddi}|   ¡ }|d|dd�}|  |jd¡ d S )Nr6   ZATTRrØ   ZEXPLICIT)r×   r6   )r0   r   r6   ré   r   r   r   Útest_ctor_w_explicit___doc__è  s    z0InterfaceClassTests.test_ctor_w_explicit___doc__c                 C   s"   |   ¡ }|  t| ¡ ƒ|g¡ d S r   )r3   r   r8   rÃ   r…   r   r   r   Útest_interfacesî  s    z#InterfaceClassTests.test_interfacesc                 C   s.   |   ¡ }| j d|fd�}|  | ¡ |f¡ d S ©NZISub)r¦   )r3   r   rÙ   ©r   r†   Úsubr   r   r   Útest_getBasesò  s    z!InterfaceClassTests.test_getBasesc                 C   s   |   ¡ }|  | |¡¡ d S r   )r3   re   ÚisEqualOrExtendedByr…   r   r   r   Ú!test_isEqualOrExtendedBy_identity÷  s    z5InterfaceClassTests.test_isEqualOrExtendedBy_identityc                 C   s<   |   ¡ }| j d|fd�}|  | |¡¡ |  | |¡¡ d S rõ   )r3   re   rù   r]   rö   r   r   r   Ú!test_isEqualOrExtendedBy_subifaceû  s    z5InterfaceClassTests.test_isEqualOrExtendedBy_subifacec                 C   s8   |   d¡}|   d¡}|  | |¡¡ |  | |¡¡ d S )NZOneZAnother)r3   r]   rù   )r   ÚoneZanotherr   r   r   Ú"test_isEqualOrExtendedBy_unrelated  s    

z6InterfaceClassTests.test_isEqualOrExtendedBy_unrelatedc                 C   s€   ddl m} ddl m} dd„ }|ddƒ||ƒdœ}d	|d
dƒi}| jd|d�}| jd|f|d�}|  t|jdd�ƒd	g¡ d S )Nr   rÎ   rÝ   c                   S   s   dS rß   r   r   r   r   r   rá   
  s    zFInterfaceClassTests.test_names_w_all_False_ignores_bases.<locals>._barr   r4   râ   r'   ÚBazÚIBaserã   ÚIDerived©r¦   r×   F©Úall©r   rÏ   rÞ   r3   r   Úsortedrä   ©r   rÏ   rÞ   rá   Ú
BASE_ATTRSÚDERIVED_ATTRSÚbaseÚderivedr   r   r   Ú$test_names_w_all_False_ignores_bases  s    ÿz8InterfaceClassTests.test_names_w_all_False_ignores_basesc                 C   s`   ddl m} ddl m} dd„ }|ddƒ||ƒdœ}| j|d	�}|  t|jd
d�ƒddg¡ d S )Nr   rÎ   rÝ   c                   S   s   dS rß   r   r   r   r   r   rá     s    z@InterfaceClassTests.test_names_w_all_True_no_bases.<locals>._barr   r4   râ   rã   Tr  r&   rI   r  ©r   rÏ   rÞ   rá   ræ   rü   r   r   r   Útest_names_w_all_True_no_bases  s    ÿz2InterfaceClassTests.test_names_w_all_True_no_basesc                 C   s„   ddl m} ddl m} dd„ }|ddƒ||ƒdœ}d	|d
dƒi}| jd|d�}| jd|f|d�}|  t|jdd�ƒdd	dg¡ d S )Nr   rÎ   rÝ   c                   S   s   dS rß   r   r   r   r   r   rá   #  s    zFInterfaceClassTests.test_names_w_all_True_w_bases_simple.<locals>._barr   r4   râ   r'   rþ   rÿ   rã   r   r  Tr  r&   rI   r  r  r   r   r   Ú$test_names_w_all_True_w_bases_simple   s    ÿz8InterfaceClassTests.test_names_w_all_True_w_bases_simplec           	      C   s’   ddl m} ddl m} dd„ }dd„ }|dd	ƒ||ƒd
œ}||ƒ|dd	ƒdœ}| jd|d�}| jd|f|d�}|  t|jdd�ƒdddg¡ d S )Nr   rÎ   rÝ   c                   S   s   dS rß   r   r   r   r   r   rá   1  s    zJInterfaceClassTests.test_names_w_all_True_bases_w_same_names.<locals>._barc                   S   s   dS rß   r   r   r   r   r   Ú_foo3  s    zJInterfaceClassTests.test_names_w_all_True_bases_w_same_names.<locals>._foor   r4   râ   rþ   ©rI   r'   rÿ   rã   r   r  Tr  r&   r'   rI   r  ©	r   rÏ   rÞ   rá   r  r  r  r	  r
  r   r   r   Ú(test_names_w_all_True_bases_w_same_names.  s    ÿÿz<InterfaceClassTests.test_names_w_all_True_bases_w_same_namesc           	      C   sŠ   ddl m} ddl m} dd„ }dd„ }|dd	ƒ||ƒd
œ}||ƒ|dd	ƒdœ}| jd|d�}| jd|f|d�}|  t|ƒdddg¡ d S )Nr   rÎ   rÝ   c                   S   s   dS rß   r   r   r   r   r   rá   B  s    z/InterfaceClassTests.test___iter__.<locals>._barc                   S   s   dS rß   r   r   r   r   r   r  D  s    z/InterfaceClassTests.test___iter__.<locals>._foor   r4   râ   rþ   r  rÿ   rã   r   r  r&   r'   rI   )r   rÏ   rÞ   r3   r   r  r  r   r   r   Útest___iter__?  s    ÿÿz!InterfaceClassTests.test___iter__c                 C   sˆ   ddl m} ddl m} dd„ }|ddƒ||ƒdœ}d	|d
dƒi}| jd|d�}| jd|f|d�}|  t|jdd�ƒd	|d	 fg¡ d S )Nr   rÎ   rÝ   c                   S   s   dS rß   r   r   r   r   r   rá   S  s    zUInterfaceClassTests.test_namesAndDescriptions_w_all_False_ignores_bases.<locals>._barr   r4   râ   r'   rþ   rÿ   rã   r   r  Fr  ©r   rÏ   rÞ   r3   r   r  ÚnamesAndDescriptionsr  r   r   r   Ú3test_namesAndDescriptions_w_all_False_ignores_basesP  s    ÿÿzGInterfaceClassTests.test_namesAndDescriptions_w_all_False_ignores_basesc                 C   sp   ddl m} ddl m} dd„ }|ddƒ||ƒdœ}| j|d	�}|  t|jd
d�ƒd|d fd|d fg¡ d S )Nr   rÎ   rÝ   c                   S   s   dS rß   r   r   r   r   r   rá   c  s    zOInterfaceClassTests.test_namesAndDescriptions_w_all_True_no_bases.<locals>._barr   r4   râ   rã   Fr  r&   rI   r  r  r   r   r   Ú-test_namesAndDescriptions_w_all_True_no_bases`  s    ÿ

ÿÿzAInterfaceClassTests.test_namesAndDescriptions_w_all_True_no_basesc                 C   sœ   ddl m} ddl m} dd„ }|ddƒ||ƒdœ}d	|d
dƒi}| jd|d�}| jd|f|d�}|  t|jdd�ƒd|d fd	|d	 fd|d fg¡ d S )Nr   rÎ   rÝ   c                   S   s   dS rß   r   r   r   r   r   rá   q  s    zMInterfaceClassTests.test_namesAndDescriptions_w_all_True_simple.<locals>._barr   r4   râ   r'   rþ   rÿ   rã   r   r  Tr  r&   rI   r  r  r   r   r   Ú+test_namesAndDescriptions_w_all_True_simplen  s    ÿ


þÿz?InterfaceClassTests.test_namesAndDescriptions_w_all_True_simplec           	      C   sª   ddl m} ddl m} dd„ }dd„ }|dd	ƒ||ƒd
œ}||ƒ|dd	ƒdœ}| jd|d�}| jd|f|d�}|  t|jdd�ƒd|d fd|d fd|d fg¡ d S )Nr   rÎ   rÝ   c                   S   s   dS rß   r   r   r   r   r   rá   ƒ  s    zYInterfaceClassTests.test_namesAndDescriptions_w_all_True_bases_w_same_names.<locals>._barc                   S   s   dS rß   r   r   r   r   r   r  …  s    zYInterfaceClassTests.test_namesAndDescriptions_w_all_True_bases_w_same_names.<locals>._foor   r4   râ   rþ   r  rÿ   rã   r   r  Tr  r&   r'   rI   r  r  r   r   r   Ú7test_namesAndDescriptions_w_all_True_bases_w_same_names€  s$    ÿÿ


þÿzKInterfaceClassTests.test_namesAndDescriptions_w_all_True_bases_w_same_namesc                 C   s   |   ¡ }|  t|jd¡ d S r>   )r3   r@   rA   ÚgetDescriptionFor©r   rü   r   r   r   Útest_getDescriptionFor_miss•  s    z/InterfaceClassTests.test_getDescriptionFor_missc                 C   sp   ddl m} ddl m} dd„ }|ddƒ||ƒdœ}| j|d	�}|  | d
¡|d
 ¡ |  | d¡|d ¡ d S )Nr   rÎ   rÝ   c                   S   s   dS rß   r   r   r   r   r   rá   œ  s    z<InterfaceClassTests.test_getDescriptionFor_hit.<locals>._barr   r4   râ   rã   rI   r&   )r   rÏ   rÞ   r3   r   r  r  r   r   r   Útest_getDescriptionFor_hit™  s    ÿz.InterfaceClassTests.test_getDescriptionFor_hitc                    s$   |   ¡ ‰ ‡ fdd„}|  t|¡ d S )Nc                      s   ˆ d S r>   r   r   ©rü   r   r   Ú_test§  s    z8InterfaceClassTests.test___getitem___miss.<locals>._test)r3   r@   rA   )r   r  r   r  r   Útest___getitem___miss¥  s    z)InterfaceClassTests.test___getitem___missc                 C   sl   ddl m} ddl m} dd„ }|ddƒ||ƒdœ}| j|d	�}|  |d
 |d
 ¡ |  |d |d ¡ d S )Nr   rÎ   rÝ   c                   S   s   dS rß   r   r   r   r   r   rá   ®  s    z6InterfaceClassTests.test___getitem___hit.<locals>._barr   r4   râ   rã   rI   r&   )r   rÏ   rÞ   r3   r   r  r   r   r   Útest___getitem___hit«  s    ÿz(InterfaceClassTests.test___getitem___hitc                 C   s   |   ¡ }|  d|k¡ d S r>   )r3   r]   r  r   r   r   Útest___contains___miss·  s    z*InterfaceClassTests.test___contains___missc                 C   s`   ddl m} ddl m} dd„ }|ddƒ||ƒdœ}| j|d	�}|  d
|k¡ |  d|k¡ d S )Nr   rÎ   rÝ   c                   S   s   dS rß   r   r   r   r   r   rá   ¾  s    z7InterfaceClassTests.test___contains___hit.<locals>._barr   r4   râ   rã   rI   r&   )r   rÏ   rÞ   r3   re   r  r   r   r   Útest___contains___hit»  s    ÿz)InterfaceClassTests.test___contains___hitc                 C   s   |   ¡ }|  | d¡d ¡ d S r>   )r3   r   Údirectr  r   r   r   Útest_direct_missÇ  s    z$InterfaceClassTests.test_direct_missc           	      C   s²   ddl m} ddl m} dd„ }dd„ }|dd	ƒ||ƒd
œ}||ƒ|dd	ƒdœ}| jd|d�}| jd|f|d�}|  | d¡|d ¡ |  | d¡|d ¡ |  | d¡d ¡ d S )Nr   rÎ   rÝ   c                   S   s   dS rß   r   r   r   r   r   rá   Î  s    zBInterfaceClassTests.test_direct_hit_local_miss_bases.<locals>._barc                   S   s   dS rß   r   r   r   r   r   r  Ð  s    zBInterfaceClassTests.test_direct_hit_local_miss_bases.<locals>._foor   r4   râ   rþ   r  rÿ   rã   r   r  rI   r'   r&   )r   rÏ   rÞ   r3   r   r$  r  r   r   r   Ú test_direct_hit_local_miss_basesË  s    ÿÿz4InterfaceClassTests.test_direct_hit_local_miss_basesc                 C   s   |   ¡ }|  | d¡d ¡ d S r>   )r3   r   ÚqueryDescriptionForr…   r   r   r   Útest_queryDescriptionFor_missÞ  s    z1InterfaceClassTests.test_queryDescriptionFor_missc                 C   s@   ddl m} d|ddƒi}| j|d�}|  | d¡|d ¡ d S )Nr   rÎ   ÚattrZTitleÚDescriptionrã   )rZ   rÏ   r3   r   r'  )r   rÏ   ræ   r†   r   r   r   Útest_queryDescriptionFor_hitâ  s    z0InterfaceClassTests.test_queryDescriptionFor_hitc                    sV   g ‰ ‡ fdd„}|   ¡ }tƒ }| d|g¡ |  | |¡d ¡ |  ˆ |fi fg¡ d S )Nc                     s   ˆ   | |f¡ dS r•   r˜   r   ©Z_called_withr   r   Ú	_passableê  s    zCInterfaceClassTests.test_validateInvariants_pass.<locals>._passabler   )r3   r   rJ   r   ÚvalidateInvariants)r   r-  r†   rV   r   r,  r   Útest_validateInvariants_passè  s    z0InterfaceClassTests.test_validateInvariants_passc                    sˆ   ddl m‰  g ‰‡fdd„}g ‰‡ ‡fdd„}|  ¡ }tƒ }| d||g¡ |  ˆ |j|¡ |  ˆ|fi fg¡ |  ˆ|fi fg¡ d S )Nr   ©ÚInvalidc                     s   ˆ   | |f¡ dS r•   r˜   r   ©Ú_passable_called_withr   r   r-  ö  s    zTInterfaceClassTests.test_validateInvariants_fail_wo_errors_passed.<locals>._passablec                     s   ˆ  | |f¡ ˆ ‚d S r   r˜   r   ©r1  Ú_fail_called_withr   r   Ú_failú  s    zPInterfaceClassTests.test_validateInvariants_fail_wo_errors_passed.<locals>._failr   ©rñ   r1  r3   r   rJ   r@   r.  r   )r   r-  r6  r†   rV   r   ©r1  r5  r3  r   Ú-test_validateInvariants_fail_wo_errors_passedó  s    zAInterfaceClassTests.test_validateInvariants_fail_wo_errors_passedc                    sŒ   ddl m‰  g }g ‰‡ ‡fdd„}|  ¡ }tƒ }| d|g¡ |  ˆ |j||¡ |  ˆ|fi fg¡ |  t|ƒd¡ |  	t
|d ˆ ƒ¡ d S )Nr   r0  c                     s   ˆ  | |f¡ ˆ ‚d S r   r˜   r   r4  r   r   r6    s    zOInterfaceClassTests.test_validateInvariants_fail_w_errors_passed.<locals>._failr   r°   ©rñ   r1  r3   r   rJ   r@   r.  r   r«   re   Ú
isinstance)r   Ú_errorsr6  r†   rV   r   r4  r   Ú,test_validateInvariants_fail_w_errors_passed  s    z@InterfaceClassTests.test_validateInvariants_fail_w_errors_passedc                    s¤   ddl m‰  g ‰‡fdd„}g ‰‡ ‡fdd„}|  d¡}|  d|f¡}tƒ }| d	|g¡ | d	|g¡ |  ˆ |j|¡ |  ˆ|fi fg¡ |  ˆ|fi fg¡ d S )
Nr   r0  c                     s   ˆ   | |f¡ dS r•   r˜   r   r2  r   r   r-    s    z\InterfaceClassTests.test_validateInvariants_fail_in_base_wo_errors_passed.<locals>._passablec                     s   ˆ  | |f¡ ˆ ‚d S r   r˜   r   r4  r   r   r6    s    zXInterfaceClassTests.test_validateInvariants_fail_in_base_wo_errors_passed.<locals>._failrÿ   r   r   r7  )r   r-  r6  r	  r
  rV   r   r8  r   Ú5test_validateInvariants_fail_in_base_wo_errors_passed  s    
zIInterfaceClassTests.test_validateInvariants_fail_in_base_wo_errors_passedc                    sÎ   ddl m‰  g }g ‰‡fdd„}g ‰‡ ‡fdd„}|  d¡}|  d|f¡}tƒ }| d	|g¡ | d	|g¡ |  ˆ |j||¡ |  ˆ|fi fg¡ |  ˆ|fi fg¡ |  t|ƒd
¡ |  	t
|d ˆ ƒ¡ d S )Nr   r0  c                     s   ˆ   | |f¡ dS r•   r˜   r   r2  r   r   r-  *  s    z[InterfaceClassTests.test_validateInvariants_fail_in_base_w_errors_passed.<locals>._passablec                     s   ˆ  | |f¡ ˆ ‚d S r   r˜   r   r4  r   r   r6  .  s    zWInterfaceClassTests.test_validateInvariants_fail_in_base_w_errors_passed.<locals>._failrÿ   r   r   r°   r:  )r   r<  r-  r6  r	  r
  rV   r   r8  r   Ú4test_validateInvariants_fail_in_base_w_errors_passed&  s     
zHInterfaceClassTests.test_validateInvariants_fail_in_base_w_errors_passedc                 C   s   |   d¡}|  | ¡ d¡ d S )NZPickleMe)r3   r   Ú
__reduce__r…   r   r   r   Útest___reduce__<  s    
z#InterfaceClassTests.test___reduce__c                 C   s"   |   d¡}|  t|ƒtdƒ¡ d S )NÚHashMe)rB  z#zope.interface.tests.test_interface)r3   r   Úhashr…   r   r   r   Útest___hash___normal@  s    

ÿz(InterfaceClassTests.test___hash___normalc              	   C   sœ   dd l }ddl m} G dd„ d|  ¡ ƒ}|ƒ }|dd��Z}| d¡ |  t|ƒd¡ |  t|ƒd¡ |  |d jt	k¡ |  t
|d jƒd	¡ W 5 Q R X d S )
Nr   )Úcatch_warningsc                   @   s   e Zd Zdd„ ZdS )zIInterfaceClassTests.test___hash___missing_required_attrs.<locals>.Derivedc                 S   s   d S r   r   rP   r   r   r   Ú__init__K  s    zRInterfaceClassTests.test___hash___missing_required_attrs.<locals>.Derived.__init__N©r   r   r   rF  r   r   r   r   ÚDerivedJ  s   rH  T)ÚrecordÚalwaysr°   z-Hashing uninitialized InterfaceClass instance)ÚwarningsrE  r0   Úsimplefilterr   rC  r«   re   ÚcategoryÚUserWarningÚstrÚmessage)r   rK  rE  rH  r
  Zwarnedr   r   r   Ú$test___hash___missing_required_attrsF  s    
ÿz8InterfaceClassTests.test___hash___missing_required_attrsc                 C   s´   |   ¡ }|  |d k ¡ |  |d k¡ |  |d k¡ |  |d k¡ |  |d k¡ |  |d k¡ |  d |k ¡ |  d |k¡ |  d |k¡ |  d |k¡ |  d |k¡ |  d |k¡ d S r   ©r3   re   r]   r…   r   r   r   Útest_comparison_with_NoneV  s    z-InterfaceClassTests.test_comparison_with_Nonec                 C   s`   |   ¡ }|  ||k ¡ |  ||k¡ |  ||k¡ |  ||k¡ |  ||k¡ |  ||k¡ d S r   )r3   r]   re   r…   r   r   r   Ú"test_comparison_with_same_instancef  s    z6InterfaceClassTests.test_comparison_with_same_instancec                 C   sÈ   | j ddd�}| j ddd�}|  ||k ¡ |  ||k ¡ |  ||k¡ |  ||k¡ |  ||k¡ |  ||k¡ |  ||k¡ |  ||k¡ |  ||k¡ |  ||k¡ |  ||k¡ |  ||k¡ d S )NZINamezzope.interface.tests.one)r   zzope.interface.tests.otherrR  )r   rü   Úotherr   r   r   Ú8test_comparison_with_same_named_instance_in_other_modulep  s    zLInterfaceClassTests.test_comparison_with_same_named_instance_in_other_module)rÖ   r   NNN)0r   r   r   r0   r3   r<   rÜ   rç   rê   rì   rî   rò   ró   rô   rø   rú   rû   rý   r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r%  r&  r(  r+  r/  r9  r=  r>  r?  rA  rD  rQ  rS  rT  rV  r   r   r   r   rÓ   ¡  s^     ÿ
		

rÓ   c                   @   sp  e Z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d+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Zd7d8„ Zd9d:„ Zd;d<„ Z d=d>„ Z!d?d@„ Z"dAdB„ Z#dCdD„ Z$dEdF„ Z%e&dGdH„ ƒZ'dIdJ„ Z(dKdL„ Z)dMdN„ Z*dOdP„ Z+dQdR„ Z,dSdT„ Z-dUdV„ Z.dWdX„ Z/dYS )ZÚInterfaceTestsc                    sD   ddl m} ddl m‰  G ‡ fdd„d|ƒ}|  |d j|k¡ d S )Nr   r§   rÎ   c                       s   e Zd Z” dƒZdS )z<InterfaceTests.test_attributes_link_to_interface.<locals>.I1úMy attrN)r   r   r   r)  r   rÎ   r   r   ÚI1‰  s   rY  r)  )rZ   r¨   rÏ   re   rR   ©r   r¨   rY  r   rÎ   r   Ú!test_attributes_link_to_interface…  s    z0InterfaceTests.test_attributes_link_to_interfacec                 C   s4   ddl m} G dd„ d|ƒ}|  |d j|k¡ d S )Nr   r§   c                   @   s   e Zd Zdd„ ZdS )z9InterfaceTests.test_methods_link_to_interface.<locals>.I1c                 S   s   dS ©zA methodNr   )rI   r&   Zbingor   r   r   Úmethod“  s    z@InterfaceTests.test_methods_link_to_interface.<locals>.I1.methodN©r   r   r   r]  r   r   r   r   rY  ‘  s   rY  r]  )rZ   r¨   re   rR   rZ  r   r   r   Útest_methods_link_to_interfaceŽ  s    z-InterfaceTests.test_methods_link_to_interfacec                    sÊ   ddl m} ddl m} ddl m} G dd„ d|ƒ‰ G dd„ d|ƒ}G ‡ fd	d
„d
tƒ}|ƒ }|  ˆ  |¡¡ |  | |¡¡ |  ˆ ||ƒk¡ |  |||ƒk¡ |  ˆ ||ƒk¡ |  |||ƒk¡ d S )Nr   r§   ri   rX   c                   @   s   e Zd Zdd„ Zdd„ ZdS )z<InterfaceTests.test_classImplements_simple.<locals>.ICurrentc                 S   s   d S r   r   ©ÚaÚbr   r   r   Úmethod1ž  s    zDInterfaceTests.test_classImplements_simple.<locals>.ICurrent.method1c                 S   s   d S r   r   r`  r   r   r   Úmethod2   s    zDInterfaceTests.test_classImplements_simple.<locals>.ICurrent.method2N)r   r   r   rc  rd  r   r   r   r   ÚICurrent�  s   re  c                   @   s   e Zd ZdS )z:InterfaceTests.test_classImplements_simple.<locals>.IOtherNr   r   r   r   r   ÚIOther£  s   rf  c                       s    e Zd Z” Zdd„ Zdd„ ZdS )z;InterfaceTests.test_classImplements_simple.<locals>.Currentc                 S   s
   t ƒ ‚d S r   r	   ©r   ra  rb  r   r   r   rc  ¨  s    zCInterfaceTests.test_classImplements_simple.<locals>.Current.method1c                 S   s
   t ƒ ‚d S r   r	   rg  r   r   r   rd  ª  s    zCInterfaceTests.test_classImplements_simple.<locals>.Current.method2N)r   r   r   Ú__implemented__rc  rd  r   ©re  r   r   ÚCurrent¦  s   rj  ©rZ   r¨   rj   rY   r   re   r]   )r   r¨   rj   rY   rf  rj  Úcurrentr   ri  r   Útest_classImplements_simple˜  s    z*InterfaceTests.test_classImplements_simplec                    sÈ   ddl m} ddl m} ddl m} G dd„ d|ƒ‰ G dd„ dˆ ƒ}G ‡ fd	d
„d
ƒ}|ƒ }|  ˆ  |¡¡ |  | |¡¡ |  ˆ ||ƒk¡ |  |||ƒk¡ |  ˆ ||ƒk¡ |  |||ƒk¡ d S )Nr   r§   ri   rX   c                   @   s   e Zd Zdd„ ZdS )zCInterfaceTests.test_classImplements_base_not_derived.<locals>.IBasec                   S   s   d S r   r   r   r   r   r   r]  »  s    zJInterfaceTests.test_classImplements_base_not_derived.<locals>.IBase.methodNr^  r   r   r   r   rÿ   º  s   rÿ   c                   @   s   e Zd ZdS )zFInterfaceTests.test_classImplements_base_not_derived.<locals>.IDerivedNr   r   r   r   r   r   ½  s   r   c                       s   e Zd Z” Zdd„ ZdS )zEInterfaceTests.test_classImplements_base_not_derived.<locals>.Currentc                 S   s
   t ƒ ‚d S r   r	   rP   r   r   r   r]  Á  s    zLInterfaceTests.test_classImplements_base_not_derived.<locals>.Current.methodN©r   r   r   rh  r]  r   ©rÿ   r   r   rj  ¿  s   rj  )rZ   r¨   rj   rY   re   r]   )r   r¨   rj   rY   r   rj  rl  r   ro  r   Ú%test_classImplements_base_not_derived¶  s    z4InterfaceTests.test_classImplements_base_not_derivedc                    sö   ddl m} ddl m} ddl m} G dd„ d|ƒ}G dd„ d|ƒ‰ G ‡ fd	d
„d
tƒ}|ƒ }|  | |¡¡ |  ˆ  |¡¡ |  |||ƒk¡ |  |||ƒ ¡ k¡ |  ˆ ||ƒk¡ |  |||ƒk¡ |  |||ƒ ¡ k¡ |  ˆ ||ƒk¡ d S )Nr   r§   ri   rX   c                   @   s   e Zd Zdd„ ZdS )zCInterfaceTests.test_classImplements_base_and_derived.<locals>.IBasec                   S   s   d S r   r   r   r   r   r   r]  Ò  s    zJInterfaceTests.test_classImplements_base_and_derived.<locals>.IBase.methodNr^  r   r   r   r   rÿ   Ñ  s   rÿ   c                   @   s   e Zd ZdS )zFInterfaceTests.test_classImplements_base_and_derived.<locals>.IDerivedNr   r   r   r   r   r   Õ  s   r   c                       s   e Zd Z” Zdd„ ZdS )zEInterfaceTests.test_classImplements_base_and_derived.<locals>.Currentc                 S   s
   t ƒ ‚d S r   r	   rP   r   r   r   r]  Ú  s    zLInterfaceTests.test_classImplements_base_and_derived.<locals>.Current.methodNrn  r   ©r   r   r   rj  Ø  s   rj  )rZ   r¨   rj   rY   r   re   r]   Z	flattened)r   r¨   rj   rY   rÿ   rj  rl  r   rq  r   Ú%test_classImplements_base_and_derivedÌ  s    z4InterfaceTests.test_classImplements_base_and_derivedc                    sð   ddl m} ddl m} ddl m} G dd„ d|ƒ‰ G dd„ dˆ ƒ‰G ‡ fd	d
„d
tƒ}G ‡fdd„dtƒ}G dd„ d||ƒ}|ƒ }|  ˆ  |¡¡ |  ˆ |¡¡ |  ˆ ||ƒk¡ |  ˆ||ƒk¡ |  ˆ ||ƒk¡ |  ˆ||ƒk¡ d S )Nr   r§   ri   rX   c                   @   s   e Zd Zdd„ ZdS )z;InterfaceTests.test_classImplements_multiple.<locals>.ILeftc                   S   s   d S r   r   r   r   r   r   r]  î  s    zBInterfaceTests.test_classImplements_multiple.<locals>.ILeft.methodNr^  r   r   r   r   ÚILeftí  s   rs  c                   @   s   e Zd ZdS )z<InterfaceTests.test_classImplements_multiple.<locals>.IRightNr   r   r   r   r   ÚIRightñ  s   rt  c                       s   e Zd Z” Zdd„ ZdS )z:InterfaceTests.test_classImplements_multiple.<locals>.Leftc                 S   s
   t ƒ ‚d S r   r	   rP   r   r   r   r]  ÷  s    zAInterfaceTests.test_classImplements_multiple.<locals>.Left.methodNrn  r   ©rs  r   r   ÚLeftô  s   rv  c                       s   e Zd Z” ZdS )z;InterfaceTests.test_classImplements_multiple.<locals>.RightN©r   r   r   rh  r   ©rt  r   r   ÚRightú  s   ry  c                   @   s   e Zd ZdS )z:InterfaceTests.test_classImplements_multiple.<locals>.AmbiNr   r   r   r   r   ÚAmbiý  s   rz  )rZ   r¨   rj   rY   r   re   )r   r¨   rj   rY   rv  ry  rz  Zambir   )rs  rt  r   Útest_classImplements_multipleè  s    z,InterfaceTests.test_classImplements_multiplec                    sL  ddl m} ddl m} ddl m} G dd„ d|ƒ‰ G dd„ dˆ ƒ‰G d	d
„ d
|ƒ‰G ‡ fdd„dƒ‰G ‡fdd„dtƒ}G ‡fdd„dtƒ‰G ‡‡fdd„dˆ|ƒ}|ƒ }|  ˆ  |¡¡ |  ˆ |¡¡ |  ˆ |¡¡ |  ˆ ||ƒk¡ |  ˆ||ƒk¡ |  ˆ||ƒk¡ |  ˆ ||ƒk¡ |  ˆ||ƒk¡ |  ˆ||ƒk¡ d S )Nr   r§   ri   rX   c                   @   s   e Zd Zdd„ ZdS )zPInterfaceTests.test_classImplements_multiple_w_explict_implements.<locals>.ILeftc                   S   s   d S r   r   r   r   r   r   r]    s    zWInterfaceTests.test_classImplements_multiple_w_explict_implements.<locals>.ILeft.methodNr^  r   r   r   r   rs    s   rs  c                   @   s   e Zd ZdS )zQInterfaceTests.test_classImplements_multiple_w_explict_implements.<locals>.IRightNr   r   r   r   r   rt    s   rt  c                   @   s   e Zd ZdS )zQInterfaceTests.test_classImplements_multiple_w_explict_implements.<locals>.IOtherNr   r   r   r   r   rf    s   rf  c                       s   e Zd Z” Zdd„ ZdS )zOInterfaceTests.test_classImplements_multiple_w_explict_implements.<locals>.Leftc                 S   s
   t ƒ ‚d S r   r	   rP   r   r   r   r]    s    zVInterfaceTests.test_classImplements_multiple_w_explict_implements.<locals>.Left.methodNrn  r   ru  r   r   rv    s   rv  c                       s   e Zd Z” ZdS )zPInterfaceTests.test_classImplements_multiple_w_explict_implements.<locals>.RightNrw  r   rx  r   r   ry    s   ry  c                       s   e Zd Z” ZdS )zPInterfaceTests.test_classImplements_multiple_w_explict_implements.<locals>.OtherNrw  r   )rf  r   r   ÚOther"  s   r|  c                       s   e Zd Z” j”jfZdS )zPInterfaceTests.test_classImplements_multiple_w_explict_implements.<locals>.MixedNrw  r   )rv  r|  r   r   ÚMixed%  s   r}  rk  )r   r¨   rj   rY   ry  r}  Úmixedr   )rs  rf  rt  rv  r|  r   Ú2test_classImplements_multiple_w_explict_implements	  s(    zAInterfaceTests.test_classImplements_multiple_w_explict_implementsc                 C   s°   ddl m} |j}|dƒ}|d|gƒ}|dƒ}|d||gƒ}|  | |¡¡ |  | |¡¡ |  | |¡¡ |  | |¡¡ |  | |¡¡ |  | |¡¡ |  | |¡¡ d S )Nr   r§   ÚFunInterfaceÚBarInterfaceÚBobInterfaceÚBazInterface)rZ   r¨   Ú	__class__re   rÈ   r]   )r   r¨   Únewr€  r�  r‚  rƒ  r   r   r   ÚtestInterfaceExtendsInterface4  s    z,InterfaceTests.testInterfaceExtendsInterfacec                    s`   ddl m‰  ddl m} ddlm} G ‡ fdd„d|ƒ‰G ‡fdd„dtƒ}|  |ˆ|ƒ¡ d S )	Nr   rÎ   r§   )ÚverifyClassc                       s   e Zd Z” dƒZdd„ ZdS )z1InterfaceTests.test_verifyClass.<locals>.ICheckMerX  c                   S   s   dS r\  r   r   r   r   r   r]  N  s    z8InterfaceTests.test_verifyClass.<locals>.ICheckMe.methodN©r   r   r   r)  r]  r   rÎ   r   r   ÚICheckMeK  s   r‰  c                       s   e Zd Z” ZdZdd„ ZdS )z0InterfaceTests.test_verifyClass.<locals>.CheckMeÚvaluec                 S   s
   t ƒ ‚d S r   r	   rP   r   r   r   r]  U  s    z7InterfaceTests.test_verifyClass.<locals>.CheckMe.methodN©r   r   r   rh  r)  r]  r   ©r‰  r   r   ÚCheckMeQ  s   r�  )rZ   rÏ   r¨   Úzope.interface.verifyr‡  r   re   )r   r¨   r‡  r�  r   ©rÏ   r‰  r   Útest_verifyClassE  s    zInterfaceTests.test_verifyClassc                    sf   ddl m‰  ddl m} ddlm} G ‡ fdd„d|ƒ‰G ‡fdd„dtƒ}|ƒ }|  |ˆ|ƒ¡ d S )	Nr   rÎ   r§   )ÚverifyObjectc                       s   e Zd Z” dƒZdd„ ZdS )z2InterfaceTests.test_verifyObject.<locals>.ICheckMerX  c                   S   s   dS r\  r   r   r   r   r   r]  c  s    z9InterfaceTests.test_verifyObject.<locals>.ICheckMe.methodNrˆ  r   rÎ   r   r   r‰  `  s   r‰  c                       s   e Zd Z” ZdZdd„ ZdS )z1InterfaceTests.test_verifyObject.<locals>.CheckMerŠ  c                 S   s
   t ƒ ‚d S r   r	   rP   r   r   r   r]  j  s    z8InterfaceTests.test_verifyObject.<locals>.CheckMe.methodNr‹  r   rŒ  r   r   r�  f  s   r�  )rZ   rÏ   r¨   rŽ  r‘  r   re   )r   r¨   r‘  r�  Zcheck_mer   r�  r   Útest_verifyObjectZ  s    z InterfaceTests.test_verifyObjectc                 C   s0   ddl m} G dd„ d|ƒ}|  | |¡¡ d S )Nr   r§   c                   @   s   e Zd ZdS )zLInterfaceTests.test_interface_object_provides_Interface.<locals>.AnInterfaceNr   r   r   r   r   ÚAnInterfacet  s   r“  )rZ   r¨   re   rY   )r   r¨   r“  r   r   r   Ú(test_interface_object_provides_Interfaceq  s    z7InterfaceTests.test_interface_object_provides_Interfacec                    sH   ddl m‰  ddl m} G ‡ fdd„d|ƒ}|  t| ¡ ƒddg¡ d S )Nr   rÎ   r§   c                       s   e Zd Z” dƒZdd„ ZdS )z1InterfaceTests.test_names_simple.<locals>.ISimplerX  c                   S   s   d S r   r   r   r   r   r   r]  �  s    z8InterfaceTests.test_names_simple.<locals>.ISimple.methodNrˆ  r   rÎ   r   r   ÚISimple~  s   r•  r)  r]  ©rZ   rÏ   r¨   r   r  rä   ©r   r¨   r•  r   rÎ   r   Útest_names_simpley  s    z InterfaceTests.test_names_simplec                    s~   ddl m‰  ddl m} G ‡ fdd„d|ƒ}G ‡ fdd„d|ƒ}|  t| ¡ ƒdd	d
g¡ |  t|jdd�ƒddd	d
g¡ d S )Nr   rÎ   r§   c                       s   e Zd Z” dƒZdd„ ZdS )z0InterfaceTests.test_names_derived.<locals>.IBaserX  c                   S   s   d S r   r   r   r   r   r   r]  Ž  s    z7InterfaceTests.test_names_derived.<locals>.IBase.methodNrˆ  r   rÎ   r   r   rÿ   ‹  s   rÿ   c                       s$   e Zd Z” dƒZdd„ Zdd„ ZdS )z3InterfaceTests.test_names_derived.<locals>.IDerivedúMy attr2c                   S   s   d S r   r   r   r   r   r   r]  ”  s    z:InterfaceTests.test_names_derived.<locals>.IDerived.methodc                   S   s   d S r   r   r   r   r   r   rd  —  s    z;InterfaceTests.test_names_derived.<locals>.IDerived.method2N©r   r   r   Úattr2r]  rd  r   rÎ   r   r   r   ‘  s   r   r›  r]  rd  Tr  r)  r–  ©r   r¨   rÿ   r   r   rÎ   r   Útest_names_derived†  s    	ÿ
ÿz!InterfaceTests.test_names_derivedc                    s  ddl m‰  ddlm} ddl m} G ‡ fdd„d|ƒ}t| ¡ ƒ}|  t|ƒd¡ |  |d d d¡ |  	t
|d d	 ˆ ƒ¡ |  |d d	 jd¡ |  |d d	 jd
¡ |  |d	 d d¡ |  	t
|d	 d	 |ƒ¡ |  |d	 d	 jd¡ |  |d	 d	 jd¡ d S )Nr   rÎ   ©ÚMethodr§   c                       s   e Zd Z” dƒZdd„ ZdS )z@InterfaceTests.test_namesAndDescriptions_simple.<locals>.ISimplerX  c                   S   s   dS ©ú	My methodNr   r   r   r   r   r]  ¨  s    zGInterfaceTests.test_namesAndDescriptions_simple.<locals>.ISimple.methodNrˆ  r   rÎ   r   r   r•  ¥  s   r•  r©   r)  r°   rX  r]  r¡  )rZ   rÏ   r   rŸ  r¨   r  r  r   r«   re   r;  r   r6   )r   rŸ  r¨   r•  Úname_valuesr   rÎ   r   Ú test_namesAndDescriptions_simpleŸ  s    z/InterfaceTests.test_namesAndDescriptions_simplec                    sô  ddl m‰  ddl m} ddlm} G ‡ fdd„d|ƒ}G ‡ fdd„d|ƒ}t| ¡ ƒ}|  t|ƒd	¡ |  |d d d
¡ |  	t
|d d ˆ ƒ¡ |  |d d jd
¡ |  |d d jd¡ |  |d d d¡ |  	t
|d d |ƒ¡ |  |d d jd¡ |  |d d jd¡ |  |d d d¡ |  	t
|d d |ƒ¡ |  |d d jd¡ |  |d d jd¡ t|jdd�ƒ}|  t|ƒd¡ |  |d d d¡ |  	t
|d d ˆ ƒ¡ |  |d d jd¡ |  |d d jd¡ |  |d d d
¡ |  	t
|d d ˆ ƒ¡ |  |d d jd
¡ |  |d d jd¡ |  |d d d¡ |  	t
|d d |ƒ¡ |  |d d jd¡ |  |d d jd¡ |  |d	 d d¡ |  	t
|d	 d |ƒ¡ |  |d	 d jd¡ |  |d	 d jd¡ d S )Nr   rÎ   r§   rž  c                       s   e Zd Z” dƒZdd„ ZdS )z?InterfaceTests.test_namesAndDescriptions_derived.<locals>.IBaserX  c                   S   s   dS r   r   r   r   r   r   r]  À  s    zFInterfaceTests.test_namesAndDescriptions_derived.<locals>.IBase.methodNrˆ  r   rÎ   r   r   rÿ   ½  s   rÿ   c                       s$   e Zd Z” dƒZdd„ Zdd„ ZdS )zBInterfaceTests.test_namesAndDescriptions_derived.<locals>.IDerivedr™  c                   S   s   dS ©úMy method, overriddenNr   r   r   r   r   r]  Æ  s    zIInterfaceTests.test_namesAndDescriptions_derived.<locals>.IDerived.methodc                   S   s   dS ©ú
My method2Nr   r   r   r   r   rd  É  s    zJInterfaceTests.test_namesAndDescriptions_derived.<locals>.IDerived.method2Nrš  r   rÎ   r   r   r   Ã  s   r   é   r›  r°   r™  r]  r¥  r©   rd  r§  Tr  é   r)  rX  )rZ   rÏ   r¨   r   rŸ  r  r  r   r«   re   r;  r   r6   )r   r¨   rŸ  rÿ   r   r¢  r   rÎ   r   Ú!test_namesAndDescriptions_derived·  sJ    	z0InterfaceTests.test_namesAndDescriptions_derivedc                 C   s0   ddl m} G dd„ d|ƒ}|  t|jd¡ d S )Nr   r§   c                   @   s   e Zd ZdS )zIInterfaceTests.test_getDescriptionFor_nonesuch_no_default.<locals>.IEmptyNr   r   r   r   r   ÚIEmptyó  s   r«  r?   )rZ   r¨   r@   rA   r  ©r   r¨   r«  r   r   r   Ú*test_getDescriptionFor_nonesuch_no_defaultð  s    z9InterfaceTests.test_getDescriptionFor_nonesuch_no_defaultc                    s¨   ddl m‰  ddlm} ddl m} G ‡ fdd„d|ƒ}| d¡}|  t|ˆ ƒ¡ |  |j	d¡ |  |j
d¡ | d	¡}|  t||ƒ¡ |  |j	d	¡ |  |j
d
¡ d S )Nr   rÎ   rž  r§   c                       s   e Zd Z” dƒZdd„ ZdS )z=InterfaceTests.test_getDescriptionFor_simple.<locals>.ISimplerX  c                   S   s   dS r   r   r   r   r   r   r]    s    zDInterfaceTests.test_getDescriptionFor_simple.<locals>.ISimple.methodNrˆ  r   rÎ   r   r   r•  þ  s   r•  r)  rX  r]  r¡  ©rZ   rÏ   r   rŸ  r¨   r  re   r;  r   r   r6   ©r   rŸ  r¨   r•  Úa_descÚm_descr   rÎ   r   Útest_getDescriptionFor_simpleø  s    

z,InterfaceTests.test_getDescriptionFor_simplec           	         s(  ddl m‰  ddlm} ddl m} G ‡ fdd„d|ƒ}G ‡ fdd„d|ƒ}| d	¡}|  t|ˆ ƒ¡ |  |j	d	¡ |  |j
d
¡ | d¡}|  t||ƒ¡ |  |j	d¡ |  |j
d¡ | d¡}|  t|ˆ ƒ¡ |  |j	d¡ |  |j
d¡ | d¡}|  t||ƒ¡ |  |j	d¡ |  |j
d¡ d S )Nr   rÎ   rž  r§   c                       s   e Zd Z” dƒZdd„ ZdS )z<InterfaceTests.test_getDescriptionFor_derived.<locals>.IBaserX  c                   S   s   dS r   r   r   r   r   r   r]    s    zCInterfaceTests.test_getDescriptionFor_derived.<locals>.IBase.methodNrˆ  r   rÎ   r   r   rÿ     s   rÿ   c                       s$   e Zd Z” dƒZdd„ Zdd„ ZdS )z?InterfaceTests.test_getDescriptionFor_derived.<locals>.IDerivedr™  c                   S   s   dS r¤  r   r   r   r   r   r]    s    zFInterfaceTests.test_getDescriptionFor_derived.<locals>.IDerived.methodc                   S   s   dS r¦  r   r   r   r   r   rd     s    zGInterfaceTests.test_getDescriptionFor_derived.<locals>.IDerived.method2Nrš  r   rÎ   r   r   r     s   r   r)  rX  r]  r¥  r›  r™  rd  r§  r®  ©	r   rŸ  r¨   rÿ   r   r°  r±  Za2_descZm2_descr   rÎ   r   Útest_getDescriptionFor_derived  s*    	



z-InterfaceTests.test_getDescriptionFor_derivedc                 C   s0   ddl m} G dd„ d|ƒ}|  t|jd¡ d S )Nr   r§   c                   @   s   e Zd ZdS )z7InterfaceTests.test___getitem__nonesuch.<locals>.IEmptyNr   r   r   r   r   r«  :  s   r«  r?   )rZ   r¨   r@   rA   Ú__getitem__r¬  r   r   r   Útest___getitem__nonesuch7  s    z'InterfaceTests.test___getitem__nonesuchc                    s¤   ddl m‰  ddlm} ddl m} G ‡ fdd„d|ƒ}|d }|  t|ˆ ƒ¡ |  |jd¡ |  |j	d¡ |d	 }|  t||ƒ¡ |  |jd	¡ |  |j	d
¡ d S )Nr   rÎ   rž  r§   c                       s   e Zd Z” dƒZdd„ ZdS )z6InterfaceTests.test___getitem__simple.<locals>.ISimplerX  c                   S   s   dS r   r   r   r   r   r   r]  H  s    z=InterfaceTests.test___getitem__simple.<locals>.ISimple.methodNrˆ  r   rÎ   r   r   r•  E  s   r•  r)  rX  r]  r¡  ©
rZ   rÏ   r   rŸ  r¨   re   r;  r   r   r6   r¯  r   rÎ   r   Útest___getitem__simple?  s    z%InterfaceTests.test___getitem__simplec           	         s   ddl m‰  ddlm} ddl m} G ‡ fdd„d|ƒ}G ‡ fdd„d|ƒ}|d	 }|  t|ˆ ƒ¡ |  |jd	¡ |  |j	d
¡ |d }|  t||ƒ¡ |  |jd¡ |  |j	d¡ |d }|  t|ˆ ƒ¡ |  |jd¡ |  |j	d¡ |d }|  t||ƒ¡ |  |jd¡ |  |j	d¡ d S )Nr   rÎ   rž  r§   c                       s   e Zd Z” dƒZdd„ ZdS )z6InterfaceTests.test___getitem___derived.<locals>.IBaserX  c                   S   s   dS r   r   r   r   r   r   r]  ^  s    z=InterfaceTests.test___getitem___derived.<locals>.IBase.methodNrˆ  r   rÎ   r   r   rÿ   [  s   rÿ   c                       s$   e Zd Z” dƒZdd„ Zdd„ ZdS )z9InterfaceTests.test___getitem___derived.<locals>.IDerivedr™  c                   S   s   dS r¤  r   r   r   r   r   r]  d  s    z@InterfaceTests.test___getitem___derived.<locals>.IDerived.methodc                   S   s   dS r¦  r   r   r   r   r   rd  g  s    zAInterfaceTests.test___getitem___derived.<locals>.IDerived.method2Nrš  r   rÎ   r   r   r   a  s   r   r)  rX  r]  r¥  r›  r™  rd  r§  r·  r³  r   rÎ   r   Útest___getitem___derivedU  s*    	z'InterfaceTests.test___getitem___derivedc                 C   s.   ddl m} G dd„ d|ƒ}|  d|k¡ d S )Nr   r§   c                   @   s   e Zd ZdS )z8InterfaceTests.test___contains__nonesuch.<locals>.IEmptyNr   r   r   r   r   r«  �  s   r«  r?   )rZ   r¨   r]   r¬  r   r   r   Útest___contains__nonesuch~  s    z(InterfaceTests.test___contains__nonesuchc                    sL   ddl m‰  ddl m} G ‡ fdd„d|ƒ}|  d|k¡ |  d|k¡ d S )Nr   rÎ   r§   c                       s   e Zd Z” dƒZdd„ ZdS )z7InterfaceTests.test___contains__simple.<locals>.ISimplerX  c                   S   s   dS r   r   r   r   r   r   r]  Ž  s    z>InterfaceTests.test___contains__simple.<locals>.ISimple.methodNrˆ  r   rÎ   r   r   r•  ‹  s   r•  r)  r]  ©rZ   rÏ   r¨   re   r—  r   rÎ   r   Útest___contains__simple†  s
    z&InterfaceTests.test___contains__simplec                    s|   ddl m‰  ddl m} G ‡ fdd„d|ƒ}G ‡ fdd„d|ƒ}|  d|k¡ |  d	|k¡ |  d
|k¡ |  d|k¡ d S )Nr   rÎ   r§   c                       s   e Zd Z” dƒZdd„ ZdS )z6InterfaceTests.test___contains__derived.<locals>.IBaserX  c                   S   s   dS r   r   r   r   r   r   r]  œ  s    z=InterfaceTests.test___contains__derived.<locals>.IBase.methodNrˆ  r   rÎ   r   r   rÿ   ™  s   rÿ   c                       s$   e Zd Z” dƒZdd„ Zdd„ ZdS )z9InterfaceTests.test___contains__derived.<locals>.IDerivedr™  c                   S   s   dS r¤  r   r   r   r   r   r]  ¢  s    z@InterfaceTests.test___contains__derived.<locals>.IDerived.methodc                   S   s   dS r¦  r   r   r   r   r   rd  ¥  s    zAInterfaceTests.test___contains__derived.<locals>.IDerived.method2Nrš  r   rÎ   r   r   r   Ÿ  s   r   r)  r]  r›  rd  r»  rœ  r   rÎ   r   Útest___contains__derived”  s    	z'InterfaceTests.test___contains__derivedc                 C   s0   ddl m} G dd„ d|ƒ}|  t|ƒg ¡ d S )Nr   r§   c                   @   s   e Zd ZdS )z1InterfaceTests.test___iter__empty.<locals>.IEmptyNr   r   r   r   r   r«  °  s   r«  )rZ   r¨   r   r8   r¬  r   r   r   Útest___iter__empty­  s    z!InterfaceTests.test___iter__emptyc                    sH   ddl m‰  ddl m} G ‡ fdd„d|ƒ}|  tt|ƒƒddg¡ d S )Nr   rÎ   r§   c                       s   e Zd Z” dƒZdd„ ZdS )z3InterfaceTests.test___iter__simple.<locals>.ISimplerX  c                   S   s   dS r   r   r   r   r   r   r]  ½  s    z:InterfaceTests.test___iter__simple.<locals>.ISimple.methodNrˆ  r   rÎ   r   r   r•  º  s   r•  r)  r]  ©rZ   rÏ   r¨   r   r  r8   r—  r   rÎ   r   Útest___iter__simpleµ  s    z"InterfaceTests.test___iter__simplec                    s`   ddl m‰  ddl m} G ‡ fdd„d|ƒ}G ‡ fdd„d|ƒ}|  tt|ƒƒdd	d
dg¡ d S )Nr   rÎ   r§   c                       s   e Zd Z” dƒZdd„ ZdS )z2InterfaceTests.test___iter__derived.<locals>.IBaserX  c                   S   s   dS r   r   r   r   r   r   r]  Ê  s    z9InterfaceTests.test___iter__derived.<locals>.IBase.methodNrˆ  r   rÎ   r   r   rÿ   Ç  s   rÿ   c                       s$   e Zd Z” dƒZdd„ Zdd„ ZdS )z5InterfaceTests.test___iter__derived.<locals>.IDerivedr™  c                   S   s   dS r¤  r   r   r   r   r   r]  Ð  s    z<InterfaceTests.test___iter__derived.<locals>.IDerived.methodc                   S   s   dS r¦  r   r   r   r   r   rd  Ó  s    z=InterfaceTests.test___iter__derived.<locals>.IDerived.method2Nrš  r   rÎ   r   r   r   Í  s   r   r)  r›  r]  rd  r¿  rœ  r   rÎ   r   Útest___iter__derivedÂ  s    	
ÿz#InterfaceTests.test___iter__derivedc                 C   s:   ddl m} G dd„ d|ƒ}|d }|  | d¡d¡ d S )Nr   r§   c                   @   s   e Zd Zdd„ Zde_dS )zLInterfaceTests.test_function_attributes_become_tagged_values.<locals>.ITagMec                   S   s   d S r   r   r   r   r   r   r]  Ý  s    zSInterfaceTests.test_function_attributes_become_tagged_values.<locals>.ITagMe.methodr°   N)r   r   r   r]  Úoptionalr   r   r   r   ÚITagMeÜ  s   rÃ  r]  rÂ  r°   )rZ   r¨   r   rB   )r   r¨   rÃ  r]  r   r   r   Ú-test_function_attributes_become_tagged_valuesÙ  s    z<InterfaceTests.test_function_attributes_become_tagged_valuesc                 C   s>   ddl m} G dd„ d|ƒ}|  |jd¡ |  t|ƒg ¡ d S )Nr   r§   c                   @   s   e Zd ZdZdS )z@InterfaceTests.test___doc___non_element.<locals>.IHaveADocStringÚxxxN©r   r   r   r6   r   r   r   r   ÚIHaveADocStringç  s   rÇ  rÅ  )rZ   r¨   r   r6   r8   ©r   r¨   rÇ  r   r   r   Útest___doc___non_elementä  s    z'InterfaceTests.test___doc___non_elementc                    sP   ddl m‰  ddl m} G ‡ fdd„d|ƒ}|  |jd¡ |  t|ƒdg¡ d S )Nr   rÎ   r§   c                       s   e Zd ZdZ” dƒZdS )z?InterfaceTests.test___doc___as_element.<locals>.IHaveADocStringrÅ  úthe docNrÆ  r   rÎ   r   r   rÇ  ñ  s   rÇ  r4   r6   )rZ   rÏ   r¨   r   r6   r8   rÈ  r   rÎ   r   Útest___doc___as_elementí  s
    z&InterfaceTests.test___doc___as_elementc           
   
   C   s¶   ddl m} |  ||j|¡ g }z| ||¡ |  d¡ W n4 |k
rn } z|  |jd |¡ W 5 d }~X Y nX |  t|ƒ|¡ dd„ |D ƒ}| ¡  |D ]}	|  |	| 	d¡¡ qšd S )Nr   r0  z&validateInvariants should always raisec                 S   s   g | ]}|j d  ‘qS )r   ©r   )Ú.0Úerrorr   r   r   Ú
<listcomp>  s     z/InterfaceTests._errorsEqual.<locals>.<listcomp>)
rñ   r1  r@   r.  Úfailr   r   r«   ÚsortÚpop)
r   Úhas_invariantZ	error_lenZ
error_msgsr†   r1  ÚerÎ  ZmsgsÚmsgr   r   r   Ú_errorsEqualø  s    $zInterfaceTests._errorsEqualc                    sÖ   ddl m‰  ddl m} ddl m} ddl m‰ G ‡ ‡fdd„d|ƒ}G dd	„ d	tƒ}|ƒ }|||ƒ |  | d
¡tg¡ |  | 	|¡d ¡ d|_
|  | 	|¡d ¡ d|_|  | 	|¡d ¡ |`
|  |ddg|¡ d S )Nr   rÎ   r§   ©ÚdirectlyProvidesr   c                       s$   e Zd Z” dƒZ” dƒZ”eƒ dS )z8InterfaceTests.test_invariant_simple.<locals>.IInvariantrI   ú*bar; must eval to Boolean True if foo doesN©r   r   r   rI   r&   Ú_ifFooThenBarr   ©rÏ   r   r   r   Ú
IInvariant  s   rÝ  c                   @   s   e Zd ZdS )z:InterfaceTests.test_invariant_simple.<locals>.HasInvariantNr   r   r   r   r   ÚHasInvariant  s   rÞ  r   é   é*   r°   úIf Foo, then Bar!)rZ   rÏ   r¨   rØ  r   r   r   rB   rÛ  r.  r&   rI   rÖ  )r   r¨   rØ  rÝ  rÞ  rÓ  r   rÜ  r   Útest_invariant_simple  s(    
ÿÿz$InterfaceTests.test_invariant_simplec                    s  ddl m‰  ddl m} ddl m} ddl m‰ G ‡ ‡fdd„d|ƒ}G ‡fdd	„d	|ƒ}G d
d„ dtƒ}|  | d¡tg¡ |ƒ }|||ƒ d|_	|  
|ddg|¡ d|_	d|_|  
|ddg|¡ d|_	d|_|  
|dddg|¡ d|_	d|_|  | |¡d ¡ d S )Nr   rÎ   r§   r×  r   c                       s$   e Zd Z” dƒZ” dƒZ”eƒ dS )z8InterfaceTests.test_invariant_nested.<locals>.IInvariantrI   rÙ  NrÚ  r   rÜ  r   r   rÝ  ,  s   rÝ  c                       s   e Zd Z” eƒ dS )z;InterfaceTests.test_invariant_nested.<locals>.ISubInvariantN)r   r   r   Ú_barGreaterThanFoor   r   r   r   ÚISubInvariant1  s   rä  c                   @   s   e Zd ZdS )z:InterfaceTests.test_invariant_nested.<locals>.HasInvariantNr   r   r   r   r   rÞ  4  s   rÞ  r   rà  r°   rá  r©   ú%Please, Boo MUST be greater than Foo!)rZ   rÏ   r¨   rØ  r   r   r   rB   rã  rI   rÖ  r&   r.  )r   r¨   rØ  rÝ  rä  rÞ  rÓ  r   rÜ  r   Útest_invariant_nested&  sB    ÿ
ÿþÿýz$InterfaceTests.test_invariant_nestedc                    s  ddl m‰  ddl m} ddl m} ddl m‰ G ‡ ‡fdd„d|ƒ}G dd	„ d	tƒ}|ƒ }|||ƒ d
|_| d¡}|d d … }| t	¡ | 
d|¡ |  |ddg|¡ d|_d|_|  |ddg|¡ d|_d|_|  |dddg|¡ d|_d|_|  | |¡d ¡ | 
d|¡ d S )Nr   rÎ   r§   r×  r   c                       s$   e Zd Z” dƒZ” dƒZ”eƒ dS )z:InterfaceTests.test_invariant_mutandis.<locals>.IInvariantrI   rÙ  NrÚ  r   rÜ  r   r   rÝ  [  s   rÝ  c                   @   s   e Zd ZdS )z<InterfaceTests.test_invariant_mutandis.<locals>.HasInvariantNr   r   r   r   r   rÞ  `  s   rÞ  rà  r   r°   rá  r©   rå  )rZ   rÏ   r¨   rØ  r   r   rI   rB   r™   rã  rJ   rÖ  r&   r   r.  )r   r¨   rØ  rÝ  rÞ  rÓ  Zold_invariantsr   r   rÜ  r   Útest_invariant_mutandisU  sD    


ÿ ÿÿýz&InterfaceTests.test_invariant_mutandisc                    s~   ddl m} ddl m‰  G dd„ d|ƒ}|  |jd¡ |  t|ƒg ¡ G ‡ fdd„d|ƒ}|  |jd¡ |  t|ƒd	g¡ d S )
Nr   r§   rÎ   c                   @   s   e Zd ZdZdS )ú.InterfaceTests.test___doc___element.<locals>.IrÅ  NrÆ  r   r   r   r   rº   �  s   rº   rÅ  c                       s   e Zd ZdZ” dƒZdS )rè  rÅ  rÊ  NrÆ  r   rÎ   r   r   rº   “  s   r4   r6   )rZ   r¨   rÏ   r   r6   r8   )r   r¨   rº   r   rÎ   r   Útest___doc___elementŠ  s    z#InterfaceTests.test___doc___elementc                 C   sF   dd l }ddlm} G dd„ d|ƒ}G dd„ dƒ}|  t|j|¡ d S )Nr   r§   c                   @   s   e Zd ZdZdS )z&InterfaceTests.testIssue228.<locals>.IrÅ  NrÆ  r   r   r   r   rº   ¤  s   rº   c                   @   s   e Zd ZdZdS )z-InterfaceTests.testIssue228.<locals>.OldStyleN)r   r   r   Z__providedBy__r   r   r   r   ÚOldStyle§  s   rê  )ÚsysrZ   r¨   r@   ÚAttributeErrorrY   )r   rë  r¨   rº   rê  r   r   r   ÚtestIssue228›  s
    zInterfaceTests.testIssue228c              
      sØ   ddl m} ddl m‰  ddl m} ddl m‰ ddlm‰ G ‡ ‡‡fdd„d|ƒ}||ƒG d	d
„ d
tƒƒ}| |ddƒ¡ | |ddƒ¡ z| |ddƒ¡ W n2 ˆk
rÒ } z|  	t
|ƒd¡ W 5 d }~X Y nX d S )Nr   r§   rÎ   ©Úimplementerr   r0  c                       s,   e Zd Z” dƒZ” dƒZ”‡fdd„ƒZdS )z:InterfaceTests.test_invariant_as_decorator.<locals>.IRangezLower boundzUpper boundc                    s   | j | jk rˆ dƒ‚d S )Nú	max < min)ÚmaxÚmin)Úobr0  r   r   Úrange_invariant·  s    zJInterfaceTests.test_invariant_as_decorator.<locals>.IRange.range_invariantN)r   r   r   rò  rñ  rô  r   ©rÏ   r1  r   r   r   ÚIRange³  s   rö  c                   @   s   e Zd Zdd„ ZdS )z9InterfaceTests.test_invariant_as_decorator.<locals>.Rangec                 S   s   || | _ | _d S r   )rò  rñ  )r   rò  rñ  r   r   r   rF  ¿  s    zBInterfaceTests.test_invariant_as_decorator.<locals>.Range.__init__NrG  r   r   r   r   ÚRange¼  s   r÷  r°   r©   rð  )rZ   r¨   rÏ   rï  r   rñ   r1  r   r.  r   rO  )r   r¨   rï  rö  r÷  rÔ  r   rõ  r   Útest_invariant_as_decorator¬  s    	z*InterfaceTests.test_invariant_as_decoratorc                    sÖ   ddl m‰  ddl m} ddl m‰ G ‡ ‡fdd„d|ƒ}G ‡fdd„d|ƒ}G d	d
„ d
|ƒ}|  | d¡d¡ |  t|jd¡ |  | ¡ dg¡ |  | d¡d¡ |  | d¡d¡ |  t	| ¡ ƒt	ddgƒ¡ d S )Nr   rÎ   r§   r$   c                       s&   e Zd Z” dƒZ” dƒZ”ddƒ dS )z0InterfaceTests.test_taggedValue.<locals>.ITaggedrI   rÙ  r)   ÚSpamN)r   r   r   rI   r&   r   ©rÏ   r%   r   r   ÚITaggedÎ  s   rû  c                       s    e Zd Z” ddƒ ” ddƒ dS )z1InterfaceTests.test_taggedValue.<locals>.IDerivedr)   ú	Spam SpamrI   r&   Nr   r   r$   r   r   r   Ó  s   
r   c                   @   s   e Zd ZdS )z2InterfaceTests.test_taggedValue.<locals>.IDerived2Nr   r   r   r   r   Ú	IDerived2×  s   rý  r)   rù  rI   rü  r&   )
rZ   rÏ   r¨   r%   r   rB   r@   rA   r9   Úset)r   r¨   rû  r   rý  r   rú  r   Útest_taggedValueÉ  s    zInterfaceTests.test_taggedValuec                    s†   ddl m} ddl m‰  G ‡ fdd„d|ƒ}G dd„ d|ƒ}G dd	„ d	|ƒ}|  | d
¡| d
¡k¡ |f|_|  | d
¡d k¡ d S )Nr   r§   rÎ   c                       s   e Zd Z” dƒZdS )z<InterfaceTests.test_description_cache_management.<locals>.I1ra  N)r   r   r   ra  r   rÎ   r   r   rY  é  s   rY  c                   @   s   e Zd ZdS )z<InterfaceTests.test_description_cache_management.<locals>.I2Nr   r   r   r   r   ÚI2ì  s   r   c                   @   s   e Zd ZdS )z<InterfaceTests.test_description_cache_management.<locals>.I3Nr   r   r   r   r   ÚI3ï  s   r  ra  )rZ   r¨   rÏ   re   r½   rª   )r   r¨   rY  r   r  r   rÎ   r   Ú!test_description_cache_managementâ  s    z0InterfaceTests.test_description_cache_managementc                 C   sV   ddl m} ddl m} G dd„ d|ƒ}||ƒG dd„ dtƒƒ}|  ||ƒ ƒd¡ d S )Nr   r§   rî  c                   @   s   e Zd ZdS )z>InterfaceTests.test___call___defers_to___conform___.<locals>.INr   r   r   r   r   rº   û  s   rº   c                   @   s   e Zd Zdd„ ZdS )z>InterfaceTests.test___call___defers_to___conform___.<locals>.Cc                 S   s   dS )Nr   r   )r   Úprotor   r   r   rˆ      s    zJInterfaceTests.test___call___defers_to___conform___.<locals>.C.__conform__Nr‰   r   r   r   r   ÚCþ  s   r  )rZ   r¨   rï  r   r   )r   r¨   rï  rº   r  r   r   r   Ú$test___call___defers_to___conform___÷  s    z3InterfaceTests.test___call___defers_to___conform___c                 C   s\   ddl m} ddl m} G dd„ d|ƒ}||ƒG dd„ dtƒƒ}|ƒ }|  ||ƒ|k¡ d S )Nr   r§   rî  c                   @   s   e Zd ZdS )z9InterfaceTests.test___call___object_implements.<locals>.INr   r   r   r   r   rº   	  s   rº   c                   @   s   e Zd ZdS )z9InterfaceTests.test___call___object_implements.<locals>.CNr   r   r   r   r   r    s   r  )rZ   r¨   rï  r   re   )r   r¨   rï  rº   r  Úcr   r   r   Útest___call___object_implements  s    z.InterfaceTests.test___call___object_implementsc                 C   sD   ddl m} G dd„ d|ƒ}G dd„ dtƒ}|ƒ }|  t||¡ d S )Nr   r§   c                   @   s   e Zd ZdS )z9InterfaceTests.test___call___miss_wo_alternate.<locals>.INr   r   r   r   r   rº     s   rº   c                   @   s   e Zd ZdS )z9InterfaceTests.test___call___miss_wo_alternate.<locals>.CNr   r   r   r   r   r    s   r  )rZ   r¨   r   r@   r’   ©r   r¨   rº   r  r  r   r   r   Útest___call___miss_wo_alternate  s
    z.InterfaceTests.test___call___miss_wo_alternatec                 C   sJ   ddl m} G dd„ d|ƒ}G dd„ dtƒ}|ƒ }|  ||| ƒ| k¡ d S )Nr   r§   c                   @   s   e Zd ZdS )z8InterfaceTests.test___call___miss_w_alternate.<locals>.INr   r   r   r   r   rº   "  s   rº   c                   @   s   e Zd ZdS )z8InterfaceTests.test___call___miss_w_alternate.<locals>.CNr   r   r   r   r   r  %  s   r  )rZ   r¨   r   re   r  r   r   r   Útest___call___miss_w_alternate  s
    z-InterfaceTests.test___call___miss_w_alternatec           
   
      s¤   ddl m} ddlm} |d d … }dd„ }‡ fdd„}G dd	„ d	|ƒ}G d
d„ dtƒ}|ƒ }|d d … }	||g|d d …< zˆ  ||ƒˆ k¡ W 5 |	|d d …< X d S )Nr   r§   rž   c                 S   s   d S r   r   rš   r   r   r   Ú_miss0  s    z:InterfaceTests.test___call___w_adapter_hook.<locals>._missc                    s   ˆ S r   r   rš   rP   r   r   Ú_hit3  s    z9InterfaceTests.test___call___w_adapter_hook.<locals>._hitc                   @   s   e Zd ZdS )z6InterfaceTests.test___call___w_adapter_hook.<locals>.INr   r   r   r   r   rº   6  s   rº   c                   @   s   e Zd ZdS )z6InterfaceTests.test___call___w_adapter_hook.<locals>.CNr   r   r   r   r   r  9  s   r  )rZ   r¨   r   rŸ   r   re   )
r   r¨   rŸ   Z	old_hooksr  r  rº   r  r  Zold_adapter_hooksr   rP   r   Útest___call___w_adapter_hook+  s    z+InterfaceTests.test___call___w_adapter_hookN)0r   r   r   r[  r_  rm  rp  rr  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   rW  ƒ  sZ   	
!+9))	/5
rW  c                   @   s   e Zd ZdZdd„ ZdS )ÚAttributeTestsZTestAttributec                 C   s   ddl m} |S )Nr   rÎ   )r   rÏ   )r   rÏ   r   r   r   r0   J  s    zAttributeTests._getTargetClassN)r   r   r   r1   r0   r   r   r   r   r  F  s   r  c                   @   sX   e Zd Z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S )ÚMethodTestsZ
TestMethodc                 C   s   ddl m} |S )Nr   rž  )r   rŸ  )r   rŸ  r   r   r   r0   S  s    zMethodTests._getTargetClassc                 C   sH   |   ¡ }|  |ji ¡ ddi|_|  |jddi¡ |`|  |ji ¡ d S rH   )r3   r   rÂ  ©r   r]  r   r   r   Útest_optional_as_propertyW  s    
z%MethodTests.test_optional_as_propertyc              
   C   sn   ddl m} |  ¡ }z
|ƒ  W n@ |k
r^ } z"|  |jd ¡ |  |j| j¡ W 5 d }~X Y nX |  d¡ d S )Nr   )ÚBrokenImplementationz*__call__ should raise BrokenImplementation)rñ   r  r3   r   rR   r2   r1   rÐ  )r   r  r]  rÔ  r   r   r   Ú)test___call___raises_BrokenImplementation_  s    
"z5MethodTests.test___call___raises_BrokenImplementationc                 C   sl   |   ¡ }| ¡ }|  t|d ƒg ¡ |  t|d ƒg ¡ |  |d i ¡ |  |d d ¡ |  |d d ¡ d S )NÚ
positionalÚrequiredrÂ  ÚvarargsÚkwargs)r3   ÚgetSignatureInfor   r8   )r   r]  Úinfor   r   r   Útest_getSignatureInfo_barej  s    z&MethodTests.test_getSignatureInfo_barec                 C   s   |   ¡ }|  | ¡ d¡ d S )Nz())r3   r   ÚgetSignatureStringr  r   r   r   Útest_getSignatureString_bares  s    z(MethodTests.test_getSignatureString_barec                 C   s*   |   ¡ }dg |_|_|  | ¡ d¡ d S )NrI   z(foo))r3   r  r  r   r  r  r   r   r   Ú'test_getSignatureString_w_only_requiredw  s    z3MethodTests.test_getSignatureString_w_only_requiredc                 C   s4   |   ¡ }dg |_|_ddi|_|  | ¡ d¡ d S )NrI   r&   z(foo='bar'))r3   r  r  rÂ  r   r  r  r   r   r   Ú"test_getSignatureString_w_optional|  s    
z.MethodTests.test_getSignatureString_w_optionalc                 C   s"   |   ¡ }d|_|  | ¡ d¡ d S )Nr   z(*args))r3   r  r   r  r  r   r   r   Ú!test_getSignatureString_w_varargs‚  s    z-MethodTests.test_getSignatureString_w_varargsc                 C   s"   |   ¡ }d|_|  | ¡ d¡ d S )Nr   z(**kw))r3   r  r   r  r  r   r   r   Ú test_getSignatureString_w_kwargs‡  s    z,MethodTests.test_getSignatureString_w_kwargsN)r   r   r   r1   r0   r  r  r  r  r  r  r  r   r   r   r   r   r  O  s   	r  c                   @   s\   e Z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S )ÚTest_fromFunctionc                 O   s   ddl m} |||ŽS )Nr   rÝ   )r   rÞ   )r   r   r   rÞ   r   r   r   Ú_callFUT�  s    zTest_fromFunction._callFUTc                 C   s¸   dd„ }|   |¡}|  | ¡ d¡ |  | ¡ d¡ |  |jd ¡ |  t| ¡ ƒg ¡ | ¡ }|  t|d ƒg ¡ |  t|d ƒg ¡ |  |d i ¡ |  |d d ¡ |  |d	 d ¡ d S )
Nc                   S   s   dS rß   r   r   r   r   r   Ú_func”  s    z*Test_fromFunction.test_bare.<locals>._funcr#  rà   r  r  rÂ  r  r  ©r"  r   r5   r7   rR   r8   r9   r  ©r   r#  r]  r  r   r   r   Ú	test_bare“  s    
zTest_fromFunction.test_barec                 C   sD   ddl m} G dd„ d|ƒ}dd„ }| j||d�}|  |j|¡ d S )Nr   rÔ   c                   @   s   e Zd ZdS )z0Test_fromFunction.test_w_interface.<locals>.IFooNr   r   r   r   r   rÂ   ¤  s   rÂ   c                   S   s   dS rß   r   r   r   r   r   r#  ¦  s    z1Test_fromFunction.test_w_interface.<locals>._funcrQ   )r   rÕ   r"  r   rR   )r   rÕ   rÂ   r#  r]  r   r   r   Útest_w_interface¢  s
    z"Test_fromFunction.test_w_interfacec                 C   s*   dd„ }| j |dd�}|  | ¡ d¡ d S )Nc                   S   s   dS rß   r   r   r   r   r   r#  ¬  s    z,Test_fromFunction.test_w_name.<locals>._funcZanotherName)r2   )r"  r   r5   )r   r#  r]  r   r   r   Útest_w_name«  s    zTest_fromFunction.test_w_namec                 C   sz   dd„ }|   |¡}| ¡ }|  t|d ƒdg¡ |  t|d ƒdg¡ |  |d i ¡ |  |d d ¡ |  |d d ¡ d S )	Nc                 S   s   dS rß   r   ©rI   r   r   r   r#  ²  s    z5Test_fromFunction.test_w_only_required.<locals>._funcr  rI   r  rÂ  r  r  ©r"  r  r   r8   r%  r   r   r   Útest_w_only_required±  s    
z&Test_fromFunction.test_w_only_requiredc                 C   s~   d
dd„}|   |¡}| ¡ }|  t|d ƒdg¡ |  t|d ƒg ¡ |  |d ddi¡ |  |d d ¡ |  |d	 d ¡ d S )Nr&   c                 S   s   dS rß   r   r)  r   r   r   r#  ½  s    z0Test_fromFunction.test_w_optional.<locals>._funcr  rI   r  rÂ  r  r  )r&   r*  r%  r   r   r   Útest_w_optional¼  s    

z!Test_fromFunction.test_w_optionalc                 C   s|   ddd„}| j |dd�}| ¡ }|  t|d ƒg ¡ |  t|d ƒg ¡ |  |d i ¡ |  |d	 d ¡ |  |d
 d ¡ d S )Nr&   c                 S   s   dS rß   r   rP   r   r   r   r#  Ï  s    z5Test_fromFunction.test_w_optional_self.<locals>._funcr°   )Zimlevelr  r  rÂ  r  r  )r&   r*  r%  r   r   r   Útest_w_optional_selfÇ  s    
z&Test_fromFunction.test_w_optional_selfc                 C   sv   dd„ }|   |¡}| ¡ }|  t|d ƒg ¡ |  t|d ƒg ¡ |  |d i ¡ |  |d d¡ |  |d d ¡ d S )	Nc                  W   s   dS rß   r   rÌ  r   r   r   r#  Ú  s    z/Test_fromFunction.test_w_varargs.<locals>._funcr  r  rÂ  r  r   r  r*  r%  r   r   r   Útest_w_varargsÙ  s    
z Test_fromFunction.test_w_varargsc                 C   sv   dd„ }|   |¡}| ¡ }|  t|d ƒg ¡ |  t|d ƒg ¡ |  |d i ¡ |  |d d ¡ |  |d d¡ d S )	Nc                  [   s   dS rß   r   )r   r   r   r   r#  å  s    z.Test_fromFunction.test_w_kwargs.<locals>._funcr  r  rÂ  r  r  r   r*  r%  r   r   r   Útest_w_kwargsä  s    
zTest_fromFunction.test_w_kwargsc                 C   s‚   ddd„}|   |¡}| ¡ }|  t|d ƒddg¡ |  t|d ƒdg¡ |  |d ddi¡ |  |d	 d
¡ |  |d d¡ d S )Nr'   c                 _   s   dS rß   r   )rI   r&   r   r   r   r   r   r#  ð  s    z3Test_fromFunction.test_full_spectrum.<locals>._funcr  rI   r&   r  rÂ  r  r   r  r   )r'   r*  r%  r   r   r   Útest_full_spectrumï  s    

z$Test_fromFunction.test_full_spectrumN)r   r   r   r"  r&  r'  r(  r+  r,  r-  r.  r/  r0  r   r   r   r   r!  �  s   	r!  c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚTest_fromMethodc                 O   s   ddl m} |||ŽS )Nr   )Ú
fromMethod)r   r2  )r   r   r   r2  r   r   r   r"  ý  s    zTest_fromMethod._callFUTc                 C   sÂ   G dd„ dt ƒ}|  |j¡}|  | ¡ d¡ |  | ¡ d¡ |  |jd ¡ |  t| ¡ ƒg ¡ | 	¡ }|  t|d ƒg ¡ |  t|d ƒg ¡ |  |d i ¡ |  |d d ¡ |  |d	 d ¡ d S )
Nc                   @   s   e Zd Zdd„ ZdS )z)Test_fromMethod.test_no_args.<locals>.Fooc                 S   s   dS rß   r   rP   r   r   r   r&     s    z-Test_fromMethod.test_no_args.<locals>.Foo.barNrÐ   r   r   r   r   r     s   r   r&   rà   r  r  rÂ  r  r  )
r   r"  r&   r   r5   r7   rR   r8   r9   r  ©r   r   r]  r  r   r   r   Útest_no_args  s    zTest_fromMethod.test_no_argsc                 C   sŠ   G dd„ dt ƒ}|  |j¡}| ¡ }|  t|d ƒddg¡ |  t|d ƒdg¡ |  |d ddi¡ |  |d	 d
¡ |  |d d¡ d S )Nc                   @   s   e Zd Zddd„ZdS )z/Test_fromMethod.test_full_spectrum.<locals>.Foor'   c                 _   s   dS rß   r   )r   rI   r&   r   r   r   r   r   r&     s    z3Test_fromMethod.test_full_spectrum.<locals>.Foo.barN)r'   rÐ   r   r   r   r   r     s   r   r  rI   r&   r  rÂ  r'   r  r   r  r   )r   r"  r&   r  r   r8   r3  r   r   r   r0    s    z"Test_fromMethod.test_full_spectrumc                 C   s¸   dd„ }|   |¡}|  | ¡ d¡ |  | ¡ d¡ |  |jd ¡ |  t| ¡ ƒg ¡ | ¡ }|  t|d ƒg ¡ |  t|d ƒg ¡ |  |d i ¡ |  |d d ¡ |  |d	 d ¡ d S )
Nc                   S   s   dS rß   r   r   r   r   r   rI     s    z.Test_fromMethod.test_w_non_method.<locals>.foorI   rà   r  r  rÂ  r  r  r$  )r   rI   r]  r  r   r   r   Útest_w_non_method  s    
z!Test_fromMethod.test_w_non_methodN)r   r   r   r"  r4  r0  r5  r   r   r   r   r1  û  s   r1  c                   @   s   e Zd Zdd„ Zdd„ ZdS )r±   c                 C   s
   g | _ d S r   )r¼   rP   r   r   r   rF  .  s    zDummyDependent.__init__c                 C   s   | j  |¡ d S r   )r¼   r™   )r   Zoriginally_changedr   r   r   rÀ   1  s    zDummyDependent.changedN)r   r   r   rF  rÀ   r   r   r   r   r±   ,  s   r±   c                 C   sN   ddl m} t| dd ƒ}t| dd ƒ}|d k	rJt|t|ƒƒrJ||ksJ|dƒ‚d S )Nr   r0  rI   r&   rå  )rñ   r1  r   r;  Útype)rV   r1  rI   r&   r   r   r   rã  5  s    rã  c                 C   s0   ddl m} t| dd ƒr,t| dd ƒs,|dƒ‚d S )Nr   r0  rI   r&   rá  )rñ   r1  r   )rV   r1  r   r   r   rÛ  A  s    rÛ  c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )r\   c                    s@   ˆ | _ t‡ fdd„|D ƒƒ| _| ¡ D ]\}}tˆ ||ƒ q&d S )Nc                    s   g | ]}|t ˆ |ƒf‘qS r   )r   )rÍ  Úkey©Úmoduler   r   rÏ  K  s     z$_Monkey.__init__.<locals>.<listcomp>)r9  ÚdictÚ
to_restoreÚitemsÚsetattr)r   r9  r   r7  rŠ  r   r8  r   rF  I  s    z_Monkey.__init__c                 C   s   | S r   r   rP   r   r   r   Ú	__enter__O  s    z_Monkey.__enter__c                 C   s&   | j  ¡ D ]\}}t| j||ƒ q
d S r   )r;  r<  r=  r9  )r   Úexc_typeÚexc_valÚexc_tbr7  rŠ  r   r   r   Ú__exit__R  s    z_Monkey.__exit__N)r   r   r   rF  r>  rB  r   r   r   r   r\   G  s   r\   )r6   ZunittestZzope.interface._compatr   r   r¥   ZTestCaser   r#   r.   rL   ru   r~   r¡   r£   rÓ   rW  r  r  r!  r1  r±   rã  rÛ  r\   r   r   r   r   Ú<module>   s>   !$.F=s   e       J	>n1	