
    e                        d Z ddlZddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlm	Z	 dd	lm
Z
 dd
lmZ ddlmZ  G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d d      Z ej(                  dej*                  i       Z G d de      Z G d de      Z e
ee        G d dee      Z e
ee        G d  d!ej2                        Zy)"zTest interface declarations against ExtensionClass-like classes.

These tests are to make sure we do something sane in the presence of
classic ExtensionClass classes and instances.
    N)odd)	Interface)implementer)directlyProvides)
providedBy)directlyProvidedBy)classImplements)classImplementsOnly)implementedByc                       e Zd Zy)I1N__name__
__module____qualname__     L/usr/lib/python3/dist-packages/zope/interface/tests/test_odd_declarations.pyr   r          r   r   c                       e Zd Zy)I2Nr   r   r   r   r   r       r   r   r   c                       e Zd Zy)I3Nr   r   r   r   r   r   !   r   r   r   c                       e Zd Zy)I31Nr   r   r   r   r   r   "   r   r   r   c                       e Zd Zy)I4Nr   r   r   r   r   r   #   r   r   r   c                       e Zd Zy)I5Nr   r   r   r   r   r   $   r   r   r   c                       e Zd Zy)OddNr   r   r   r   r!   r!   &       r   r!   c                       e Zd ZeZy)BN)r   r   r   r   __implemented__r   r   r   r$   r$   +   s    or   r$   c                       e Zd Zy)ANr   r   r   r   r'   r'   3   r"   r   r'   c                       e Zd Zy)CNr   r   r   r   r)   r)   7   r"   r   r)   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)Testc                 J
   t               }t        |t               | j                  t	        |      D cg c]  }|j                          c}g d       | j                  t	        |      j                         D cg c]  }|j                          c}g d       | j                  t        t	        |      v        | j                  t        t	        |      v        | j                  t	        |      j                  t                     | j                  t	        |      j                  t                     | j                  t	        |      j                  t                      G d dt        t              }t!        |t                G d d|      }t#        |t               t#        |t                |       }t        |t               | j                  t	        |      D cg c]  }|j                          c}g d       | j                  t	        |      j                         D cg c]  }|j                          c}g d       | j                  t        t	        |      v        | j                  t        t	        |      v        | j                  t	        |      j                  t                     | j                  t	        |      j                  t                     | j                  t	        |      j                  t                     | j                  t	        |      j                  t                      G d	 dt        t              } G d
 d|      }t#        |t               t#        |t                |       }t        |t               | j                  t	        |      D cg c]  }|j                          c}g d       | j                  t	        |      j                         D cg c]  }|j                          c}g d       | j                  t        t	        |      v        | j                  t        t	        |      v        | j                  t	        |      j                  t                     | j                  t	        |      j                  t                     | j                  t	        |      j                  t                     | j                  t	        |      j                  t                     y c c}w c c}w c c}w c c}w c c}w c c}w )N)r   r   r   r   )r   r   r   r   r   r   c                       e Zd Zy,Test.test_ObjectSpecification.<locals>.COnlyNr   r   r   r   COnlyr/   M       r   r0   c                       e Zd Zy(Test.test_ObjectSpecification.<locals>.DNr   r   r   r   Dr4   Q   r1   r   r5   )r   r   r   )r   r   r   r   r   c                       e Zd ZeZyr.   )r   r   r   r   r%   r   r   r   r0   z,Test.test_ObjectSpecification.<locals>.COnlyd   s    S?r   c                       e Zd Zyr3   r   r   r   r   r5   z(Test.test_ObjectSpecification.<locals>.De   r1   r   )r)   r   r   assertEqualr   getName	flattened
assertTruer   assertFalser   extendsr   r   r'   r$   r
   r	   )selfcir0   r5   s        r   test_ObjectSpecificationzTest.test_ObjectSpecification>   s{   CBz!}=!!))+=2	 	z!}/F/F/HI!!))+IE	 	jm+,z!},-
1--b12
1--c23A..r23	Aq 	E3'	 	22CBz!}=!!))+=,	.z!}/F/F/HI!!))+I?	Az!},-z!},-
1--b12A..r23
1--c23
1--b120Aq0	 	22CBz!}=!!))+=,	.z!}/F/F/HI!!))+I?	Az!},-z!},-
1--b12A..r23
1--c23
1--b12i > J* >I" >Is#   T:T T'T*T1T c                    t        t               G d dt                     }t        t               G d dt                     } G d d||      }t	        |t
        t               | j                  t        |      D cg c]  }|j                          c}g d       t	        |t               | j                  t        |      D cg c]  }|j                          c}g d       y c c}w c c}w )	Nc                       e Zd Zy)$Test.test_classImplements.<locals>.ANr   r   r   r   r'   rD   y       r   r'   c                       e Zd Zy)$Test.test_classImplements.<locals>.BNr   r   r   r   r$   rG   }   rE   r   r$   c                       e Zd Zy)$Test.test_classImplements.<locals>.CNr   r   r   r   r)   rI      r1   r   r)   )r   r   r   r   )r   r   r   r   r   )r   r   r!   r   r	   r   r   r8   r   r9   r   r>   r'   r$   r)   r@   s        r   test_classImplementszTest.test_classImplementsw   s    	R	 	 
	 
R	 	 
		1 	2r"}Q/?@!!))+@1	32}Q/?@!!))+@7	9 A As   <C'C,c                 >   t        t               G d dt                     }t        t               G d dt                     } G d d||      }t	        |t
        t               | j                  t        |      D cg c]  }|j                   c}ddg       y c c}w )	Nc                       e Zd Zy)(Test.test_classImplementsOnly.<locals>.ANr   r   r   r   r'   rN      rE   r   r'   c                       e Zd Zy)(Test.test_classImplementsOnly.<locals>.BNr   r   r   r   r$   rP      rE   r   r$   c                       e Zd Zy)(Test.test_classImplementsOnly.<locals>.CNr   r   r   r   r)   rR      r1   r   r)   r   r   )
r   r   r!   r   r
   r   r   r8   r   r   rJ   s        r   test_classImplementsOnlyzTest.test_classImplementsOnly   s    	R	 	 
	 
R	 	 
		1 	Ar2&mA.>?!**?	'?s   <Bc                     G d dt               } G d dt               } G d dt               } G d dt               } G d	 d
t              }t        |||        G d dt              }t        ||        G d d||      }t        ||        |       }t        |t        t
               | j                  t        t        |      v        | j                  t
        t        |      v        | j                  |t        |      v        | j                  |t        |      v        | j                  |t        |      v        | j                  |t        |      v        t        |t        |      t
        z
         | j                  t        t        |      v        | j                  t
        t        |      v        | j                  t
        t        |      v        t        |t        |      t
               | j                  t
        t        |      v        y )Nc                       e Zd Zy)'Test.test_directlyProvides.<locals>.IA1Nr   r   r   r   IA1rV      r   r   rW   c                       e Zd Zy)'Test.test_directlyProvides.<locals>.IA2Nr   r   r   r   IA2rY      r   r   rZ   c                       e Zd Zy)&Test.test_directlyProvides.<locals>.IBNr   r   r   r   IBr\      r   r   r]   c                       e Zd Zy)&Test.test_directlyProvides.<locals>.ICNr   r   r   r   ICr_      r   r   r`   c                       e Zd Zy)%Test.test_directlyProvides.<locals>.ANr   r   r   r   r'   rb      r1   r   r'   c                       e Zd Zy)%Test.test_directlyProvides.<locals>.BNr   r   r   r   r$   rd      r1   r   r$   c                       e Zd Zy)%Test.test_directlyProvides.<locals>.CNr   r   r   r   r)   rf      r1   r   r)   )
r   r!   r	   r   r   r   r;   r   r   r<   )	r>   rW   rZ   r]   r`   r'   r$   r)   obs	            r   test_directlyProvideszTest.test_directlyProvides   sz   ")"")"!!!!	 	3$	 	2	1 	2 SR$jn,-jn,-z"~-.z"~-.jn,-jn,-/3B67jn,-z"~-.z"~-./3R8jn,-r   c                 
    G d dt               } G d dt              }t        ||        G d d|      }t        |t               | j	                  t        |      D cg c]  }|j                          c}ddg       y c c}w )Nc                       e Zd Zy)#Test.test_implementedBy.<locals>.I2Nr   r   r   r   r   rk      r   r   r   c                       e Zd Zy)#Test.test_implementedBy.<locals>.C1Nr   r   r   r   C1rm      r1   r   rn   c                       e Zd Zy)#Test.test_implementedBy.<locals>.C2Nr   r   r   r   C2rp      r1   r   rq   r   )r   r!   r	   r   r8   r   r9   )r>   r   rn   rq   r@   s        r   test_implementedByzTest.test_implementedBy   sf    	 	B	 	B}R/@A!!))+A	'As   B c                     G d d      }t        j                  d|j                  |j                        } G d d      }t        j                  d|j                  |j                        } G d d||      }| j	                  |j                  ||f        |       } |       }| j	                  |j
                  d       | j	                  |j
                  d       d|_        | j	                  |j
                  d       | j	                  |j
                  d        |       }| j	                  |j
                  d       | j	                  |j                  d       d|_        | j	                  |j                  d       d|_        | j	                  |j                  d       |j                   | j                  |j                  j                  |j                         y )	Nc                       e Zd ZdZy)<Test.test_odd_metaclass_that_doesnt_subclass_type.<locals>.A   N)r   r   r   ar   r   r   r'   ru          Ar   r'   c                       e Zd ZdZy)<Test.test_odd_metaclass_that_doesnt_subclass_type.<locals>.Brv   N)r   r   r   br   r   r   r$   rz      rx   r   r$   c                       e Zd Zy)<Test.test_odd_metaclass_that_doesnt_subclass_type.<locals>.CNr   r   r   r   r)   r}      r1   r   r)   rv      )
r   	MetaClass	__bases____dict__r8   rw   r{   r?   assertIs	__class__)r>   r'   r$   r)   rw   aar?   s          r   ,test_odd_metaclass_that_doesnt_subclass_typez1Test.test_odd_metaclass_that_doesnt_subclass_type   sc   	 	 MM#q{{AJJ7	 	 MM#q{{AJJ7	1 	 	q!f-CSa q!a q!Ca a a a 	akk++Q[[9r   N)	r   r   r   rA   rK   rS   rh   rr   r   r   r   r   r+   r+   <   s"    73r9&'  .Z'*:r   r+   )__doc__unittestzope.interface.testsr   zope.interfacer   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r!   r   r   r$   r'   r)   TestCaser+   r   r   r   <module>r      s   
  $ $ & + % - * . (       "     	 	cmmE3=="- # "	 	 2 	1 	 3 C:8 C:r   