3
da              "   @   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mZmZmZmZmZmZ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 G dd deZ G dd de j!Z"G dd	 d	eZ#G d
d de e j!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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$Z0G d$d% d%eZ1G d&d' d'e0Z2G d(d) d)eZ3G d*d+ d+e0Z4G d,d- d-eZ5G d.d/ d/e$Z6G d0d1 d1eZ7G d2d3 d3e$Z8ej9 $ ej:d4e;d5 G d6d7 d7eZ<W dQ R X G d8d9 d9e$Z=ej9 $ ej:d4e;d5 G d:d; d;eZ>W dQ R X G d<d= d=e$Z?d>d? Z@G d@dA dAeZAG dBdC dCe j!ZBG dDdE dEZCG dFdG dGeCZDG dHdI dIeDZEG dJdK dKZFeC ZGG dLdM dMeZHG dNdO dOe$ZIG dPdQ dQeZJG dRdS dSeJZKG dTdU dUeKZLG dVdW dWZMeJ ZNG dXdY dYeZOG dZd[ d[e$ZPG d\d] d]eZQG d^d_ d_eZRG d`da daeRZSedbeedcZTG ddde deeZUG dfdg dge j!ZVdhdi ZWG djdk dkeZXG dldm dme$ZYG dndo doeZZG dpdq dqe j!Z[G drds dseZ\G dtdu due j!Z]G dvdw dweZ^G dxdy dyeZ_G dzd{ d{e_Z`G d|d} d}e_ZaG d~d de j!ZbededdeddZcy
ecjd`eW n efk
r   Y nX ej9 $ ej:d4e;d5 G dd deZgW dQ R X G dd de"ZhG dd de"ZiG dd deZjG dd de j!ZkG dd de j!ZleG dd de j!ZmdS )    N)AnyBytesCBytesCFloatCIntComparisonModeColorDelegateFloatFont	HasTraitsInstanceIntListRangeRGBColorStrThisTrait
TraitError	TraitListTraitPrefixListTraitPrefixMapTuplepop_exception_handlerpush_exception_handler)requires_traitsuic               @   s$   e Zd Zdd Zdd Zdd ZdS )BaseTestc             C   s   || j _d S )N)objvalue)selfr    r!   :/tmp/pip-build-7vycvbft/traits/traits/tests/test_traits.pyassign2   s    zBaseTest.assignc             C   s   |S )Nr!   )r    r   r!   r!   r"   coerce5   s    zBaseTest.coercec             C   s   | j }| j}| j|j| xRt| jD ]D\}}||_| j|j| j| |t| jk r&| j|j	| j|  q&W x| j
D ]}| jt| j| qvW d S )N)r   _default_valueassertEqualr   	enumerate_good_valuesr$   len_mapped_valuesvalue__bad_valuesassertRaisesr   r#   )r    r   r   ir!   r!   r"   test_assignment8   s    zBaseTest.test_assignmentN)__name__
__module____qualname__r#   r$   r/   r!   r!   r!   r"   r   1   s   r   c               @   s.   e Zd Zdd Zdd Zdd Zd
dd	ZdS )
test_base2c             C   s   |||< d S )Nr!   )r    listindexr   r!   r!   r"   indexed_assignN   s    ztest_base2.indexed_assignc             C   s   ||||< d S )Nr!   )r    r4   index1index2r   r!   r!   r"   indexed_range_assignQ   s    ztest_base2.indexed_range_assignc             C   s   |||||< d S )Nr!   )r    r4   r7   r8   stepr   r!   r!   r"   extended_slice_assignT   s    z test_base2.extended_slice_assignNc       
      C   s   | j }|}| jt||| |d kr(|}d}	xX|D ]P}t||| | jt||||	  |d k	rz| jt||d ||	  |	d7 }	q2W x|D ]}| jtt||| qW d S )Nr   _   )r   r&   getattrsetattrr-   r   )
r    namedefault_valueZgood_valuesZ
bad_valuesZactual_valuesZmapped_valuesr   r   r.   r!   r!   r"   check_valuesY   s    	

ztest_base2.check_values)NN)r0   r1   r2   r6   r9   r;   rB   r!   r!   r!   r"   r3   M   s
    r3   c               @   s   e Zd ZeZdS )AnyTraitN)r0   r1   r2   r   r   r!   r!   r!   r"   rC   z   s   rC   c               @   s:   e Zd Zdd ZdZddddgddid	ddgZg Zg ZdS )
AnyTraitTestc             C   s   t  | _d S )N)rC   r   )r    r!   r!   r"   setUp   s    zAnyTraitTest.setUpNg      $@s   tenten
   y              ?)rG   )r0   r1   r2   rE   r%   r(   r*   r,   r!   r!   r!   r"   rD   ~   s
   rD   c               @   s   e Zd ZedZdS )CoercibleIntTraitc   N)r0   r1   r2   r   r   r!   r!   r!   r"   rH      s   rH   c               @   s   e Zd ZedZdS )IntTraitrI   N)r0   r1   r2   r   r   r!   r!   r!   r"   rJ      s   rJ   c               @   s\   e Zd Zdd ZdZdddddddd	gZd
ddddddddddgddidddgZdd ZdS )CoercibleIntTestc             C   s   t  | _d S )N)rH   r   )r    r!   r!   r"   rE      s    zCoercibleIntTest.setUprI   rG   g333333$@10z-10s   10s   -1010Lz-10Lz10.1z-10.1s   10Ls   -10Ls   10.1s   -10.1rF   s   tenNy              ?c          	   C   s    yt |S    t t|S d S )N)intfloat)r    r   r!   r!   r"   r$      s    zCoercibleIntTest.coerceig333333$)rG   )r0   r1   r2   rE   r%   r(   r,   r$   r!   r!   r!   r"   rK      s4   rK   c               @   s   e Zd Zdd ZdZddgZdddgddidddd	dd
dddddddddddgZyddlZW n e	k
rp   Y n<X ej
ejdejdejdejdejdejdg dd ZdS )IntTestc             C   s   t  | _d S )N)rJ   r   )r    r!   r!   r"   rE      s    zIntTest.setUprI   rG   rF   s   tenNy              ?g333333$@rM   z-10Lz10.1z-10.1s   10Ls   -10Ls   10.1s   -10.1rL   z-10s   10s   -10r   c          	   C   s    yt |S    t t|S d S )N)rN   rO   )r    r   r!   r!   r"   r$      s    zIntTest.coercei)rG   g333333$iii)r0   r1   r2   rE   r%   r(   r,   numpynpImportErrorextendZint64Zint32int_r$   r!   r!   r!   r"   rP      sH   rP   c               @   s   e Zd ZedZdS )CoercibleFloatTraitg     X@N)r0   r1   r2   r   r   r!   r!   r!   r"   rV      s   rV   c               @   s   e Zd ZedZdS )
FloatTraitg     X@N)r0   r1   r2   r
   r   r!   r!   r!   r"   rW      s   rW   c               @   s\   e Zd Zdd ZdZdddddddd	d
dddgZdddddddgddidddgZdd ZdS )CoercibleFloatTestc             C   s   t  | _d S )N)rV   r   )r    r!   r!   r"   rE      s    zCoercibleFloatTest.setUpg     X@rG   g333333$@rL   z-10z10.1z-10.1s   10s   -10s   10.1s   -10.1rM   z-10Ls   10Ls   -10LrF   s   tenNy              ?c             C   s   t |S )N)rO   )r    r   r!   r!   r"   r$     s    zCoercibleFloatTest.coerceig333333$)rG   )r0   r1   r2   rE   r%   r(   r,   r$   r!   r!   r!   r"   rX      s4   rX   c               @   s\   e Zd Zdd ZdZddddgZdddgddiddd	d
dddddddddddgZdd ZdS )	FloatTestc             C   s   t  | _d S )N)rW   r   )r    r!   r!   r"   rE     s    zFloatTest.setUpg     X@rG   g333333$@rF   s   tenNy              ?rL   z-10rM   z-10Lz10.1z-10.1s   10s   -10s   10Ls   -10Ls   10.1s   -10.1c             C   s   t |S )N)rO   )r    r   r!   r!   r"   r$   9  s    zFloatTest.coerceig333333$)rG   )r0   r1   r2   rE   r%   r(   r,   r$   r!   r!   r!   r"   rY     s.   rY   c               @   s   e Zd ZedZdS )ImaginaryValueTraitg     X@y             X@Ny     X@     X)r0   r1   r2   r   r   r!   r!   r!   r"   rZ   @  s   rZ   c               @   s^   e Zd Zdd ZdZddddddd	d
dddddddddgZddddgddiddgZdd ZdS )ImaginaryValueTestc             C   s   t  | _d S )N)rZ   r   )r    r!   r!   r"   rE   E  s    zImaginaryValueTest.setUpg     X@y             X@rG   g333333$@rL   z-10z10.1z-10.1y              $@y        333333$@Z10jz10+10jz10-10js   10Lz-10LrF   Nc             C   s   t |S )N)complex)r    r   r!   r!   r"   r$   ^  s    zImaginaryValueTest.coercey     X@     Xig333333$y      $@      $@y      $@      $y333333$@333333$@y333333$@333333$)rG   )r0   r1   r2   rE   r%   r(   r,   r$   r!   r!   r!   r"   r[   D  s*   r[   c               @   s   e Zd ZedZdS )StringTraitstringN)r0   r1   r2   r   r   r!   r!   r!   r"   r]   b  s   r]   c               @   sR   e Zd Zdd ZdZdddddddd	d
ddddgdgddiddgZg Zdd ZdS )
StringTestc             C   s   t  | _d S )N)r]   r   )r    r!   r!   r"   rE   h  s    zStringTest.setUpr^   rG   g333333$@rL   z-10rM   z-10Lz10.1z-10.1y              ?rF   Nc             C   s   t |S )N)str)r    r   r!   r!   r"   r$     s    zStringTest.coerceig333333$)rG   )r0   r1   r2   rE   r%   r(   r,   r$   r!   r!   r!   r"   r_   f  s*   r_   c               @   s   e Zd ZedZdS )
BytesTraits   bytesN)r0   r1   r2   r   r   r!   r!   r!   r"   ra     s   ra   c               @   sP   e Zd Zdd ZdZdddgZddddgdgd	gd
didddddgZdd ZdS )	BytesTestc             C   s   t  | _d S )N)ra   r   )r    r!   r!   r"   rE     s    zBytesTest.setUps   bytes    s   10s   -10rG   g333333$@r   s   tenNT r^   c             C   s   t |S )N)bytes)r    r   r!   r!   r"   r$     s    zBytesTest.coercei)rc   )r0   r1   r2   rE   r%   r(   r,   r$   r!   r!   r!   r"   rb     s    
rb   c               @   s   e Zd ZedZdS )CoercibleBytesTraits   bytesN)r0   r1   r2   r   r   r!   r!   r!   r"   rf     s   rf   c               @   s   e Zd Zdd ZdZdddddgdedgddid	g	Zd
ddddgdgdgdddiedgdgdddiedgddiddgZdd ZdS )CoercibleBytesTestc             C   s   t  | _d S )N)rf   r   )r    r!   r!   r"   rE     s    zCoercibleBytesTest.setUps   bytesrc   s   10s   -10rG   ZfooTrd   r^   g333333$@   s   tenNc             C   s   t |S )N)re   )r    r   r!   r!   r"   r$     s    zCoercibleBytesTest.coerce)rG   ii)ri   ii)rh   )rc   )	r0   r1   r2   rE   r%   setr(   r,   r$   r!   r!   r!   r"   rg     s:   rg   c            	   @   s$   e Zd ZeddddddddgZd	S )
	EnumTraitr=   one   two   threeg@z	four.fourN)r0   r1   r2   r   r   r!   r!   r!   r"   rk     s   rk   c               @   s8   e Zd Zdd ZdZddddddd	d
gZddddgZdS )EnumTestc             C   s   t  | _d S )N)rk   r   )r    r!   r!   r"   rE     s    zEnumTest.setUpr=   rl   rm   rn   ro   rp   g@z	four.fourr   Zzero   N)r0   r1   r2   rE   r%   r(   r,   r!   r!   r!   r"   rq     s   rq   c               @   s   e Zd ZedddddZdS )MappedTraitrl   r=   rm   ro   )rl   rn   rp   N)r0   r1   r2   r   r   r!   r!   r!   r"   rs     s   rs   c               @   sF   e Zd Zdd ZdZdddgZdddgZd	ddddgdddid
gZd
S )
MappedTestc             C   s   t  | _d S )N)rs   r   )r    r!   r!   r"   rE     s    zMappedTest.setUprl   rn   rp   r=   rm   ro   fourN)r=   )r0   r1   r2   rE   r%   r(   r*   r,   r!   r!   r!   r"   rt     s
   

rt   ignore)actioncategoryc               @   s   e Zd ZededddZdS )PrefixListTraitrl   rn   rp   N)r0   r1   r2   r   r   r   r!   r!   r!   r"   ry     s   ry   c            	   @   sD   e Zd Zdd ZdZddddddd	d
dg	ZdddddgZdd ZdS )PrefixListTestc             C   s   t  | _d S )N)ry   r   )r    r!   r!   r"   rE     s    zPrefixListTest.setUprl   oontwrn   ththrthrerp   tzone z twor=   Nc             C   s   ddddd|d d  S )Nrl   rn   rp   )r{   r|   r}   r~   rm   r!   )r    r   r!   r!   r"   r$     s    zPrefixListTest.coerce)r0   r1   r2   rE   r%   r(   r,   r$   r!   r!   r!   r"   rz     s   rz   c               @   s"   e Zd ZededdddZdS )PrefixMapTraitrl   r=   rm   ro   )rl   rn   rp   N)r0   r1   r2   r   r   r   r!   r!   r!   r"   r     s   r   c            	   @   sX   e Zd Zdd ZdZddddddd	d
dg	ZddddddddgZdddddgZdd ZdS )PrefixMapTestc             C   s   t  | _d S )N)r   r   )r    r!   r!   r"   rE     s    zPrefixMapTest.setUprl   r{   r|   r}   rn   r~   r   r   rp   r=   rm   ro   r   zone z twoNc             C   s   ddddd|d d  S )Nrl   rn   rp   )r{   r|   r}   r~   rm   r!   )r    r   r!   r!   r"   r$   %  s    zPrefixMapTest.coerce)	r0   r1   r2   rE   r%   r(   r*   r,   r$   r!   r!   r!   r"   r     s   r   c             C   s   t |tstdt|S )zg A function that validates the value is a str and then converts
    it to an int using its length.
    zNot a string!)
isinstancer`   r   r)   )objectr@   r   r!   r!   r"   str_cast_to_int+  s    
r   c            	   @   s$   e Zd ZedddddddieZdS )TraitWithMappingAndCallableZwhiter   redr=   i  N)r   r   r   )r0   r1   r2   r   r   r   r!   r!   r!   r"   r   4  s   r   c               @   s(   e Zd ZdZdd Zdd Zdd ZdS )	TestTraitWithMappingAndCallablea   Test that demonstrates a usage of Trait where TraitMap is used but it
    cannot be replaced with Map. The callable causes the key value to be
    changed to match the mapped value.

    e.g. this would not work:

        value = Union(
            Map({"white": 0, "red": 1, (0,0,0): 999}),
            NewTraitType(),
            default_value="white",
        )

        where NewTraitType is a subclass of TraitType with ``validate`` simply
        calls str_cast_to_int
    c             C   s&   t  }| j|jd | j|jd d S )N   )r   r&   r   r+   )r    r   r!   r!   r"   test_trait_defaultN  s    z2TestTraitWithMappingAndCallable.test_trait_defaultc             C   s*   t dd}| j|jd | j|jd d S )Nr   )r   ro   )r   r&   r   r+   )r    r   r!   r!   r"   !test_trait_set_value_use_callableU  s    
zATestTraitWithMappingAndCallable.test_trait_set_value_use_callablec             C   s*   t dd}| j|jd | j|jd d S )Nr   )r   i  )r   r   r   )r   r   r   )r   r&   r   r+   )r    r   r!   r!   r"    test_trait_set_value_use_mapping]  s    
z@TestTraitWithMappingAndCallable.test_trait_set_value_use_mappingN)r0   r1   r2   __doc__r   r   r   r!   r!   r!   r"   r   =  s   r   c               @   s   e Zd ZdS )OTraitTest1N)r0   r1   r2   r!   r!   r!   r"   r   h  s   r   c               @   s   e Zd ZdS )OTraitTest2N)r0   r1   r2   r!   r!   r!   r"   r   l  s   r   c               @   s   e Zd ZdS )OTraitTest3N)r0   r1   r2   r!   r!   r!   r"   r   p  s   r   c               @   s   e Zd ZdS )OBadTraitTestN)r0   r1   r2   r!   r!   r!   r"   r   t  s   r   c               @   s   e Zd ZeeZdS )OldInstanceTraitN)r0   r1   r2   r   otrait_test1r   r!   r!   r!   r"   r   {  s   r   c               @   sP   e Zd Zdd ZeZee e e dgZ	dddeee
 ddegefd	eigZdS )
OldInstanceTestc             C   s   t  | _d S )N)r   r   )r    r!   r!   r"   rE     s    zOldInstanceTest.setUpNr   g        y                s   bytesr^   data)r0   r1   r2   rE   r   r%   r   r   r   r(   r   r,   r!   r!   r!   r"   r     s$   r   c               @   s   e Zd ZdS )NTraitTest1N)r0   r1   r2   r!   r!   r!   r"   r     s   r   c               @   s   e Zd ZdS )NTraitTest2N)r0   r1   r2   r!   r!   r!   r"   r     s   r   c               @   s   e Zd ZdS )NTraitTest3N)r0   r1   r2   r!   r!   r!   r"   r     s   r   c               @   s   e Zd ZdS )NBadTraitTestN)r0   r1   r2   r!   r!   r!   r"   r     s   r   c               @   s   e Zd ZeeZdS )NewInstanceTraitN)r0   r1   r2   r   ntrait_test1r   r!   r!   r!   r"   r     s   r   c               @   sP   e Zd Zdd ZeZee e e dgZ	dddeee
 ddegefd	eigZdS )
NewInstanceTestc             C   s   t  | _d S )N)r   r   )r    r!   r!   r"   rE     s    zNewInstanceTest.setUpNr   g        y                s   bytesr^   r   )r0   r1   r2   rE   r   r%   r   r   r   r(   r   r,   r!   r!   r!   r"   r     s$   r   c               @   s   e Zd ZdS )FactoryClassN)r0   r1   r2   r!   r!   r!   r"   r     s   r   c               @   s   e Zd Zeef ZdS )ConsumerClassN)r0   r1   r2   r   r   xr!   r!   r!   r"   r     s   r   c               @   s   e Zd Ze ZdS )ConsumerSubclassN)r0   r1   r2   r   r   r!   r!   r!   r"   r     s   r   rd   ztraits.has_traits.HasTraitsc               @   s   e Zd ZeZeeZdS )DummyN)r0   r1   r2   embedded_instance_traitr   r   xlr!   r!   r!   r"   r     s   r   c               @   s    e Zd ZdZdd Zdd ZdS )RegressionTestz' Check that fixed bugs stay fixed.
    c             C   s   t  }|j dS )zd Test that we can provide an instance as a default in the definition
        of a subclass.
        N)r   r   )r    r   r!   r!   r"   !test_factory_subclass_no_segfault  s    z0RegressionTest.test_factory_subclass_no_segfaultc             C   s   t  }t g|_d|_dS )z Test that a deferred Instance() embedded in a TraitCompound handler
        and then a list will not replace the validate method for the outermost
        trait.
        OKN)r   r   r   r   )r    dr!   r!   r"   test_trait_compound_instance  s    
z+RegressionTest.test_trait_compound_instanceN)r0   r1   r2   r   r   r   r!   r!   r!   r"   r     s   r   c          	   C   s6   y t | |d dkrt|S W n   Y nX td S )Nrm   r=   )rO   rN   r   )r   r@   r   r!   r!   r"   odd_integer  s    r   c               @   s   e Zd ZedeZdS )OddIntegerTraitrI   N)r0   r1   r2   r   r   r   r!   r!   r!   r"   r     s   r   c               @   sh   e Zd Zdd ZdZdddddd	d
ddddddddddddddddd gZddd!ddddgd"ddig	ZdS )#OddIntegerTestc             C   s   t  | _d S )N)r   r   )r    r!   r!   r"   rE     s    zOddIntegerTest.setUprI   r=   ro   r      	   iɚ;g      ?g      @g      @g      @g      "@g  dAr   rm   y              ?N1iii6eg      g      g      g      g      "g  d)r=   )r0   r1   r2   rE   r%   r(   r,   r!   r!   r!   r"   r     s6   r   c               @   s4   e Zd ZeZeZeZeZdd Zdd Z	dd Z
dS )NotifierTraitsc             C   s2   |dkr|  j d7  _ n|dkr.|  jd7  _d S )Nvalue1r=   value2)value1_countvalue2_count)r    
trait_nameoldnewr!   r!   r"   _anytrait_changed4  s    z NotifierTraits._anytrait_changedc             C   s   |  j d7  _ d S )Nr=   )r   )r    r   r   r!   r!   r"   _value1_changed:  s    zNotifierTraits._value1_changedc             C   s   |  j d7  _ d S )Nr=   )r   )r    r   r   r!   r!   r"   _value2_changed=  s    zNotifierTraits._value2_changedN)r0   r1   r2   r   r   r   r   r   r   r   r   r!   r!   r!   r"   r   .  s   r   c               @   sD   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S )NotifierTestsc             C   s(   t   }| _d|_d|_d|_d|_d S )Nr   )r   r   r   r   r   r   )r    r   r!   r!   r"   rE   B  s
    zNotifierTests.setUpc             C   s>   | j }|j| jddd |j| jddd |j| jdd d S )Nr   T)remover   )r   on_trait_changeon_value1_changedon_value2_changedon_anytrait_changed)r    r   r!   r!   r"   tearDownI  s    zNotifierTests.tearDownc             C   s6   |dkr| j  jd7  _n|dkr2| j  jd7  _d S )Nr   r=   r   )r   r   r   )r    r   r   r   r   r!   r!   r"   r   O  s    z!NotifierTests.on_anytrait_changedc             C   s   | j  jd7  _d S )Nr=   )r   r   )r    r!   r!   r"   r   U  s    zNotifierTests.on_value1_changedc             C   s   | j  jd7  _d S )Nr=   )r   r   )r    r!   r!   r"   r   X  s    zNotifierTests.on_value2_changedc             C   sN   | j }d|_| j|jd | j|jd d|_| j|jd | j|jd d S )Nr=   rm   r   )r   r   r&   r   r   r   )r    r   r!   r!   r"   test_simple[  s    zNotifierTests.test_simplec             C   s  | j }|j| jd d|_| j|jd | j|jd |j| jd d|_| j|jd | j|jd |j| j	 d|_| j|jd | j|jd d|_| j|jd | j|jd d|_| j|jd | j|jd |j| jddd	 d|_| j|jd
 | j|jd |j| jddd	 d|_| j|jd
 | j|jd
 |j| j	dd	 d|_| j|jd | j|jd
 d|_| j|jd | j|jd d S )Nr   r=   ro   r   r   rm   r   T)r   rG   rr      )
r   r   r   r   r&   r   r   r   r   r   )r    r   r!   r!   r"   test_complexf  sD    zNotifierTests.test_complexN)
r0   r1   r2   rE   r   r   r   r   r   r   r!   r!   r!   r"   r   A  s   r   c               @   s   e Zd ZedZdd ZdS )RaisesArgumentlessRuntimeErrorr   c             C   s   t d S )N)RuntimeError)r    r!   r!   r"   
_x_changed  s    z)RaisesArgumentlessRuntimeError._x_changedN)r0   r1   r2   r   r   r   r!   r!   r!   r"   r     s   r   c               @   s$   e Zd Zdd Zdd Zdd ZdS )TestRuntimeErrorc             C   s   t dd dd d S )Nc              W   s   d S )Nr!   )argsr!   r!   r"   <lambda>  s    z(TestRuntimeError.setUp.<locals>.<lambda>T)Zreraise_exceptions)r   )r    r!   r!   r"   rE     s    zTestRuntimeError.setUpc             C   s
   t   d S )N)r   )r    r!   r!   r"   r     s    zTestRuntimeError.tearDownc             C   s   t  }| jtt|dd d S )Nr   r   )r   r-   r   r?   )r    fr!   r!   r"   test_runtime_error  s    z#TestRuntimeError.test_runtime_errorN)r0   r1   r2   rE   r   r   r!   r!   r!   r"   r     s   r   c               @   s   e Zd ZedZdS )DelegatedFloatTraitg     X@N)r0   r1   r2   r   r   r!   r!   r!   r"   r     s   r   c               @   s   e Zd ZedZee ZdS )DelegateTraitdelegateN)r0   r1   r2   r	   r   r   r   r   r!   r!   r!   r"   r     s   r   c               @   s   e Zd Zee ZdS )DelegateTrait2N)r0   r1   r2   r   r   r   r!   r!   r!   r"   r     s   r   c               @   s   e Zd Zee ZdS )DelegateTrait3N)r0   r1   r2   r   r   r   r!   r!   r!   r"   r     s   r   c               @   s   e Zd Zdd ZdS )DelegateTestsc             C   sj  t  }| j|jd |j}|j}|j}d|_| j|jd d|_| j|jd | j|jd d|_| j|jd | j|jd | j|jd 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|jd | j|jd |`| j|jd | j|jd | j|jd | j|jd d S )Ng     X@g      @g       @g      ?g        )r   r&   r   r   )r    r   Zparent1Zparent2Zparent3r!   r!   r"   test_delegation  sB    zDelegateTests.test_delegationN)r0   r1   r2   r   r!   r!   r!   r"   r     s   r   r=   ro   c            
   @   s   e Zd ZededdeddZededdedddddZededdeddd	d
ddZ	edede
edZeddede
eZdS )complex_valuer=   r   rl   rn   rp   ru   fiverm   ro   rr   )rl   rn   rp   ru   r   rG   Nr   r   )r0   r1   r2   r   r   num1r   Znum2r   Znum3r   slownum4num5r!   r!   r!   r"   r     s   r   c               @   s$   e Zd Zdd Zdd Zdd ZdS )test_complex_valuec             C   s   t  | _d S )N)r   r   )r    r!   r!   r"   rE     s    ztest_complex_value.setUpc             C   s^   | j ddddddddddddg
dddd	d
dddddgdddid gddddddddddg
 d S )Nr   r=   rm   ro   rr   r   r      06z-6g        g      @r   r   r   r   ig      )r=   r   r   r   r   r   )rB   )r    r!   r!   r"   	test_num1
  s$    ztest_complex_value.test_num1c             C   s\   | j dddddddddf gdddddd	g | j d
ddddddddf gdddddd	g dS )zb Check that enumerated values can be combined with nested
        TraitCompound handlers.
        r   r=   rm   ro   rG   r   rr   r      r   Nr   r   r   r   r   r   r   r   r   r   )rB   )r    r!   r!   r"   test_enum_exceptions!  s    (z'test_complex_value.test_enum_exceptionsN)r0   r1   r2   rE   r   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d Z	dd Z
dd Zdd ZdS )test_list_valuec             C   s8   | j t G dd dt}W d Q R X | | _d | _d S )Nc               @   sT   e Zd ZedgeeddddgddZedgeeddddgdddZe ZdS )z)test_list_value.setUp.<locals>.list_valuerm   r=   ro   rr   )maxlen)Zminlenr   N)	r0   r1   r2   r   r   list1list2r   alistr!   r!   r!   r"   
list_value1  s     r   )ZassertWarnsDeprecationWarningr   r   
last_event)r    r   r!   r!   r"   rE   .  s    ztest_list_value.setUpc             C   s   | ` d S )N)r   )r    r!   r!   r"   r   <  s    ztest_list_value.tearDownc             C   s   |||= d S )Nr!   )r    r4   r7   r8   r!   r!   r"   	del_range?  s    ztest_list_value.del_rangec             C   s   ||||= d S )Nr!   )r    r4   r7   r8   r:   r!   r!   r"   del_extended_sliceB  s    z"test_list_value.del_extended_slicec          
   C   s  | j |dg | j t|d |jd | j t|d d|d< | j |d d | j t|d d|d< | j |d d | j t|d | jt| j|dd | jt|jd | jt|jdddg |jddg | j |ddddg | jt|jd | jt| j|ddddddg |d= | j |dddg |d= | j |ddg ddg|d d< | j |ddddg | jt| j	|dddg |dd= | j |dg | jt| j	|ddddg d S )Nrm   r=   ro   r   r   rr   r   )
r&   r)   appendr-   r   r6   rT   
ValueErrorr;   r9   )r    r4   r!   r!   r"   
check_listE  s<    

ztest_list_value.check_listc             C   s   | j | jj d S )N)r   r   r   )r    r!   r!   r"   
test_list1h  s    ztest_list_value.test_list1c             C   sD   | j | jj | jt| j| jjdd | jt| j| jjddd d S )Nr   r=   rr   r   r   r   )r   r   r   r-   r   r   r   )r    r!   r!   r"   
test_list2k  s    ztest_list_value.test_list2c             C   s4   | j | jj| | j | jj| | j | jj| d S )N)r&   r   r5   removedadded)r    r5   r   r   r!   r!   r"   assertLastTraitListEventEqualr  s    z-test_list_value.assertLastTraitListEventEqualc             C   sH  ddddg| j _| j j| jd | j jd= | jddgg  | j jjd | jdg dg dd	g| j jdd< | jdddgdd	g ddg| j jd
d< | jddd	gddg ddg| j jddd< | jdddgddg ddg| j jddd< | jdddgddg | j}g | j jdd
< | j| j| ddg| j jddd< | jtdddddgddg | j jddd= | jtdddddgg  ddddg| j _| j jdd= | jdddgg  ddd	dg| j jd
d< | jdg ddd	dg | j jd
d= | jdddgg  | j jdd= | jdd	dgg  | j jd
d
= | jdddgg  d
S )z) Record TraitListEvent behavior.
        r=   rm   ro   rr   Zalist_itemsr   r   r   r   N   r   rG   r   )	r   r   r   _record_trait_list_eventr   r   r   assertIsslice)r    Z	old_eventr!   r!   r"   test_trait_list_eventw  sB    
z%test_list_value.test_trait_list_eventc             C   s
   || _ d S )N)r   )r    r   r@   r   r   r!   r!   r"   r     s    z(test_list_value._record_trait_list_eventN)r0   r1   r2   rE   r   r   r   r   r   r   r   r   r   r!   r!   r!   r"   r   -  s   #(r   c               @   s   e Zd Ze ZeddZdS )	ThisDummyF)
allow_noneN)r0   r1   r2   r   allows_nonedisallows_noner!   r!   r!   r"   r     s   r   c               @   s   e Zd Zdd Zdd ZdS )TestThisc          	   C   s   t  }| j|j d |_t  |_| j|j d |_| j|j | j|j t  |_| j|j | jt d |_W d Q R X | j|j d S )N)r   assertIsNoner   ZassertIsNotNoner   r-   r   )r    r   r!   r!   r"   test_this_none  s    zTestThis.test_this_nonec          	   C   s4   t  }| jt t |_W d Q R X | j|j d S )N)r   r-   r   r   r   r  )r    r   r!   r!   r"   test_this_other_class  s    zTestThis.test_this_other_classN)r0   r1   r2   r  r  r!   r!   r!   r"   r    s   r  c               @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )ComparisonModeTestsc                s   G dd dt }| }g  |j fddd dddg}| jt d	 ||_| jt d ||_| jt d dddg|_| jt d d
ddg|_| jt d
 d S )Nc               @   s   e Zd ZeejdZdS )zHComparisonModeTests.test_comparison_mode_none.<locals>.HasComparisonMode)comparison_modeN)r0   r1   r2   r   r   nonebarr!   r!   r!   r"   HasComparisonMode  s   r	  c                  s
    j d S )N)r   r!   )eventsr!   r"   r     s    z?ComparisonModeTests.test_comparison_mode_none.<locals>.<lambda>r  r=   rm   ro   r   rr   r   r   )r   r   r&   r)   r  )r    r	  old_compare	some_listr!   )r
  r"   test_comparison_mode_none  s    
z-ComparisonModeTests.test_comparison_mode_nonec                s   G dd dt }| }g  |j fddd dddg}| jt d	 ||_| jt d ||_| jt d dddg|_| jt d d
ddg|_| jt d d S )Nc               @   s   e Zd ZeejdZdS )zLComparisonModeTests.test_comparison_mode_identity.<locals>.HasComparisonMode)r  N)r0   r1   r2   r   r   identityr  r!   r!   r!   r"   r	    s   r	  c                  s
    j d S )N)r   r!   )r
  r!   r"   r     s    zCComparisonModeTests.test_comparison_mode_identity.<locals>.<lambda>r  r=   rm   ro   r   rr   r   r   )r   r   r&   r)   r  )r    r	  r  r  r!   )r
  r"   test_comparison_mode_identity  s    
z1ComparisonModeTests.test_comparison_mode_identityc                s   G dd dt }| }g  |j fddd dddg}| jt d	 ||_| jt d ||_| jt d dddg|_| jt d d
ddg|_| jt d d S )Nc               @   s   e Zd ZeejdZdS )zLComparisonModeTests.test_comparison_mode_equality.<locals>.HasComparisonMode)r  N)r0   r1   r2   r   r   Zequalityr  r!   r!   r!   r"   r	    s   r	  c                  s
    j d S )N)r   r!   )r
  r!   r"   r     s    zCComparisonModeTests.test_comparison_mode_equality.<locals>.<lambda>r  r=   rm   ro   r   rr   r   r   )r   r   r&   r)   r  )r    r	  r  r  r!   )r
  r"   test_comparison_mode_equality  s    
z1ComparisonModeTests.test_comparison_mode_equalityc                s*  t jdd"}t jdt G dd dt}W d Q R X | jt|d |d }| j|jt | j	dt
|j tjd	\}}}| j	||j | }g  |j fd
dd dddg}| jt d ||_| jt d ||_| jt d dddg|_| jt d dddg|_| jt d d S )NT)recordalwaysc               @   s   e Zd ZeddZdS )zCComparisonModeTests.test_rich_compare_false.<locals>.OldRichCompareF)rich_compareN)r0   r1   r2   r   r  r!   r!   r!   r"   OldRichCompare  s   r  r=   r   z+'rich_compare' metadata has been deprecated.c                  s
    j d S )N)r   r!   )r
  r!   r"   r     s    z=ComparisonModeTests.test_rich_compare_false.<locals>.<lambda>r  rm   ro   rr   r   r   )warningscatch_warningssimplefilterr   r   r&   r)   r   rx   assertInr`   messager0   
rpartitionfilenamer   r  )r    	warn_msgsr  warn_msgr<   this_moduler  r  r!   )r
  r"   test_rich_compare_false  s0    
z+ComparisonModeTests.test_rich_compare_falsec                s*  t jdd"}t jdt G dd dt}W d Q R X | jt|d |d }| j|jt | j	dt
|j tjd	\}}}| j	||j | }g  |j fd
dd dddg}| jt d ||_| jt d ||_| jt d dddg|_| jt d dddg|_| jt d d S )NT)r  r  c               @   s   e Zd ZeddZdS )zBComparisonModeTests.test_rich_compare_true.<locals>.OldRichCompareT)r  N)r0   r1   r2   r   r  r!   r!   r!   r"   r  %  s   r  r=   r   z+'rich_compare' metadata has been deprecatedr  c                  s
    j d S )N)r   r!   )r
  r!   r"   r   6  s    z<ComparisonModeTests.test_rich_compare_true.<locals>.<lambda>r  rm   ro   rr   r   r   )r  r  r  r   r   r&   r)   r   rx   r  r`   r  r0   r  r  r   r  )r    r  r  r  r<   r  r  r  r!   )r
  r"   test_rich_compare_true!  s0    
z*ComparisonModeTests.test_rich_compare_trueN)r0   r1   r2   r  r  r  r   r!  r!   r!   r!   r"   r    s
   #r  c               @   s$   e Zd Zdd Zdd Zdd ZdS )TestDeprecatedTraitsc          	   C   s"   | j td t  W d Q R X d S )Nz'Color' in 'traits')assertWarnsRegexr   r   )r    r!   r!   r"   test_color_deprecatedH  s    z*TestDeprecatedTraits.test_color_deprecatedc          	   C   s"   | j td t  W d Q R X d S )Nz'RGBColor' in 'traits')r#  r   r   )r    r!   r!   r"   test_rgb_color_deprecatedL  s    z.TestDeprecatedTraits.test_rgb_color_deprecatedc          	   C   s"   | j td t  W d Q R X d S )Nz'Font' in 'traits')r#  r   r   )r    r!   r!   r"   test_font_deprecatedQ  s    z)TestDeprecatedTraits.test_font_deprecatedN)r0   r1   r2   r$  r%  r&  r!   r!   r!   r"   r"  E  s   r"  r   r   )nZunittestr  Z
traits.apir   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Z$traits.testing.optional_dependenciesr   r   r   ZTestCaser3   rC   rD   rH   rJ   rK   rP   rV   rW   rX   rY   rZ   r[   r]   r_   ra   rb   rf   rg   rk   rq   rs   rt   r  filterwarningsr   ry   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   handlerZfast_validateAttributeErrorr   r   r   r   r  r  r"  r!   r!   r!   r"   <module>   s   p-)6%#)


		+
"U/

'v 