U
    kuf7  ã                   @  sD   d dl mZ d dlmZ d dlmZ d dlmZ G dd„ deƒZdS )é    )Úannotations)ÚAny)ÚTestCase)Ú
TraitErrorc                   @  sv   e Zd ZdZdddœdd„Zdddœdd„Zdd	œd
d„Zdd	œdd„Zdd	œdd„Zdd	œdd„Z	dd	œdd„Z
dS )ÚTraitTestBasez+A best testing class for basic trait types.r   ÚNone)ÚvalueÚreturnc                 C  s   || j _d S ©N)Úobjr   ©Úselfr   © r   úB/tmp/pip-unpacked-wheel-utpcgctl/traitlets/tests/test_traitlets.pyÚassign   s    zTraitTestBase.assignc                 C  s   |S r
   r   r   r   r   r   Úcoerce   s    zTraitTestBase.coerce)r	   c                 C  s:   t | dƒr6| jD ]$}|  |¡ |  | jj|  |¡¡ qd S )NÚ_good_values)Úhasattrr   r   ÚassertEqualr   r   r   r   r   r   r   Útest_good_values   s    


zTraitTestBase.test_good_valuesc              	   C  sN   t | dƒrJ| jD ]8}z|  t| j|¡ W q tk
rF   t|ƒd ‚Y qX qd S )NÚ_bad_values)r   r   ÚassertRaisesr   r   ÚAssertionErrorr   r   r   r   Útest_bad_values   s    

zTraitTestBase.test_bad_valuesc                 C  s    t | dƒr|  | j| jj¡ d S ©NÚ_default_value)r   r   r   r   r   ©r   r   r   r   Útest_default_value    s    
z TraitTestBase.test_default_valuec              	   C  s†   t | dƒr‚t | dƒr‚d | jkr‚| j ¡ d }z@d|_| j d ¡ |  d ¡ |  | jj	d ¡ |  
¡  |  ¡  W 5 d|_| j d ¡ X d S )Nr   r   r   FT)r   r   r   ZtraitsÚ
allow_noneÚappendÚremover   r   r   r   r   )r   Ztraitr   r   r   Útest_allow_none$   s     ÿþý
zTraitTestBase.test_allow_nonec                 C  s   t | dƒr| j| j_d S r   )r   r   r   r   r   r   r   r   ÚtearDown8   s    
zTraitTestBase.tearDownN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r!   r"   r   r   r   r   r   	   s   r   N)	Ú
__future__r   Útypingr   Zunittestr   Z	traitletsr   r   r   r   r   r   Ú<module>   s   