a
    7aN5                     @   s   d Z ddlZddlZddlmZmZmZmZmZm	Z	 G dd dejZ
G dd dejZG dd	 d	ejZd
 ZG dd dejZG dd dejZdS )z"
Test the trait-type ``UseEnum``.
    N)	HasTraits
TraitErrorEnumUseEnumCaselessStrEnum	FuzzyEnumc                   @   s   e Zd ZdZdZdZdZdS )Color            N)__name__
__module____qualname__redgreenZblueZyellow r   r   Blib/python3.9/site-packages/traitlets/tests/test_traitlets_enum.pyr      s   r   c                   @   s   e Zd ZdZdZdS )
OtherColorr   r	   N)r   r   r   r   r   r   r   r   r   r      s   r   c                   @   s   e Zd ZdZdZdZdZdS )CSColorr	   r
   r   r   N)r   r   r   r   GreenZBLUEZYeLLoWr   r   r   r   r      s   r   zred Green  BLUE YeLLoWc                   @   s   e Zd ZG dd de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'S )(TestUseEnumc                   @   s   e Zd ZeeddZdS )zTestUseEnum.Example
Color enumhelpNr   r   r   r   r   colorr   r   r   r   Example*   s   r   c                 C   s$   |   }tj|_| |jtj d S N)r   r   r   r   assertEqualselfexampler   r   r   test_assign_enum_value-   s    z"TestUseEnum.test_assign_enum_valuec                 C   sV   dd t j D }|D ]8}| |t  |  }||_| |j| | |t  qd S )Nc                 S   s   g | ]}|qS r   r   ).0valuer   r   r   
<listcomp>4       z;TestUseEnum.test_assign_all_enum_values.<locals>.<listcomp>)r   __members__valuesassertIsInstancer   r   r   )r!   Zenum_valuesr%   r"   r   r   r   test_assign_all_enum_values2   s    z'TestUseEnum.test_assign_all_enum_valuesc                 C   s>   |   }| t tj|_W d    n1 s00    Y  d S r   )r   assertRaisesr   r   r   r   r    r   r   r   4test_assign_enum_value__with_other_enum_raises_error<   s    z@TestUseEnum.test_assign_enum_value__with_other_enum_raises_errorc                 C   s"   |   }d|_| |jtj d S )Nr   )r   r   r   r   r   r    r   r   r   test_assign_enum_name_1A   s    z#TestUseEnum.test_assign_enum_name_1c                 C   sf   dd t j D }|D ]H}| |t |  }t j|}||_| |j| | 	|jj
| qd S )Nc                 S   s   g | ]
}|j qS r   )namer$   Zenum_valr   r   r   r&   J   r'   z;TestUseEnum.test_assign_enum_value_name.<locals>.<listcomp>)r   r(   r)   r*   strr   getr   assertIsr   r/   )r!   Z
enum_namesr%   r"   Z
enum_valuer   r   r   test_assign_enum_value_nameG   s    z'TestUseEnum.test_assign_enum_value_namec                 C   sD   g d}|D ]2}|   }||_| |jt | t|j| qd S )N)z	Color.redzColor.greenz
Color.bluezColor.yellow)r   r   r*   r   r   r1   )r!   Zscoped_namesr%   r"   r   r   r   "test_assign_scoped_enum_value_nameS   s    z.TestUseEnum.test_assign_scoped_enum_value_namec              	   C   sN   g d}|D ]<}|   }| t ||_W d    q1 s>0    Y  qd S )N)ZUNKNOWN_COLORZREDr   Zblue2)r   r,   r   r   )r!   Zbad_enum_namesr%   r"   r   r   r   -test_assign_bad_enum_value_name__raises_error\   s
    z9TestUseEnum.test_assign_bad_enum_value_name__raises_errorc                 C   s,   |   }d|_tjj|_| |jtj d S )Nr	   )r   r   r   r   r%   r   r    r   r   r   test_assign_enum_value_number_1d   s    
z+TestUseEnum.test_assign_enum_value_number_1c                 C   sZ   dd t j D }|D ]<}| |t |  }||_| |jt  | |jj| qd S )Nc                 S   s   g | ]
}|j qS r   )r%   r0   r   r   r   r&   n   s   z=TestUseEnum.test_assign_enum_value_number.<locals>.<listcomp>)	r   r(   r)   r*   intr   r   r   r%   )r!   Zenum_numbersr%   r"   r   r   r   test_assign_enum_value_numberk   s    z)TestUseEnum.test_assign_enum_value_numberc              	   C   sr   g d}|D ]`}|  |t tt|d d u s4J |  }| t ||_W d    q1 sb0    Y  qd S )N)r      )	r*   r8   r   r   Zselect_by_numberr   r,   r   r   )r!   Zbad_numbersr%   r"   r   r   r   /test_assign_bad_enum_value_number__raises_errorw   s    z;TestUseEnum.test_assign_bad_enum_value_number__raises_errorc                 C   s*   G dd dt }| }| |jtj d S )Nc                   @   s   e Zd ZeeZdS )z=TestUseEnum.test_ctor_without_default_value.<locals>.Example2Nr   r   r   r   r   Example2   s   r=   )r   r   r   r   r   r!   r=   r"   r   r   r   test_ctor_without_default_value   s    z+TestUseEnum.test_ctor_without_default_valuec                 C   s*   G dd dt }| }| |jtj d S )Nc                   @   s   e Zd ZeeejdZdS )zHTestUseEnum.test_ctor_with_default_value_as_enum_value.<locals>.Example2default_valueN)r   r   r   r   r   r   r   r   r   r   r   r=      s   r=   )r   r   r   r   r   r>   r   r   r   *test_ctor_with_default_value_as_enum_value   s    z6TestUseEnum.test_ctor_with_default_value_as_enum_valuec                 C   s:   G dd dt }| }| |jtj | |jtj d S )Nc                   @   s&   e Zd ZeedddZeeddZdS )zRTestUseEnum.test_ctor_with_default_value_none_and_not_allow_none.<locals>.Example2NFrA   
allow_noner@   r   r   r   r   r   color1color2r   r   r   r   r=      s   r=   )r   r   rF   r   r   rG   r>   r   r   r   4test_ctor_with_default_value_none_and_not_allow_none   s    z@TestUseEnum.test_ctor_with_default_value_none_and_not_allow_nonec                 C   s6   G dd dt }| }| |jd  | |jd  d S )Nc                   @   s&   e Zd ZeedddZeeddZdS )zNTestUseEnum.test_ctor_with_default_value_none_and_allow_none.<locals>.Example2NTrC   rD   rE   r   r   r   r   r=      s   r=   )r   r3   rF   rG   r>   r   r   r   0test_ctor_with_default_value_none_and_allow_none   s    z<TestUseEnum.test_ctor_with_default_value_none_and_allow_nonec                 C   sF   G dd dt }| }d |_d |_| |jtj | |jtj d S )Nc                   @   s    e Zd ZeeddZeeZdS )zYTestUseEnum.test_assign_none_without_allow_none_resets_to_default_value.<locals>.Example2FrI   NrE   r   r   r   r   r=      s   r=   )r   rF   rG   r3   r   r   r>   r   r   r   ;test_assign_none_without_allow_none_resets_to_default_value   s    zGTestUseEnum.test_assign_none_without_allow_none_resets_to_default_valuec                 C   s.   G dd dt }| }d |_| |jd  d S )Nc                   @   s   e Zd ZeeddZdS )z>TestUseEnum.test_assign_none_to_enum_or_none.<locals>.Example2TrI   Nr   r   r   r   r   r=      s   r=   )r   r   r3   r>   r   r   r    test_assign_none_to_enum_or_none   s    z,TestUseEnum.test_assign_none_to_enum_or_nonec                 C   sJ   G dd dt }| }| t d|_W d    n1 s<0    Y  d S )Nc                   @   s   e Zd ZeeddZdS )zHTestUseEnum.test_assign_bad_value_with_to_enum_or_none.<locals>.Example2TrI   Nr   r   r   r   r   r=      s   r=   Z	BAD_VALUE)r   r,   r   r   r>   r   r   r   *test_assign_bad_value_with_to_enum_or_none   s    z6TestUseEnum.test_assign_bad_value_with_to_enum_or_nonec                    sD  dd l }t G  fdddt}tddD ]}d| }t||}d|_| }| t|	dt |	d | 
d	| | }| t|	d
t |	d
 | 
d| | |d d|_| }| t|	dt |	d | d| | }| t|	d
t |	d
 | d| | |d q*d S )Nr   c                       s<   e Zd Ze ddZe ddZe ddZe	e
ddZdS )z&TestUseEnum.test_info.<locals>.ExampleFrI   N)r   r   r   r   Zenum1r   Zenum2r   Zenum3r   r   Zenum4r   choicesr   r   r      s   r   r	   r;   zenum%sTz, zor None|z	or `None`z\b\\\bFNone)syscolor_choicesr   rangegetattrrD   infor   lensplitZassertInZinfo_rstZassertNotRegexZassertNotIn)r!   rR   r   iattrenumrV   r   rN   r   	test_info   s,    
""""zTestUseEnum.test_infoN)r   r   r   r   r   r#   r+   r-   r.   r4   r5   r6   r7   r9   r<   r?   rB   rH   rJ   rK   rL   rM   r\   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	d
 Zdd ZdS )TestFuzzyEnumc                 C   s   G dd dt }| }tD ]h}tdt|D ]T}|d | }||_| |j| | |_| |j| | |_| |j| q,qd S )Nc                   @   s   e Zd ZeeddZdS )zGTestFuzzyEnum.test_search_all_prefixes__overwrite.<locals>.FuzzyExampler   r   Nr   r   r   r   rS   r   r   r   r   r   FuzzyExample   s   r_   r	   r   rS   rT   rW   r   r   upperlowerr!   r_   r"   r   wlenr%   r   r   r   #test_search_all_prefixes__overwrite   s    

z1TestFuzzyEnum.test_search_all_prefixes__overwritec                 C   s   G dd dt }tD ]z}tdt|D ]f}|d | }| }||_| |j| | }| |_| |j| | }| |_| |j| q&qd S )Nc                   @   s   e Zd ZeeddZdS )zBTestFuzzyEnum.test_search_all_prefixes__ctor.<locals>.FuzzyExampler   r   Nr^   r   r   r   r   r_     s   r_   r	   r`   )r!   r_   r   rd   r%   r"   r   r   r   test_search_all_prefixes__ctor  s    

z,TestFuzzyEnum.test_search_all_prefixes__ctorc                 C   s   G dd dt }| }tD ]d}tddD ]T}||d  }||_| |j| | |_| |j| | |_| |j| q(qd S )Nc                   @   s   e Zd ZeedddZdS )zETestFuzzyEnum.test_search_substrings__overwrite.<locals>.FuzzyExampler   Tr   substring_matchingNr^   r   r   r   r   r_     s   r_   r   r
   )r   rS   rT   r   r   ra   rb   rc   r   r   r   !test_search_substrings__overwrite  s    

z/TestFuzzyEnum.test_search_substrings__overwritec                 C   s   G dd dt }td }dt|fD ]`}tdt|d D ]H}||| }| }||_| |j| | }| |_| |j| q:q$d S )Nc                   @   s   e Zd ZeedddZdS )z@TestFuzzyEnum.test_search_substrings__ctor.<locals>.FuzzyExampler   Trg   Nr^   r   r   r   r   r_   )  s   r_   r:   r	   r
   )r   rS   rW   rT   r   r   ra   )r!   r_   r   endstartr%   r"   r   r   r   test_search_substrings__ctor(  s    
z*TestFuzzyEnum.test_search_substrings__ctorc                 C   s  dd }|ddd }|  t d|_W d    n1 s<0    Y  |  t d|_W d    n1 sl0    Y  |  t d|_W d    n1 s0    Y  |ddd }|  t d|_W d    n1 s0    Y  |  t d	|_W d    n1 s0    Y  |ddd }|  t d|_W d    n1 sL0    Y  |  t d|_W d    n1 s~0    Y  |  t d
|_W d    n1 s0    Y  |  t d|_W d    n1 s0    Y  |  t d|_W d    n1 s0    Y  |ddd }|  t d|_W d    n1 sT0    Y  |  t d|_W d    n1 s0    Y  d S )Nc                    s   G  fdddt }|S )Nc                       s   e Zd Zee dZdS )zPTestFuzzyEnum.test_assign_other_raises.<locals>.new_trait_class.<locals>.Examplecase_sensitiverh   Nr^   r   rm   r   r   r   <  s   r   r   )rn   rh   r   r   rm   r   new_trait_class;  s    z?TestFuzzyEnum.test_assign_other_raises.<locals>.new_trait_classFrm    z	BAD COLORZedTZRedr   ZlueZlUE)r,   r   r   )r!   rp   r"   r   r   r   test_assign_other_raises:  s:    $$$$&&&&&&&z&TestFuzzyEnum.test_assign_other_raisesc                 C   sv   dd }t D ]@}||dd }| |j| || dd }| |j| qt d }||dd }| |j| d S )Nc                    s   G  fdddt }|S )Nc                       s   e Zd Zee dZdS )zTTestFuzzyEnum.test_ctor_with_default_value.<locals>.new_trait_class.<locals>.Example)rA   rn   rh   Nr^   r   rn   rA   rh   r   r   r   f  s
   r   ro   )rA   rn   rh   r   r   rs   r   rp   d  s    zCTestFuzzyEnum.test_ctor_with_default_value.<locals>.new_trait_classFr:   T)rS   r   r   ra   )r!   rp   r   r"   r   r   r   test_ctor_with_default_valuec  s    
z*TestFuzzyEnum.test_ctor_with_default_valueN)	r   r   r   re   rf   ri   rl   rr   rt   r   r   r   r   r]      s   )r]   )__doc__Zunittestr[   Z	traitletsr   r   r   r   r   r   r   r   r   rX   rS   ZTestCaser   r]   r   r   r   r   <module>   s     E