B
    0`                 @   s~   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 fdd	Zd
d Zdd Z	G dd de j
ZG dd deZdS )    N)verifyClass)verifyObject)ABCInterface)ABCInterfaceClassc             C   s   dS )NT )ifacer   r   S/home/dcms/DCMS/lib/python3.7/site-packages/zope/interface/common/tests/__init__.py<lambda>       r	   c             c   s   t  }ttj}xr|r|d}||kst|ts4q|| |t|j | |sXqt |	 }|t |j
8 }|r||fV  qW d S )Nr   )setlistr   Z
dependentspop
isinstancer   addextendZgetRegisteredConformersZ#_ABCInterfaceClass__ignored_classes)	predicateseenstackr   Z
registeredr   r   r   iter_abc_interfaces   s    


r   c                s    fdd}t | t| d S )Nc                s
   | j  kS )N)
__module__)r   )moduler   r   r   0   s    z*add_abc_interface_tests.<locals>.predicate)add_verify_testsr   )clsr   r   r   )r   r   add_abc_interface_tests/   s    r   c       	      C   s   d | _ x|D ]\}}x|D ]}||fdd}d|j|jdd|jf }d| }||_t| |rrt|t| jft| || ||fdd}d	| }||_t| |rtt| || qW qW d S )
Nc             S   s:   || j ks|j| j kr$| d|  | | || d S )NzUnable to verify %s)UNVERIFIABLE__name__skipTest
assertTrueverify)selfstdlib_classr   r   r   r   test9   s    zadd_verify_tests.<locals>.testz%s_%s_%s._Z
test_auto_c       
      S   s   ddl m} ddl m} ddl m} | t|j|dd|j ||}|j}| |d | || jk}|j||d}	|		| |	
| | t|	| d S )Nr   )ro)implementedBy)	InterfaceT)strict)Zzope.interfacer$   r%   r&   assertEqualtupleZ__sro__ZassertIsNON_STRICT_ROremoveappend)
r   r    r   r$   r%   r&   Z
implementsZsror'   Zisror   r   r   test_roI   s    


z!add_verify_tests.<locals>.test_roZtest_auto_ro_)	ZmaxDiffr   r   replacehasattrAssertionErrorr   __dict__setattr)	r   Ziface_classes_iterr   Zregistered_classesr    r!   suffixnamer.   r   r   r   r   5   s"    

r   c               @   s,   e Zd ZeeZdZdZdd Zdd Z	dS )VerifyClassMixinr   c             C   s   |S )Nr   )r   r   xr   r   r   _adjust_object_before_verifyi   s    z-VerifyClassMixin._adjust_object_before_verifyc             K   s   | j || ||f|S )N)verifierr8   )r   r   klasskwargsr   r   r   r   l   s    zVerifyClassMixin.verifyN)
r   r   __qualname__staticmethodr   r9   r   r+   r8   r   r   r   r   r   r6   d   s
   r6   c               @   s    e Zd ZeeZi Zdd ZdS )VerifyObjectMixinc             C   sr   | j |}|s| j |}|s.| j |j}|s6|}|tjkrR| dt|  | }t|drn| |j	 |S )NzCannot create close)
CONSTRUCTORSgetr   unittestZSkipTestr   strr0   Z
addCleanupr?   )r   r   r7   constructorresultr   r   r   r8   w   s    

z.VerifyObjectMixin._adjust_object_before_verifyN)r   r   r<   r=   r   r9   r@   r8   r   r   r   r   r>   r   s   r>   )rB   Zzope.interface.verifyr   r   Zzope.interface.commonr   r   r   r   r   ZTestCaser6   r>   r   r   r   r   <module>   s   /