
    _d4                     *   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ej
                        Z
 G d dej
                        Z G d d	ej
                        Zd
j                         Z G d dej                        Z G d dej                        Zy)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y)Color            N)__name__
__module____qualname__redgreenblueyellow     E/usr/lib/python3/dist-packages/traitlets/tests/test_traitlets_enum.pyr
   r
          
CEDFr   r
   c                       e Zd ZdZdZy)
OtherColorr   r   N)r   r   r   r   r   r   r   r   r   r      s    
CEr   r   c                       e Zd ZdZdZdZdZy)CSColorr   r   r   r   N)r   r   r   r   GreenBLUEYeLLoWr   r   r   r   r      r   r   r   zred Green  BLUE YeLLoWc                       e Zd Z G d de      Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)TestUseEnumc                        e Zd Z eed      Zy)TestUseEnum.Example
Color enumhelpNr   r   r   r   r
   colorr   r   r   Exampler$   ,   s    L1r   r*   c                     | j                         }t        j                  |_        | j	                  |j                  t        j                         y N)r*   r
   r   r)   assertEqualselfexamples     r   test_assign_enum_valuez"TestUseEnum.test_assign_enum_value/   s0    ,,.4r   c                 0   t         j                  j                         D cg c]  }| }}|D ]a  }| j                  |t                | j	                         }||_        | j                  |j
                  |       | j                  |t                c y c c}w r,   )r
   __members__valuesassertIsInstancer*   r)   r-   )r/   valueenum_valuesr0   s       r   test_assign_all_enum_valuesz'TestUseEnum.test_assign_all_enum_values4   s    */*;*;*B*B*DEuEE  	0E!!%/llnG!GMW]]E2!!%/	0 Fs   	Bc                     | j                         }| j                  t              5  t        j                  |_        d d d        y # 1 sw Y   y xY wr,   )r*   assertRaisesr   r   r   r)   r.   s     r   4test_assign_enum_value__with_other_enum_raises_errorz@TestUseEnum.test_assign_enum_value__with_other_enum_raises_error>   s=    ,,.z* 	-&,,GM	- 	- 	-s   AAc                     | j                         }d|_        | j                  |j                  t        j                         y )Nr   )r*   r)   r-   r
   r   r.   s     r   test_assign_enum_name_1z#TestUseEnum.test_assign_enum_name_1C   s,    ,,.		2r   c                    t         j                  j                         D cg c]  }|j                   }}|D ]  }| j	                  |t
               | j                         }t         j                  j                  |      }||_        | j                  |j                  |       | j                  |j                  j                  |        y c c}w r,   )r
   r3   r4   namer5   strr*   getr)   assertIsr-   )r/   enum_val
enum_namesr6   r0   
enum_values         r   test_assign_enum_value_namez'TestUseEnum.test_assign_enum_value_nameI   s     5:4E4E4L4L4NOhmmO
O 	8E!!%-llnG**..u5J!GMMM'--4W]]//7	8 Ps   Cc                     g d}|D ]^  }| j                         }||_        | j                  |j                  t               | j	                  t        |j                        |       ` y )N)z	Color.redzColor.greenz
Color.bluezColor.yellow)r*   r)   r5   r
   r-   r@   )r/   scoped_namesr6   r0   s       r   "test_assign_scoped_enum_value_namez.TestUseEnum.test_assign_scoped_enum_value_nameU   sU    Q! 	8EllnG!GM!!'--7S/7		8r   c                     g d}|D ]7  }| j                         }| j                  t              5  ||_        d d d        9 y # 1 sw Y   DxY w)N)UNKNOWN_COLORREDr   blue2)r*   r:   r   r)   )r/   bad_enum_namesr6   r0   s       r   -test_assign_bad_enum_value_name__raises_errorz9TestUseEnum.test_assign_bad_enum_value_name__raises_error^   sP    C# 	&EllnG"":. & %& &	&& &s   AA	c                     | j                         }d|_        t        j                  j                  |_        | j                  |j                  t        j                         y )Nr   )r*   r)   r
   r   r6   r-   r.   s     r   test_assign_enum_value_number_1z+TestUseEnum.test_assign_enum_value_number_1f   s;    ,,.				2r   c                 l   t         j                  j                         D cg c]  }|j                   }}|D ]u  }| j	                  |t
               | j                         }||_        | j	                  |j                  t                | j                  |j                  j                  |       w y c c}w r,   )	r
   r3   r4   r6   r5   intr*   r)   r-   )r/   rC   enum_numbersr6   r0   s        r   test_assign_enum_value_numberz)TestUseEnum.test_assign_enum_value_numberm   s     8=7H7H7O7O7QR8RR! 	9E!!%-llnG!GM!!'--7W]]00%8	9 Ss   B1c                 
   g d}|D ]n  }| j                  |t               t        t              j	                  |d       J | j                         }| j                  t              5  ||_        d d d        p y # 1 sw Y   {xY w)N)r      )	r5   rS   r   r
   select_by_numberr*   r:   r   r)   )r/   bad_numbersr6   r0   s       r   /test_assign_bad_enum_value_number__raises_errorz;TestUseEnum.test_assign_bad_enum_value_number__raises_errorx   s}       	&E!!%-5>225$?GGGllnG"":. & %& &		&& &s   &A99B	c                      G d dt               } |       }| j                  |j                  t        j                         y )Nc                       e Zd Z ee      Zy)=TestUseEnum.test_ctor_without_default_value.<locals>.Example2Nr(   r   r   r   Example2r^      s    ENEr   r_   )r   r-   r)   r
   r   r/   r_   r0   s      r   test_ctor_without_default_valuez+TestUseEnum.test_ctor_without_default_value   s/    	#y 	# *		2r   c                      G d dt               } |       }| j                  |j                  t        j                         y )Nc                   4    e Zd Z eeej
                        Zy)HTestUseEnum.test_ctor_with_default_value_as_enum_value.<locals>.Example2default_valueN)r   r   r   r   r
   r   r)   r   r   r   r_   rd      s    E=Er   r_   )r   r-   r)   r
   r   r`   s      r   *test_ctor_with_default_value_as_enum_valuez6TestUseEnum.test_ctor_with_default_value_as_enum_value   s/    	>y 	> *4r   c                      G d dt               } |       }| j                  |j                  t        j                         | j                  |j
                  t        j                         y )Nc                   6    e Zd Z eedd      Z eed      Zy)RTestUseEnum.test_ctor_with_default_value_none_and_not_allow_none.<locals>.Example2NFrf   
allow_nonere   r   r   r   r   r
   color1color2r   r   r   r_   rj      s    U$5IFU$7Fr   r_   )r   r-   rn   r
   r   ro   r`   s      r   4test_ctor_with_default_value_none_and_not_allow_nonez@TestUseEnum.test_ctor_with_default_value_none_and_not_allow_none   sG    	8y 	8 *33r   c                      G d dt               } |       }| j                  |j                  d        | j                  |j                  d        y )Nc                   6    e Zd Z eedd      Z eed      Zy)NTestUseEnum.test_ctor_with_default_value_none_and_allow_none.<locals>.Example2NTrk   rl   rm   r   r   r   r_   rs      s    U$4HFUt4Fr   r_   )r   rB   rn   ro   r`   s      r   0test_ctor_with_default_value_none_and_allow_nonez<TestUseEnum.test_ctor_with_default_value_none_and_allow_none   s;    	5y 	5 *gnnd+gnnd+r   c                      G d dt               } |       }d |_        d |_        | j                  |j                  t        j
                         | j                  |j                  t        j
                         y )Nc                   0    e Zd Z eed      Z ee      Zy)YTestUseEnum.test_assign_none_without_allow_none_resets_to_default_value.<locals>.Example2Frt   Nrm   r   r   r   r_   rx      s    Uu5FU^Fr   r_   )r   rn   ro   rB   r
   r   r`   s      r   ;test_assign_none_without_allow_none_resets_to_default_valuezGTestUseEnum.test_assign_none_without_allow_none_resets_to_default_value   sQ    	$y 	$ *gnneii0gnneii0r   c                 v     G d dt               } |       }d |_        | j                  |j                  d        y )Nc                        e Zd Z eed      Zy)>TestUseEnum.test_assign_none_to_enum_or_none.<locals>.Example2Trt   Nr(   r   r   r   r_   r|          Ed3Er   r_   )r   r)   rB   r`   s      r    test_assign_none_to_enum_or_nonez,TestUseEnum.test_assign_none_to_enum_or_none   s0    	4y 	4 *gmmT*r   c                      G d dt               } |       }| j                  t              5  d|_        d d d        y # 1 sw Y   y xY w)Nc                        e Zd Z eed      Zy)HTestUseEnum.test_assign_bad_value_with_to_enum_or_none.<locals>.Example2Trt   Nr(   r   r   r   r_   r      r}   r   r_   	BAD_VALUE)r   r:   r   r)   r`   s      r   *test_assign_bad_value_with_to_enum_or_nonez6TestUseEnum.test_assign_bad_value_with_to_enum_or_none   sA    	4y 	4 *z* 	('GM	( 	( 	(s	   =Ac                    t          G fddt              }t        dd      D ]  }d|z  }t        ||      }d|_         |j
                         }| j                  t        |j                  d            t              |j                  d             | j                  d|        |j                         }| j                  t        |j                  d	            t              |j                  d	             | j                  d
|       | j                  |d       d|_         |j
                         }| j                  t        |j                  d            t              |j                  d             | j                  d|        |j                         }| j                  t        |j                  d	            t              |j                  d	             | j                  d|       | j                  |d        y )Nc                   d    e Zd Z eW  d      Z eW  d      Z eW  d      Z e	e
d      Zy)&TestUseEnum.test_info.<locals>.ExampleFrt   N)r   r   r   r   enum1r   enum2r   enum3r   r   enum4)choicess   r   r*   r      s3    U3E#G>Eg%8EG6Er   r*   r   rX   zenum%sTz, zor None|z	or `None`z\b\\\bFNone)color_choicesr   rangegetattrrl   infor-   lensplitassertIninfo_rstassertNotRegexassertNotIn)r/   r*   iattrenumr   r   s         @r   	test_infozTestUseEnum.test_info   s   	7i 	7 q! 	1Aa<D7D)D"DO499;DSD!12CL$**TBRSMM)T* 4==?DSC13w<CQMM+t,i0#DO499;DSD!12CL$**TBRSVT* 4==?DSC13w<CQVT*i05	1r   N)r   r   r   r   r*   r1   r8   r;   r=   rF   rI   rO   rQ   rU   r[   ra   rg   rp   ru   ry   r~   r   r   r   r   r   r"   r"   )   sh    2) 25
0-
3
88&3	9&354,	1+(#1r   r"   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestFuzzyEnumc                     G d dt               } |       }t        D ]  }t        dt        |            D ]  }|d | }||_        | j                  |j                  |       |j                         |_        | j                  |j                  |       |j                         |_        | j                  |j                  |         y )Nc                        e Zd Z eed      Zy)GTestFuzzyEnum.test_search_all_prefixes__overwrite.<locals>.FuzzyExampler%   r&   Nr   r   r   r   r   r)   r   r   r   FuzzyExampler          m,?Er   r   r   r   r   r   r   r)   r-   upperlowerr/   r   r0   r)   wlenr6   s         r   #test_search_all_prefixes__overwritez1TestFuzzyEnum.test_search_all_prefixes__overwrite   s    	@9 	@ ." 	7EaU, 
7et %  6 %  6 %  6
7	7r   c                     G d dt               }t        D ]  }t        dt        |            D ]  }|d | } |       }||_        | j                  |j                  |        |       }|j                         |_        | j                  |j                  |        |       }|j                         |_        | j                  |j                  |         y )Nc                        e Zd Z eed      Zy)BTestFuzzyEnum.test_search_all_prefixes__ctor.<locals>.FuzzyExampler%   r&   Nr   r   r   r   r   r     r   r   r   r   r   )r/   r   r)   r   r6   r0   s         r   test_search_all_prefixes__ctorz,TestFuzzyEnum.test_search_all_prefixes__ctor  s    	@9 	@ # 	7EaU, 7et&. %  6&. %  6&. %  67	7r   c                 |    G d dt               } |       }t        D ]  }t        dd      D ]  }||d  }||_        | j	                  |j                  |       |j                         |_        | j	                  |j                  |       |j                         |_        | j	                  |j                  |         y )Nc                   "    e Zd Z eedd      Zy)ETestFuzzyEnum.test_search_substrings__overwrite.<locals>.FuzzyExampler%   Tr'   substring_matchingNr   r   r   r   r   r         m,SWXEr   r   r   r   )r   r   r   r)   r-   r   r   r   s         r   !test_search_substrings__overwritez/TestFuzzyEnum.test_search_substrings__overwrite  s    	Y9 	Y ." 	7Ea 
7de %  6 %  6 %  6
7	7r   c                 `    G d dt               }t        d   }dt        |      fD ]  }t        dt        |      dz
        D ]i  }||| } |       }||_        | j                  |j                  |        |       }|j                         |_        | j                  |j                  |       k  y )Nc                   "    e Zd Z eedd      Zy)@TestFuzzyEnum.test_search_substrings__ctor.<locals>.FuzzyExampler%   Tr   Nr   r   r   r   r   r   (  r   r   r   rW   r   r   )r   r   r   r   r)   r-   r   )r/   r   r)   endstartr6   r0   s          r   test_search_substrings__ctorz*TestFuzzyEnum.test_search_substrings__ctor'  s    	Y9 	Y b!E
# 
	7Cq#e*q.1 	7eC(&. %  6&. %  6	7
	7r   c                 *   d }  |dd             }| j                  t              5  d|_        d d d        | j                  t              5  d|_        d d d        | j                  t              5  d|_        d d d          |dd             }| j                  t              5  d|_        d d d        | j                  t              5  d|_        d d d          |dd             }| j                  t              5  d|_        d d d        | j                  t              5  d|_        d d d        | j                  t              5  d	|_        d d d        | j                  t              5  d
|_        d d d        | j                  t              5  d|_        d d d          |dd             }| j                  t              5  d|_        d d d        | j                  t              5  d|_        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xxY w# 1 sw Y   `xY w# 1 sw Y   9xY w# 1 sw Y   !xY w# 1 sw Y   	xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nc                 .      G  fddt               }|S )Nc                   (    e Zd Z eeW  W       Zy)PTestFuzzyEnum.test_assign_other_raises.<locals>.new_trait_class.<locals>.Examplecase_sensitiver   Nr   r   s   r   r*   r   :  s    !!#1'9r   r*   r   )r   r   r*   s   `` r   new_trait_classz?TestFuzzyEnum.test_assign_other_raises.<locals>.new_trait_class9  s    )  Nr   Fr    z	BAD COLORedTRedr   luelUE)r:   r   r)   )r/   r   r0   s      r   test_assign_other_raisesz&TestFuzzyEnum.test_assign_other_raises8  sT   	 R/5QSz* 	GM	z* 	('GM	(z* 	! GM	! Q/%PRz* 	GM	z* 	"!GM	" P/$OQz* 	GM	z* 	('GM	(z* 	$#GM	$z* 	"!GM	"z* 	"!GM	" Q/4PRz* 	GM	z* 	('GM	( 	(9	 		( 	(	! 	!	 		" 	"	 		( 	(	$ 	$	" 	"	" 	"	 		( 	(s   G=H
2H&H$H1?H>$I	I.I%I1I=,J	=H
HH!$H.1H;>III"%I.1I:=J	Jc                 P   d }t         D ]f  }  ||dd             }| j                  |j                  |         ||j                         dd             }| j                  |j                  |       h t         d   }  ||dd             }| j                  |j                  |       y )Nc                 2      G  fddt               }|S )Nc                   ,    e Zd Z eeW W  W       Zy)TTestFuzzyEnum.test_ctor_with_default_value.<locals>.new_trait_class.<locals>.Example)rf   r   r   Nr   )r   rf   r   s   r   r*   r   e  s    !!"/#1'9	r   r*   r   )rf   r   r   r*   s   ``` r   r   zCTestFuzzyEnum.test_ctor_with_default_value.<locals>.new_trait_classd  s     )  Nr   FrW   T)r   r-   r)   r   )r/   r   r)   r0   s       r   test_ctor_with_default_valuez*TestFuzzyEnum.test_ctor_with_default_valuec  s    		 # 	3E:oeUE:<GW]]E2BoekkmUEBDGW]]E2	3 b!5/%u57.r   N)	r   r   r   r   r   r   r   r   r   r   r   r   r   r      s!    7$7(7$7")(V/r   r   )__doc__r   unittest	traitletsr   r   r   r   r   r   r
   r   r   r   r   TestCaser"   r   r   r   r   <module>r      s      V VDII  
dii  )..0z1(## z1DM/H%% M/r   