3
d(                 @   s,  d dl Z d dlZd dlmZmZmZmZmZmZm	Z	m
Z
mZmZ d dlmZ d dlmZ ejdk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ZG dd deZG dd deZG dd deZG dd deZG dd deZG dd dejZeejedG dd dejZdS )    N)
AnyBaseEnumEnum	HasTraitsIntListPropertySet
TraitErrorTuple)	ETSConfig)requires_traitsuinullc               @   s   e Zd ZdZdZdZdS )FooEnumr         N)__name__
__module____qualname__foobarbaz r   r   8/tmp/pip-build-7vycvbft/traits/traits/tests/test_enum.pyr      s   r   c               @   s   e Zd ZdZdZdZdS )	OtherEnumr   r      N)r   r   r   onetwothreer   r   r   r   r      s   r   c               @   s&   e Zd ZeeZeddZdd ZdS )ExampleModelvalid_models)valuesc             C   s
   dddgS )Nmodel1model2Zmodel3r   )selfr   r   r   _get_valid_models'   s    zExampleModel._get_valid_modelsN)	r   r   r   r   r   r    r   rootr%   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 )
CustomCollectionc             G   s
   || _ d S )N)data)r$   r(   r   r   r   __init__-   s    zCustomCollection.__init__c             C   s
   t | jS )N)lenr(   )r$   r   r   r   __len__0   s    zCustomCollection.__len__c             C   s
   t | jS )N)iterr(   )r$   r   r   r   __iter__3   s    zCustomCollection.__iter__c             C   s
   || j kS )N)r(   )r$   xr   r   r   __contains__6   s    zCustomCollection.__contains__N)r   r   r   r)   r+   r-   r/   r   r   r   r   r'   +   s   r'   c               @   sN   e Zd ZedddgZedddgZeddddgZeddZedddZ	dS )EnumListExampler   r   r   r!   )r!   N)
r   r   r   r   r!   r   valuevalue_default
value_namevalue_name_defaultr   r   r   r   r0   :   s
   
r0   c               @   s<   e Zd ZedZedZedd	ZeddZedddZ	dS )
EnumTupleExampler   r   r   r!   )r!   N)r   r   r   )r   r   r   )r   r   r   )
r   r   r   r   r!   r   r1   r2   r3   r4   r   r   r   r   r5   F   s
   

r5   c               @   s@   e Zd ZeeZeeZeejeZ	eddZ
eejddZdS )EnumEnumExampler!   )r!   N)r   r   r   r   r   r!   r   r1   r   r2   r3   r4   r   r   r   r   r6   R   s
   
r6   c               @   s   e Zd ZededddZedddZeeddd	Zed
ZedddhZ	edddhgZ
eddZedddddddddd
ZeddZedZedddZdS )EnumCollectionExampleredgreenbluergbr   r   r   abcdefgr   r   yesnor   r                  	   maybeN)r   r   r   r   r'   rgbrgb_charnumberslettersint_set_enumcorrect_int_set_enumyes_nodigits
two_digitssingle_digitr   	slow_enumr   r   r   r   r7   ^   s   

r7   c               @   s    e Zd ZeddZeddZdS )EnumCollectionGUIExampleintsetN)r   r   r   r   rL   rM   r   r   r   r   rS   v   s   
rS   c               @   st   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S )EnumTestCasec             C   s   t dd}d|_d S )Nr"   )r&   r#   )r   r&   )r$   example_modelr   r   r   test_valid_enum~   s    
zEnumTestCase.test_valid_enumc                s&   t dd  fdd}| jt| d S )Nr"   )r&   c                  s
   d _ d S )NZnot_valid_model)r&   r   )rW   r   r   assign_invalid   s    z6EnumTestCase.test_invalid_enum.<locals>.assign_invalid)r   assertRaisesr
   )r$   rY   r   )rW   r   test_invalid_enum   s    
zEnumTestCase.test_invalid_enumc             C   s   t  }| j|jd | j|jd | j|jd | j|jd d|_| j|jd | jt d|_W d Q R X | jt d|_W d Q R X dddg|_d|_| j|jd | jt d|_W d Q R X d S )Nr   r   	somethingr   r   r   r   )	r0   assertEqualr1   r2   r3   r4   rZ   r
   r!   )r$   exampler   r   r   test_enum_list   s     zEnumTestCase.test_enum_listc             C   s   t  }| j|jd | j|jd | j|jd | j|jd d|_| j|jd | jt d|_W d Q R X | jt d|_W d Q R X d|_d|_| j|jd | jt d|_W d Q R X d S )	Nr   r   r\   r   r   r   r   )r   r   r   )	r5   r]   r1   r2   r3   r4   rZ   r
   r!   )r$   r^   r   r   r   test_enum_tuple   s     zEnumTestCase.test_enum_tuplec             C   s   t  }| j|jtj | j|jtj | j|jtj | j|jtj tj|_| j|jtj | j	t
 d|_W d Q R X | j	t
 d|_W d Q R X t|_tj|_| j|jtj | j	t
 tj|_W d Q R X d S )Nr   r   )r6   r]   r1   r   r   r2   r   r3   r4   rZ   r
   r   r!   r   )r$   r^   r   r   r   test_enum_enum   s     zEnumTestCase.test_enum_enumc          :   C   s  t  }| jd|j | jd|j | jd|j | jd|j | jd|j | jd|j | jd|j | jd|j	 | jd|j
 d	|_| jd	|j d
|_| jd
|j d|_| jd|j x$tdD ]}||_| j||j qW d|_	| jd|j	 | jt d|_W d Q R X | jt d|_W d Q R X | jt d|_W d Q R X | jt d|_W d Q R X | jt d|_
W d Q R X | jt d |_
W d Q R X | jt ddh|_W d Q R X | jd|j ddh|_| jt d|_W d Q R X d S )Nr8   r;   r   r>   r?   r   r   rE   r:   r<   r@   
   r   r   r=   nrF      )r7   r]   rH   rI   rJ   rK   rN   rO   rL   rP   rQ   rangerZ   r
   rM   )r$   Zcollection_enumir   r   r   test_enum_collection   sN    
z!EnumTestCase.test_enum_collectionc             C   s0   | j t G dd dt}|  W d Q R X d S )Nc               @   s   e Zd Ze ZdS )z/EnumTestCase.test_empty_enum.<locals>.EmptyEnumN)r   r   r   r   ar   r   r   r   	EmptyEnum  s   ri   )rZ   r
   r   )r$   ri   r   r   r   test_empty_enum  s    zEnumTestCase.test_empty_enumc             C   s(   | j t tdddd W d Q R X d S )Nr8   r9   r!   )r!   )rZ   r
   r   )r$   r   r   r   (test_too_many_arguments_for_dynamic_enum  s    z5EnumTestCase.test_too_many_arguments_for_dynamic_enumc             C   sP   t ddd}| j|jd | j|jd  t dd}| j|j | j|jd d S )Nr   r   r   r!   )r!   )r   r   r   )r   r]   r!   ZassertIsNonename)r$   Zstatic_enumZdynamic_enumr   r   r   test_attributes  s    
zEnumTestCase.test_attributesc             C   sB   | j t tg  W d Q R X | j t tdg  W d Q R X d S )Ng      @)rZ   r
   r   )r$   r   r   r   )test_explicit_collection_with_no_elements$  s    z6EnumTestCase.test_explicit_collection_with_no_elementsc          
   C   sV   t  }| j|jd d|_| j|jd | jt d|_W d Q R X | j|jd d S )Nr?   r@   Zperhaps)r7   r]   rR   rZ   r
   )r$   objr   r   r   test_base_enum+  s    zEnumTestCase.test_base_enumc          	   C   sJ   G dd dt }| }d|_| j|jd | jt d	|_W d Q R X d S )
Nc               @   sB   e Zd Zeeddddddddd	d
ddgdZee eddZdS )z?EnumTestCase.test_dynamic_enum_in_tuple.<locals>.HasEnumInTupler   r   r   rA   rB   rC   rD   rE   rF   rb         )r1   months)r!   N)	r   r   r   r   r   rs   r   r   year_and_monthr   r   r   r   HasEnumInTuple=  s   $ru     rE        )rv   rE   )rv   rE   )rw   rx   )r   rt   r]   rZ   r
   )r$   ru   modelr   r   r   test_dynamic_enum_in_tuple8  s    z'EnumTestCase.test_dynamic_enum_in_tuplec             C   sV   G dd dt }|dddhd}ddddg|_| jt d	dddg|_W d Q R X d S )
Nc               @   s"   e Zd ZeeZeeddZdS )z=EnumTestCase.test_dynamic_enum_in_list.<locals>.HasEnumInListrO   )r!   N)	r   r   r   r	   r   rO   r   r   digit_sequencer   r   r   r   HasEnumInListL  s   r|   r   r   )rO   r   r}   r}   )r   r{   rZ   r
   )r$   r|   ry   r   r   r   test_dynamic_enum_in_listJ  s
    z&EnumTestCase.test_dynamic_enum_in_listN)r   r   r   rX   r[   r_   r`   ra   rg   rj   rk   rm   rn   rp   rz   r~   r   r   r   r   rV   }   s   A	rV   zGUI toolkit not availablec               @   s   e Zd Zdd ZdS )TestGuic          	   C   s.   ddl m} t }| j| W d Q R X d S )Nr   )UITester)Ztraitsui.testing.apir   rS   Z	create_ui)r$   r   ro   r   r   r   test_create_editor]  s    zTestGui.test_create_editorN)r   r   r   r   r   r   r   r   r   Y  s   r   ) enumZunittestZ
traits.apir   r   r   r   r   r   r   r	   r
   r   Ztraits.etsconfig.apir   Z$traits.testing.optional_dependenciesr   ZtoolkitZis_nullr   r   r   r'   r0   r5   r6   r7   rS   ZTestCaserV   ZskipIfr   r   r   r   r   <module>   s&   0
 ]