o
    ȷe4                     @   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)CaselessStrEnumEnum	FuzzyEnum	HasTraits
TraitErrorUseEnumc                   @      e Zd ZdZdZdZdZdS )Color            N)__name__
__module____qualname__redgreenblueyellow r   r   Z/var/www/ideatree/venv/lib/python3.10/site-packages/traitlets/tests/test_traitlets_enum.pyr	      
    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                   @   r   )CSColorr
   r   r   r   N)r   r   r   r   GreenBLUEYeLLoWr   r   r   r   r      r   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                   @      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,       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 ]}| |t  |  }||_| |j| | |t  qd S )Nc                 S   s   g | ]}|qS r   r   ).0valuer   r   r   
<listcomp>6   s    z;TestUseEnum.test_assign_all_enum_values.<locals>.<listcomp>)r	   __members__valuesassertIsInstancer$   r#   r'   )r)   enum_valuesr-   r*   r   r   r   test_assign_all_enum_values4   s   z'TestUseEnum.test_assign_all_enum_valuesc                 C   s@   |   }| t tj|_W d    d S 1 sw   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_1C   s   z#TestUseEnum.test_assign_enum_name_1c                 C   sf   dd t j D }|D ]$}| |t |  }t j|}||_| |j| | 	|jj
| qd S )Nc                 S      g | ]}|j qS r   )namer,   enum_valr   r   r   r.   L       z;TestUseEnum.test_assign_enum_value_name.<locals>.<listcomp>)r	   r/   r0   r1   strr$   getr#   assertIsr'   r8   )r)   
enum_namesr-   r*   
enum_valuer   r   r   test_assign_enum_value_nameI   s   z'TestUseEnum.test_assign_enum_value_namec                 C   sD   g d}|D ]}|   }||_| |jt | t|j| qd S )N)z	Color.redzColor.greenz
Color.bluezColor.yellow)r$   r#   r1   r	   r'   r<   )r)   scoped_namesr-   r*   r   r   r   "test_assign_scoped_enum_value_nameU   s   z.TestUseEnum.test_assign_scoped_enum_value_namec              	   C   sN   g d}|D ]}|   }| t ||_W d    n1 sw   Y  qd S )N)UNKNOWN_COLORREDr   blue2)r$   r4   r   r#   )r)   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_1f   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   r7   r   )r-   r9   r   r   r   r.   p   r;   z=TestUseEnum.test_assign_enum_value_number.<locals>.<listcomp>)	r	   r/   r0   r1   intr$   r#   r'   r-   )r)   enum_numbersr-   r*   r   r   r   test_assign_enum_value_numberm   s   z)TestUseEnum.test_assign_enum_value_numberc              	   C   sr   g d}|D ]0}|  |t tt|d d u sJ |  }| t ||_W d    n1 s1w   Y  qd S )N)r      )	r1   rJ   r   r	   select_by_numberr$   r4   r   r#   )r)   bad_numbersr-   r*   r   r   r   /test_assign_bad_enum_value_number__raises_errorx   s   z;TestUseEnum.test_assign_bad_enum_value_number__raises_errorc                 C   *   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    rS   )r   r'   r#   r	   r   r)   rS   r*   r   r   r   test_ctor_without_default_value      z+TestUseEnum.test_ctor_without_default_valuec                 C   rR   )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   rS          rS   )r   r'   r#   r	   r   rT   r   r   r   *test_ctor_with_default_value_as_enum_value   rV   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rX   
allow_nonerW   r   r   r   r   r	   color1color2r   r   r   r   rS          rS   )r   r'   r^   r	   r   r_   rT   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>.Example2NTr[   r\   r]   r   r   r   r   rS      r`   rS   )r   r>   r^   r_   rT   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>.Example2Frb   Nr]   r   r   r   r   rS      s    rS   )r   r^   r_   r>   r	   r   rT   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                   @   r   )z>TestUseEnum.test_assign_none_to_enum_or_none.<locals>.Example2Trb   Nr"   r   r   r   r   rS      r%   rS   )r   r#   r>   rT   r   r   r    test_assign_none_to_enum_or_none   s   z,TestUseEnum.test_assign_none_to_enum_or_nonec                 C   sL   G dd dt }| }| t d|_W d    d S 1 sw   Y  d S )Nc                   @   r   )zHTestUseEnum.test_assign_bad_value_with_to_enum_or_none.<locals>.Example2Trb   Nr"   r   r   r   r   rS      r%   rS   	BAD_VALUE)r   r4   r   r#   rT   r   r   r   *test_assign_bad_value_with_to_enum_or_none   s
   "z6TestUseEnum.test_assign_bad_value_with_to_enum_or_nonec                    s:  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 )Nc                       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>.ExampleFrb   N)r   r   r   r   enum1r   enum2r   enum3r   r   enum4r   choicesr   r   r$      s
    r$   r
   rN   zenum%sTz, zor None|z	or `None`z\b\\\bFNone)color_choicesr   rangegetattrr\   infor'   lensplitassertIninfo_rstassertNotRegexassertNotIn)r)   r$   iattrenumrs   r   rl   r   	test_info   s,   
""""zTestUseEnum.test_infoN)r   r   r   r   r$   r+   r3   r5   r6   rA   rC   rH   rI   rL   rQ   rU   rZ   ra   rc   rd   re   rg   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 ]4}tdt|D ]*}|d | }||_| |j| | |_| |j| | |_| |j| qqd S )Nc                   @   r   )zGTestFuzzyEnum.test_search_all_prefixes__overwrite.<locals>.FuzzyExampler   r    Nr   r   r   r   rp   r#   r   r   r   r   FuzzyExample   r%   r   r
   r   rp   rq   rt   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 ]=}tdt|D ]3}|d | }| }||_| |j| | }| |_| |j| | }| |_| |j| qq
d S )Nc                   @   r   )zBTestFuzzyEnum.test_search_all_prefixes__ctor.<locals>.FuzzyExampler   r    Nr   r   r   r   r   r     r%   r   r
   r   )r)   r   r#   r   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 ]2}tddD ]*}||d  }||_| |j| | |_| |j| | |_| |j| qqd S )Nc                   @      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     rY   r   r   r   )r   rp   rq   r#   r'   r   r   r   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 ]0}tdt|d D ]$}||| }| }||_| |j| | }| |_| |j| qqd S )Nc                   @   r   )z@TestFuzzyEnum.test_search_substrings__ctor.<locals>.FuzzyExampler   Tr   Nr   r   r   r   r   r   (  rY   r   rM   r
   r   )r   rp   rt   rq   r#   r'   r   )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w   Y  |  t d|_W d    n1 s6w   Y  |  t d|_W d    n1 sNw   Y  |ddd }|  t d|_W d    n1 smw   Y  |  t d	|_W d    n1 sw   Y  |ddd }|  t d|_W d    n1 sw   Y  |  t d|_W d    n1 sw   Y  |  t d
|_W d    n1 sw   Y  |  t d|_W d    n1 sw   Y  |  t d|_W d    n	1 sw   Y  |ddd }|  t d|_W d    n	1 s%w   Y  |  t d|_W d    d S 1 s?w   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_sensitiver   Nr   r   r   r   r   r$   :  s    
r$   r   )r   r   r$   r   r   r   new_trait_class9  s   z?TestFuzzyEnum.test_assign_other_raises.<locals>.new_trait_classFr    z	BAD COLORedTRedr   luelUE)r4   r   r#   )r)   r   r*   r   r   r   test_assign_other_raises8  sR   
$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)rX   r   r   Nr   r   r   rX   r   r   r   r$   e  s    
r$   r   )rX   r   r   r$   r   r   r   r   d  s   zCTestFuzzyEnum.test_ctor_with_default_value.<locals>.new_trait_classFrM   T)rp   r'   r#   r   )r)   r   r#   r*   r   r   r   test_ctor_with_default_valuec  s   z*TestFuzzyEnum.test_ctor_with_default_valueN)	r   r   r   r   r   r   r   r   r   r   r   r   r   r~      s    +r~   )__doc__r|   unittest	traitletsr   r   r   r   r   r   r	   r   r   ru   rp   TestCaser   r~   r   r   r   r   <module>   s     C