o
    $x`J                     @   s@   d Z ddlZG dd dejZG dd deZG dd dZdS )	z" zope.interface.verify unit tests
    Nc                   @   s4  e Zd ZdZdd Zedd Zdd Zdd	 Zd
d Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Z d:d; Z!d<d= Z"d>d? Z#d@dA Z$dBdC Z%dDdE Z&dFdG Z'dHdI Z(dS )JTest_verifyClassNc                 C   s   |   | _d S N)_get_FUTverifierself r   B/usr/lib/python3/dist-packages/zope/interface/tests/test_verify.pysetUp   s   zTest_verifyClass.setUpc                 C      ddl m} |S )Nr   )verifyClass)zope.interface.verifyr   )clsr   r   r   r	   r         zTest_verifyClass._get_FUTc                 C   s   |S r   r   )r   xr   r   r	   <lambda>        zTest_verifyClass.<lambda>c                 K   s   | j || |fi |S r   )r   _adjust_object_before_verify)r   ifaceklasskwargsr   r   r	   _callFUT"   s
   zTest_verifyClass._callFUTc                 C   sN   ddl m} ddlm} G dd d|}G dd dt}| || j|| d S )Nr   	InterfaceDoesNotImplementc                   @      e Zd ZdS )z>Test_verifyClass.test_class_doesnt_implement.<locals>.ICurrentN__name__
__module____qualname__r   r   r   r	   ICurrent+       r!   c                   @   r   )z=Test_verifyClass.test_class_doesnt_implement.<locals>.CurrentNr   r   r   r   r	   Current.   r"   r#   )zope.interfacer   zope.interface.exceptionsr   objectassertRaisesr   )r   r   r   r!   r#   r   r   r	   test_class_doesnt_implement'   s
   z,Test_verifyClass.test_class_doesnt_implementc                 C   sR   ddl m} ddl m} G dd d|}G dd dt}||| | || d S )Nr   r   classImplementsc                   @   r   )zXTest_verifyClass.test_class_doesnt_implement_but_classImplements_later.<locals>.ICurrentNr   r   r   r   r	   r!   7   r"   r!   c                   @   r   )zWTest_verifyClass.test_class_doesnt_implement_but_classImplements_later.<locals>.CurrentNr   r   r   r   r	   r#   :   r"   r#   )r$   r   r*   r&   r   )r   r   r*   r!   r#   r   r   r	   5test_class_doesnt_implement_but_classImplements_later3   s   
zFTest_verifyClass.test_class_doesnt_implement_but_classImplements_laterc                 C   b   ddl m} ddl m} ddlm} G dd d|}||G dd dt}| || j|| d S )	Nr   r   implementerBrokenImplementationc                   @      e Zd Zdd ZdS )zPTest_verifyClass.test_class_doesnt_have_required_method_simple.<locals>.ICurrentc                   S      d S r   r   r   r   r   r	   methodG      zWTest_verifyClass.test_class_doesnt_have_required_method_simple.<locals>.ICurrent.methodNr   r   r    r3   r   r   r   r	   r!   F       r!   c                   @   r   )zOTest_verifyClass.test_class_doesnt_have_required_method_simple.<locals>.CurrentNr   r   r   r   r	   r#   J       r#   r$   r   r.   r%   r0   r&   r'   r   r   r   r.   r0   r!   r#   r   r   r	   -test_class_doesnt_have_required_method_simpleA   s   z>Test_verifyClass.test_class_doesnt_have_required_method_simplec                 C   P   ddl m} ddl m} G dd d|}||G dd dt}| || d S )Nr   r   r-   c                   @   r1   )zHTest_verifyClass.test_class_has_required_method_simple.<locals>.ICurrentc                   S   r2   r   r   r   r   r   r	   r3   V   r4   zOTest_verifyClass.test_class_has_required_method_simple.<locals>.ICurrent.methodNr5   r   r   r   r	   r!   U   r6   r!   c                   @   r1   )zGTest_verifyClass.test_class_has_required_method_simple.<locals>.Currentc                 S      t  r   NotImplementedErrorr   r   r   r	   r3   \      zNTest_verifyClass.test_class_has_required_method_simple.<locals>.Current.methodNr5   r   r   r   r	   r#   Y       r#   r$   r   r.   r&   r   r   r   r.   r!   r#   r   r   r	   %test_class_has_required_method_simpleQ   s   z6Test_verifyClass.test_class_has_required_method_simplec                 C   sr   ddl m} ddl m} ddlm} G dd d|}G dd d|}||G d	d
 d
t}| || j|| d S )Nr   r   r-   r/   c                   @   r1   )zNTest_verifyClass.test_class_doesnt_have_required_method_derived.<locals>.IBasec                   S   r2   r   r   r   r   r   r	   r3   g   r4   zUTest_verifyClass.test_class_doesnt_have_required_method_derived.<locals>.IBase.methodNr5   r   r   r   r	   IBasef   r6   rD   c                   @   r   )zQTest_verifyClass.test_class_doesnt_have_required_method_derived.<locals>.IDerivedNr   r   r   r   r	   IDerivedj   r"   rE   c                   @   r   )zPTest_verifyClass.test_class_doesnt_have_required_method_derived.<locals>.CurrentNr   r   r   r   r	   r#   m   r7   r#   r8   )r   r   r.   r0   rD   rE   r#   r   r   r	   .test_class_doesnt_have_required_method_deriveda   s   z?Test_verifyClass.test_class_doesnt_have_required_method_derivedc                 C   s`   ddl m} ddl m} G dd d|}G dd d|}||G dd	 d	t}| || d S )
Nr   r   r-   c                   @   r1   )zFTest_verifyClass.test_class_has_required_method_derived.<locals>.IBasec                   S   r2   r   r   r   r   r   r	   r3   y   r4   zMTest_verifyClass.test_class_has_required_method_derived.<locals>.IBase.methodNr5   r   r   r   r	   rD   x   r6   rD   c                   @   r   )zITest_verifyClass.test_class_has_required_method_derived.<locals>.IDerivedNr   r   r   r   r	   rE   |   r"   rE   c                   @   r1   )zHTest_verifyClass.test_class_has_required_method_derived.<locals>.Currentc                 S   r<   r   r=   r   r   r   r	   r3      r?   zOTest_verifyClass.test_class_has_required_method_derived.<locals>.Current.methodNr5   r   r   r   r	   r#      r@   r#   rA   )r   r   r.   rD   rE   r#   r   r   r	   &test_class_has_required_method_derivedt   s   z7Test_verifyClass.test_class_has_required_method_derivedc                 C   r;   )Nr   r   r-   c                   @   r1   )zKTest_verifyClass.test_method_takes_wrong_arg_names_but_OK.<locals>.ICurrentc                 S   r2   r   r   ar   r   r	   r3      r4   zRTest_verifyClass.test_method_takes_wrong_arg_names_but_OK.<locals>.ICurrent.methodNr5   r   r   r   r	   r!          r!   c                   @   r1   )zJTest_verifyClass.test_method_takes_wrong_arg_names_but_OK.<locals>.Currentc                 S   r<   r   r=   )r   br   r   r	   r3      r?   zQTest_verifyClass.test_method_takes_wrong_arg_names_but_OK.<locals>.Current.methodNr5   r   r   r   r	   r#      r@   r#   rA   rB   r   r   r	   (test_method_takes_wrong_arg_names_but_OK   s   z9Test_verifyClass.test_method_takes_wrong_arg_names_but_OKc                 C   r,   )	Nr   r   r-   BrokenMethodImplementationc                   @   r1   )zDTest_verifyClass.test_method_takes_not_enough_args.<locals>.ICurrentc                 S   r2   r   r   rH   r   r   r	   r3      r4   zKTest_verifyClass.test_method_takes_not_enough_args.<locals>.ICurrent.methodNr5   r   r   r   r	   r!      rJ   r!   c                   @   r1   )zCTest_verifyClass.test_method_takes_not_enough_args.<locals>.Currentc                 S   r<   r   r=   r   r   r   r	   r3      r?   zJTest_verifyClass.test_method_takes_not_enough_args.<locals>.Current.methodNr5   r   r   r   r	   r#      r@   r#   r$   r   r.   r%   rN   r&   r'   r   r   r   r.   rN   r!   r#   r   r   r	   !test_method_takes_not_enough_args      z2Test_verifyClass.test_method_takes_not_enough_argsc                 C   r,   )	Nr   r   r-   rM   c                   @   r1   )zLTest_verifyClass.test_method_doesnt_take_required_starargs.<locals>.ICurrentc                  W   r2   r   r   argsr   r   r	   r3      r4   zSTest_verifyClass.test_method_doesnt_take_required_starargs.<locals>.ICurrent.methodNr5   r   r   r   r	   r!      rJ   r!   c                   @   r1   )zKTest_verifyClass.test_method_doesnt_take_required_starargs.<locals>.Currentc                 S   r<   r   r=   r   r   r   r	   r3      r?   zRTest_verifyClass.test_method_doesnt_take_required_starargs.<locals>.Current.methodNr5   r   r   r   r	   r#      r@   r#   rO   rP   r   r   r	   )test_method_doesnt_take_required_starargs   rR   z:Test_verifyClass.test_method_doesnt_take_required_starargsc                 C   r,   )	Nr   r   r-   rM   c                   @   r1   )zOTest_verifyClass.test_method_doesnt_take_required_only_kwargs.<locals>.ICurrentc                  [   r2   r   r   )kwr   r   r	   r3      r4   zVTest_verifyClass.test_method_doesnt_take_required_only_kwargs.<locals>.ICurrent.methodNr5   r   r   r   r	   r!      rJ   r!   c                   @   r1   )zNTest_verifyClass.test_method_doesnt_take_required_only_kwargs.<locals>.Currentc                 S   r<   r   r=   r   r   r   r	   r3      r?   zUTest_verifyClass.test_method_doesnt_take_required_only_kwargs.<locals>.Current.methodNr5   r   r   r   r	   r#      r@   r#   rO   rP   r   r   r	   ,test_method_doesnt_take_required_only_kwargs   rR   z=Test_verifyClass.test_method_doesnt_take_required_only_kwargsc                 C   r,   )	Nr   r   r-   rM   c                   @   r1   )z>Test_verifyClass.test_method_takes_extra_arg.<locals>.ICurrentc                 S   r2   r   r   rH   r   r   r	   r3      r4   zETest_verifyClass.test_method_takes_extra_arg.<locals>.ICurrent.methodNr5   r   r   r   r	   r!      rJ   r!   c                   @   r1   )z=Test_verifyClass.test_method_takes_extra_arg.<locals>.Currentc                 S   r<   r   r=   r   rI   rK   r   r   r	   r3      r?   zDTest_verifyClass.test_method_takes_extra_arg.<locals>.Current.methodNr5   r   r   r   r	   r#      r@   r#   rO   rP   r   r   r	   test_method_takes_extra_arg   rR   z,Test_verifyClass.test_method_takes_extra_argc                 C   r;   )Nr   r   r-   c                   @   r1   )zKTest_verifyClass.test_method_takes_extra_arg_with_default.<locals>.ICurrentc                 S   r2   r   r   rH   r   r   r	   r3      r4   zRTest_verifyClass.test_method_takes_extra_arg_with_default.<locals>.ICurrent.methodNr5   r   r   r   r	   r!      rJ   r!   c                   @   s   e Zd ZdddZdS )zJTest_verifyClass.test_method_takes_extra_arg_with_default.<locals>.CurrentNc                 S   r<   r   r=   rX   r   r   r	   r3      r?   zQTest_verifyClass.test_method_takes_extra_arg_with_default.<locals>.Current.methodr   r5   r   r   r   r	   r#      s    r#   rA   rB   r   r   r	   (test_method_takes_extra_arg_with_default      z9Test_verifyClass.test_method_takes_extra_arg_with_defaultc                 C   r;   )Nr   r   r-   c                   @   r1   )zITest_verifyClass.test_method_takes_only_positional_args.<locals>.ICurrentc                 S   r2   r   r   rH   r   r   r	   r3      r4   zPTest_verifyClass.test_method_takes_only_positional_args.<locals>.ICurrent.methodNr5   r   r   r   r	   r!      rJ   r!   c                   @   r1   )zHTest_verifyClass.test_method_takes_only_positional_args.<locals>.Currentc                 W   r<   r   r=   r   rT   r   r   r	   r3     r?   zOTest_verifyClass.test_method_takes_only_positional_args.<locals>.Current.methodNr5   r   r   r   r	   r#      r@   r#   rA   rB   r   r   r	   &test_method_takes_only_positional_args   r[   z7Test_verifyClass.test_method_takes_only_positional_argsc                 C   r,   )	Nr   r   r-   rM   c                   @   r1   )z@Test_verifyClass.test_method_takes_only_kwargs.<locals>.ICurrentc                 S   r2   r   r   rH   r   r   r	   r3     r4   zGTest_verifyClass.test_method_takes_only_kwargs.<locals>.ICurrent.methodNr5   r   r   r   r	   r!     rJ   r!   c                   @   r1   )z?Test_verifyClass.test_method_takes_only_kwargs.<locals>.Currentc                 [   r<   r   r=   r   rV   r   r   r	   r3     r?   zFTest_verifyClass.test_method_takes_only_kwargs.<locals>.Current.methodNr5   r   r   r   r	   r#     r@   r#   rO   rP   r   r   r	   test_method_takes_only_kwargs  rR   z.Test_verifyClass.test_method_takes_only_kwargsc                 C   r;   )Nr   r   r-   c                   @   r1   )zCTest_verifyClass.test_method_takes_extra_starargs.<locals>.ICurrentc                 S   r2   r   r   rH   r   r   r	   r3      r4   zJTest_verifyClass.test_method_takes_extra_starargs.<locals>.ICurrent.methodNr5   r   r   r   r	   r!     rJ   r!   c                   @   r1   )zBTest_verifyClass.test_method_takes_extra_starargs.<locals>.Currentc                 W   r<   r   r=   r   rI   rT   r   r   r	   r3   &  r?   zITest_verifyClass.test_method_takes_extra_starargs.<locals>.Current.methodNr5   r   r   r   r	   r#   #  r@   r#   rA   rB   r   r   r	    test_method_takes_extra_starargs  r[   z1Test_verifyClass.test_method_takes_extra_starargsc                 C   r;   )Nr   r   r-   c                   @   r1   )zNTest_verifyClass.test_method_takes_extra_starargs_and_kwargs.<locals>.ICurrentc                 S   r2   r   r   rH   r   r   r	   r3   1  r4   zUTest_verifyClass.test_method_takes_extra_starargs_and_kwargs.<locals>.ICurrent.methodNr5   r   r   r   r	   r!   /  rJ   r!   c                   @   r1   )zMTest_verifyClass.test_method_takes_extra_starargs_and_kwargs.<locals>.Currentc                 _   r<   r   r=   )r   rI   rT   rV   r   r   r	   r3   7  r?   zTTest_verifyClass.test_method_takes_extra_starargs_and_kwargs.<locals>.Current.methodNr5   r   r   r   r	   r#   4  r@   r#   rA   rB   r   r   r	   +test_method_takes_extra_starargs_and_kwargs+  r[   z<Test_verifyClass.test_method_takes_extra_starargs_and_kwargsc                 C   r,   )	Nr   r   r-   rM   c                   @   r1   )z[Test_verifyClass.test_method_doesnt_take_required_positional_and_starargs.<locals>.ICurrentc                 W   r2   r   r   rI   rT   r   r   r	   r3   C  r4   zbTest_verifyClass.test_method_doesnt_take_required_positional_and_starargs.<locals>.ICurrent.methodNr5   r   r   r   r	   r!   A  rJ   r!   c                   @   r1   )zZTest_verifyClass.test_method_doesnt_take_required_positional_and_starargs.<locals>.Currentc                 S   r<   r   r=   r   rI   r   r   r	   r3   I  r?   zaTest_verifyClass.test_method_doesnt_take_required_positional_and_starargs.<locals>.Current.methodNr5   r   r   r   r	   r#   F  r@   r#   rO   rP   r   r   r	   8test_method_doesnt_take_required_positional_and_starargs<  rR   zITest_verifyClass.test_method_doesnt_take_required_positional_and_starargsc                 C   r;   )Nr   r   r-   c                   @   r1   )zUTest_verifyClass.test_method_takes_required_positional_and_starargs.<locals>.ICurrentc                 W   r2   r   r   rc   r   r   r	   r3   U  r4   z\Test_verifyClass.test_method_takes_required_positional_and_starargs.<locals>.ICurrent.methodNr5   r   r   r   r	   r!   S  rJ   r!   c                   @   r1   )zTTest_verifyClass.test_method_takes_required_positional_and_starargs.<locals>.Currentc                 W   r<   r   r=   r`   r   r   r	   r3   [  r?   z[Test_verifyClass.test_method_takes_required_positional_and_starargs.<locals>.Current.methodNr5   r   r   r   r	   r#   X  r@   r#   rA   rB   r   r   r	   2test_method_takes_required_positional_and_starargsO  r[   zCTest_verifyClass.test_method_takes_required_positional_and_starargsc                 C   r;   )Nr   r   r-   c                   @   r1   )zBTest_verifyClass.test_method_takes_only_starargs.<locals>.ICurrentc                 W   r2   r   r   rc   r   r   r	   r3   f  r4   zITest_verifyClass.test_method_takes_only_starargs.<locals>.ICurrent.methodNr5   r   r   r   r	   r!   d  rJ   r!   c                   @   r1   )zATest_verifyClass.test_method_takes_only_starargs.<locals>.Currentc                 W   r<   r   r=   r\   r   r   r	   r3   l  r?   zHTest_verifyClass.test_method_takes_only_starargs.<locals>.Current.methodNr5   r   r   r   r	   r#   i  r@   r#   rA   rB   r   r   r	   test_method_takes_only_starargs`  r[   z0Test_verifyClass.test_method_takes_only_starargsc                 C   r;   )Nr   r   r-   c                   @   r1   )zDTest_verifyClass.test_method_takes_required_kwargs.<locals>.ICurrentc                  [   r2   r   r   r   r   r   r	   r3   w  r4   zKTest_verifyClass.test_method_takes_required_kwargs.<locals>.ICurrent.methodNr5   r   r   r   r	   r!   u  rJ   r!   c                   @   r1   )zCTest_verifyClass.test_method_takes_required_kwargs.<locals>.Currentc                 [   r<   r   r=   r^   r   r   r	   r3   }  r?   zJTest_verifyClass.test_method_takes_required_kwargs.<locals>.Current.methodNr5   r   r   r   r	   r#   z  r@   r#   rA   rB   r   r   r	   !test_method_takes_required_kwargsq  r[   z2Test_verifyClass.test_method_takes_required_kwargsc                 C   r,   )	Nr   r   r-   rM   c                   @   r1   )zVTest_verifyClass.test_method_takes_positional_plus_required_starargs.<locals>.ICurrentc                  W   r2   r   r   rS   r   r   r	   r3     r4   z]Test_verifyClass.test_method_takes_positional_plus_required_starargs.<locals>.ICurrent.methodNr5   r   r   r   r	   r!     rJ   r!   c                   @   r1   )zUTest_verifyClass.test_method_takes_positional_plus_required_starargs.<locals>.Currentc                 W   r<   r   r=   r`   r   r   r	   r3     r?   z\Test_verifyClass.test_method_takes_positional_plus_required_starargs.<locals>.Current.methodNr5   r   r   r   r	   r#     r@   r#   rO   rP   r   r   r	   3test_method_takes_positional_plus_required_starargs  rR   zDTest_verifyClass.test_method_takes_positional_plus_required_starargsc                 C   r,   )	Nr   r   r-   rM   c                   @   r1   )zJTest_verifyClass.test_method_doesnt_take_required_kwargs.<locals>.ICurrentc                  [   r2   r   r   rh   r   r   r	   r3     r4   zQTest_verifyClass.test_method_doesnt_take_required_kwargs.<locals>.ICurrent.methodNr5   r   r   r   r	   r!     rJ   r!   c                   @   r1   )zITest_verifyClass.test_method_doesnt_take_required_kwargs.<locals>.Currentc                 S   r<   r   r=   rd   r   r   r	   r3     r?   zPTest_verifyClass.test_method_doesnt_take_required_kwargs.<locals>.Current.methodNr5   r   r   r   r	   r#     r@   r#   rO   rP   r   r   r	   'test_method_doesnt_take_required_kwargs  rR   z8Test_verifyClass.test_method_doesnt_take_required_kwargsc                    ^   ddl m  ddl m} ddl m} G  fddd|}||G dd d}| || d S )	Nr   	Attributer   r-   c                          e Zd Z dZdS )zGTest_verifyClass.test_class_has_method_for_iface_attr.<locals>.ICurrentThe foo AttributeNr   r   r    attrr   rm   r   r	   r!     r6   r!   c                   @   r1   )zFTest_verifyClass.test_class_has_method_for_iface_attr.<locals>.Currentc                 S   r<   r   r=   r   r   r   r	   rr     r?   zKTest_verifyClass.test_class_has_method_for_iface_attr.<locals>.Current.attrNrq   r   r   r   r	   r#     r@   r#   r$   rn   r   r.   r   rB   r   rm   r	   $test_class_has_method_for_iface_attr  s   z5Test_verifyClass.test_class_has_method_for_iface_attrc                 C   s`   ddl m} ddl m} ddlm} G dd d|}||G dd d}| || j|| d S )	Nr   r   r-   rM   c                   @   r1   )zFTest_verifyClass.test_class_has_nonmethod_for_method.<locals>.ICurrentc                   S   r2   r   r   r   r   r   r	   r3     r4   zMTest_verifyClass.test_class_has_nonmethod_for_method.<locals>.ICurrent.methodNr5   r   r   r   r	   r!     r6   r!   c                   @      e Zd ZdZdS )zETest_verifyClass.test_class_has_nonmethod_for_method.<locals>.Current   Nr5   r   r   r   r	   r#     s    r#   )r$   r   r.   r%   rN   r'   r   rP   r   r   r	   #test_class_has_nonmethod_for_method  s   z4Test_verifyClass.test_class_has_nonmethod_for_methodc                    rl   )	Nr   rm   r   r-   c                       ro   )zITest_verifyClass.test_class_has_attribute_for_attribute.<locals>.ICurrentrp   Nrq   r   rm   r   r	   r!     r6   r!   c                   @   ru   )zHTest_verifyClass.test_class_has_attribute_for_attribute.<locals>.Currentrv   Nrq   r   r   r   r	   r#     s    r#   rs   rB   r   rm   r	   &test_class_has_attribute_for_attribute  s   z7Test_verifyClass.test_class_has_attribute_for_attributec                    rl   )	Nr   rm   r   r-   c                       ro   )zLTest_verifyClass.test_class_misses_attribute_for_attribute.<locals>.ICurrentrp   Nrq   r   rm   r   r	   r!     r6   r!   c                   @   r   )zKTest_verifyClass.test_class_misses_attribute_for_attribute.<locals>.CurrentNr   r   r   r   r	   r#     r7   r#   rs   rB   r   rm   r	   )test_class_misses_attribute_for_attribute  s   z:Test_verifyClass.test_class_misses_attribute_for_attributec                    s   ddl m} ddlm} ddlm} G dd d|G dd dt G fd	d
d
|}||G  fddd}| || d S )Nr   )Methodr   r-   c                   @   r1   )zETest_verifyClass.test_w_callable_non_func_method.<locals>.QuasiMethodc                 _   r<   r   r=   r   rT   rV   r   r   r	   __call__  r?   zNTest_verifyClass.test_w_callable_non_func_method.<locals>.QuasiMethod.__call__Nr   r   r    r|   r   r   r   r	   QuasiMethod  r6   r~   c                   @   r1   )zGTest_verifyClass.test_w_callable_non_func_method.<locals>.QuasiCallablec                 _   r<   r   r=   r{   r   r   r	   r|     r?   zPTest_verifyClass.test_w_callable_non_func_method.<locals>.QuasiCallable.__call__Nr}   r   r   r   r	   QuasiCallable  r6   r   c                       ro   )zBTest_verifyClass.test_w_callable_non_func_method.<locals>.ICurrentzThis is callableNrq   r   )r~   r   r	   r!     r6   r!   c                       s   e Zd Z  ZdS )zATest_verifyClass.test_w_callable_non_func_method.<locals>.CurrentNrq   r   )r   r   r	   r#     s    
r#   )zope.interface.interfacerz   r$   r   r.   r&   r   )r   rz   r   r.   r!   r#   r   )r   r~   r	   test_w_callable_non_func_method  s   z0Test_verifyClass.test_w_callable_non_func_methodc                    s\   ddl m} ddl m} dd  G dd d|}||G  fdd	d	t}| || d S )
Nr   r   r-   c                    s   t  fddS )Nc                    s
     | S r   )__get__r   funcr   r	   r     s   
 zMTest_verifyClass.test_w_decorated_method.<locals>.decorator.<locals>.<lambda>)propertyr   r   r   r	   	decorator  s   z;Test_verifyClass.test_w_decorated_method.<locals>.decoratorc                   @   r1   )z:Test_verifyClass.test_w_decorated_method.<locals>.ICurrentc                 S   r2   r   r   rH   r   r   r	   r3   	  r4   zATest_verifyClass.test_w_decorated_method.<locals>.ICurrent.methodNr5   r   r   r   r	   r!     rJ   r!   c                       s   e Zd Z dd ZdS )z9Test_verifyClass.test_w_decorated_method.<locals>.Currentc                 S   r<   r   r=   rd   r   r   r	   r3     s   z@Test_verifyClass.test_w_decorated_method.<locals>.Current.methodNr5   r   r   r   r	   r#         r#   rA   rB   r   r   r	   test_w_decorated_method  s   z(Test_verifyClass.test_w_decorated_methodc                 C       ddl m} | j|tdd d S )Nr   )IFullMappingT	tentative)zope.interface.common.mappingr   r   dict)r   r   r   r   r	   test_dict_IFullMapping  s   z'Test_verifyClass.test_dict_IFullMappingc                 C   r   )Nr   )	ISequenceTr   )zope.interface.common.sequencer   r   list)r   r   r   r   r	   test_list_ISequence     z$Test_verifyClass.test_list_ISequencec                 C   r   )Nr   )IReadSequenceTr   )r   r   r   tuple)r   r   r   r   r	   test_tuple_IReadSequence$  r   z)Test_verifyClass.test_tuple_IReadSequencec           
      C   s0  ddl m} ddl m} ddl m} ddlm} ddlm} G dd d|}G d	d
 d
t}| |}| 	|| W d    n1 sDw   Y  |j
}	| dt|	j | |	jd | | |	jd | | |	jd | ||| dd |_| | | 	|| W d    d S 1 sw   Y  d S )Nr   )MultipleInvalidr   r/   r   r)   c                   @   s   e Zd Zdd Zdd ZdS )z?Test_verifyClass.test_multiple_invalid.<locals>.ISeveralMethodsc                 S      dS )zMethod 1Nr   arg1r   r   r	   meth12  r   zETest_verifyClass.test_multiple_invalid.<locals>.ISeveralMethods.meth1c                 S   r   )zMethod 2Nr   r   r   r   r	   meth24  r   zETest_verifyClass.test_multiple_invalid.<locals>.ISeveralMethods.meth2N)r   r   r    r   r   r   r   r   r	   ISeveralMethods1  s    r   c                   @   r   )z>Test_verifyClass.test_multiple_invalid.<locals>.SeveralMethodsNr   r   r   r   r	   SeveralMethods7  r"   r      rv      c                 S   r   )NHir   )r   r   r   r   r	   r   F  r   z8Test_verifyClass.test_multiple_invalid.<locals>.<lambda>)r%   r   r   r0   r$   r   r*   r&   r'   r   	exceptionassertEquallen
exceptionsassertIsInstancer   )
r   r   r   r0   r   r*   r   r   excexr   r   r	   test_multiple_invalid*  s(   

"z&Test_verifyClass.test_multiple_invalid))r   r   r    r   r
   classmethodr   r   r   r(   r+   r:   rC   rF   rG   rL   rQ   rU   rW   rY   rZ   r]   r_   ra   rb   re   rf   rg   ri   rj   rk   rt   rw   rx   ry   r   r   r   r   r   r   r   r   r   r	   r      sN    

r   c                   @   s@   e Zd Zedd Zdd Zdd Zdd Zd	d
 Zdd Z	dS )Test_verifyObjectc                 C   r   )Nr   verifyObject)r   r   )r   r   r   r   r	   r   M  r   zTest_verifyObject._get_FUTc                 C   s   t |tttfr| }|S r   )
isinstancetypeOldSkool)r   targetr   r   r	   r   R  s   z.Test_verifyObject._adjust_object_before_verifyc                    sp   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	}| || j|| d S )
Nr   rm   r   r-   r/   c                       ro   )zMTest_verifyObject.test_class_misses_attribute_for_attribute.<locals>.ICurrentrp   Nrq   r   rm   r   r	   r!   ^  r6   r!   c                   @   r   )zLTest_verifyObject.test_class_misses_attribute_for_attribute.<locals>.CurrentNr   r   r   r   r	   r#   a  r7   r#   )r$   rn   r   r.   r%   r0   r'   r   r9   r   rm   r	   ry   W  s   z;Test_verifyObject.test_class_misses_attribute_for_attributec                 C   s(   ddl m} ddlm} | || d S )Nr   )IDummyModuledummy)zope.interface.tests.idummyr   zope.interface.testsr   r   )r   r   r   r   r   r	   test_module_hith  s   z!Test_verifyObject.test_module_hitc                 C   sJ   ddl m} ddlm} ddlm} G dd d|}| || j|| d S )Nr   r   r   r   c                   @   r   )z8Test_verifyObject.test_module_miss.<locals>.IDummyModuleNr   r   r   r   r	   r   t  r"   r   )r$   r   r   r   r%   r   r'   r   )r   r   r   r   r   r   r   r	   test_module_missn  s   z"Test_verifyObject.test_module_missc                 C   sZ   ddl m} ddl m} ddlm} G dd d|}||G dd dt}||| d S )	Nr   r   )providerr   c                   @   r1   )z>Test_verifyObject.test_staticmethod_hit_on_class.<locals>.IFooc                 S   r   )zThe bar methodNr   rI   rK   r   r   r	   bar  r   zBTest_verifyObject.test_staticmethod_hit_on_class.<locals>.IFoo.barN)r   r   r    r   r   r   r   r	   IFoo  rJ   r   c                   @   s   e Zd Zedd ZdS )z=Test_verifyObject.test_staticmethod_hit_on_class.<locals>.Fooc                 S   s   t d)NzWe're never actually called)AssertionErrorr   r   r   r	   r     s   zATest_verifyObject.test_staticmethod_hit_on_class.<locals>.Foo.barN)r   r   r    staticmethodr   r   r   r   r	   Foo  r   r   )r$   r   r   r   r   r&   )r   r   r   r   r   r   r   r   r	   test_staticmethod_hit_on_classz  s   z0Test_verifyObject.test_staticmethod_hit_on_classN)
r   r   r    r   r   r   ry   r   r   r   r   r   r   r	   r   K  s    
r   c                   @   r   )r   Nr   r   r   r   r	   r     r"   r   )__doc__unittestTestCaser   r   r   r   r   r   r	   <module>   s       ;D