3
dก	  ใ               @   s2   d dl Z d dlmZmZmZ G dd de jZdS )้    N)ฺConstantฺ	HasTraitsฺ
TraitErrorc               @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )ฺTestConstantTraitc             C   s$   G dd dt }| j| jd d S )Nc               @   s   e Zd ZedZdS )z7TestConstantTrait.test_initial_value.<locals>.TestClass้   N)ฺ__name__ฺ
__module__ฺ__qualname__r   ฺc_atrฉ r   r   ๚</tmp/pip-build-7vycvbft/traits/traits/tests/test_constant.pyฺ	TestClass   s   r   r   )r   ฺassertEqualr
   )ฺselfr   r   r   r   ฺtest_initial_value   s    z$TestConstantTrait.test_initial_valuec             C   sF   G dd dt }| }| j|jdddddg | j|jddd d S )	Nc               @   s,   e Zd ZedddddgZedddZdS )z?TestConstantTrait.test_mutable_initial_value.<locals>.TestClass้   ้   ้   ้   r   )ฺaฺbN)r   r   r	   r   ฺc_atr_1ฺc_atr_2r   r   r   r   r      s   r   r   r   r   r   r   )r   r   )r   r   r   r   )r   r   ฺobjr   r   r   ฺtest_mutable_initial_value   s    z,TestConstantTrait.test_mutable_initial_valuec             C   sP   G dd dt }| jt |dd W d Q R X | jt | `W d Q R X d S )Nc               @   s   e Zd ZedZdS )z6TestConstantTrait.test_assign_fails.<locals>.TestClassr   N)r   r   r	   r   r
   r   r   r   r   r   $   s   r   r   )r
   )r   ZassertRaisesr   r
   )r   r   r   r   r   ฺtest_assign_fails#   s
    z#TestConstantTrait.test_assign_failsc             C   s`   G dd dt }| }|jjd d|jd< | j|jddddd	dg | j|jdddd
 d S )Nc               @   s,   e Zd ZedddddgZedddZdS )z9TestConstantTrait.test_mutate_succeeds.<locals>.TestClassr   r   r   r   r   )r   r   N)r   r   r	   r   r   r   r   r   r   r   r   -   s   r   ้   r   ฺcr   r   r   r   )r   r   r   )r   r   ฺappendr   r   )r   r   r   r   r   r   ฺtest_mutate_succeeds,   s    
z&TestConstantTrait.test_mutate_succeedsc             C   sV   G dd dt }| }| }|jjd | j|jddddddg | j|j|j d S )	Nc               @   s   e Zd ZedddddgZdS )zFTestConstantTrait.test_mutate_affects_all_instances.<locals>.TestClassr   r   r   r   r   N)r   r   r	   r   r
   r   r   r   r   r   ?   s   r   r   r   r   r   r   r   )r   r
   r   r   ZassertIs)r   r   Zobj1ฺobj2r   r   r   ฺ!test_mutate_affects_all_instances8   s    z3TestConstantTrait.test_mutate_affects_all_instancesN)r   r   r	   r   r   r   r   r!   r   r   r   r   r      s
   
	r   )ZunittestZ
traits.apir   r   r   ZTestCaser   r   r   r   r   ฺ<module>   s   