3
dะ  ใ               @   sJ   d dl Z d dlZd dlmZmZmZmZ d dlmZ G dd dej	Z
dS )้    N)ฺ
Expressionฺ	HasTraitsฺIntฺ
TraitError)ฺDefaultValuec               @   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 )ฺTestExpressionc             C   s@   G dd dt }| }d|_| j|jd | jt|jd d S )Nc               @   s   e Zd Ze ZdS )z*TestExpression.test_set_value.<locals>.FooN)ฺ__name__ฺ
__module__ฺ__qualname__r   ฺbarฉ r   r   ๚>/tmp/pip-build-7vycvbft/traits/traits/tests/test_expression.pyฺFoo   s   r   ฺ1้   )r   r   ฺassertEqualฺevalฺbar_)ฺselfr   ฺfr   r   r   ฺtest_set_value   s
    zTestExpression.test_set_valuec             C   s:   G dd dt }| }| j|jd | jt|jd d S )Nc               @   s   e Zd ZeddZdS )z/TestExpression.test_default_static.<locals>.Foor   )ฺdefault_valueN)r   r	   r
   r   r   r   r   r   r   r      s   r   r   r   )r   r   r   r   r   )r   r   r   r   r   r   ฺtest_default_static   s    z"TestExpression.test_default_staticc             C   s|   G dd dt }| }| j|jd | jt|jd | j|jd | }| jt|jd | j|jd | j|jd d S )Nc               @   s"   e Zd Ze ZedZdd ZdS )z/TestExpression.test_default_method.<locals>.Foor   c             S   s   |  j d7  _ dS )Nr   r   )ฺdefault_calls)r   r   r   r   ฺ_bar_default-   s    z<TestExpression.test_default_method.<locals>.Foo._bar_defaultN)r   r	   r
   r   r   r   r   r   r   r   r   r   r   '   s   r   r   r   )r   r   r   r   r   r   )r   r   r   ฺf2r   r   r   ฺtest_default_method&   s    
z"TestExpression.test_default_methodc          	   C   s<   G dd dt }| }d}| jt| |j W d Q R X d S )Nc               @   s   e Zd Ze Zdd ZdS )z9TestExpression.test_default_method_non_valid.<locals>.Fooc             S   s   dS )Nz{x=yr   )r   r   r   r   r   @   s    zFTestExpression.test_default_method_non_valid.<locals>.Foo._bar_defaultN)r   r	   r
   r   r   r   r   r   r   r   r   =   s   r   z1The 'bar' trait of a Foo instance must be a valid)r   ฺassertRaisesRegexr   r   )r   r   r   ฺmsgr   r   r   ฺtest_default_method_non_valid<   s
    z,TestExpression.test_default_method_non_validc             C   sJ   G dd dt }G dd d|}| }| j|jd | jt|jd d S )Nc               @   s   e Zd Ze ZdS )zCTestExpression.test_default_static_override_static.<locals>.BaseFooN)r   r	   r
   r   r   r   r   r   r   ฺBaseFooI   s   r    c               @   s   e Zd ZdZdS )z?TestExpression.test_default_static_override_static.<locals>.Fooฺ3N)r   r	   r
   r   r   r   r   r   r   M   s   r   r!   ้   )r   r   r   r   r   )r   r    r   r   r   r   r   ฺ#test_default_static_override_staticH   s
    z2TestExpression.test_default_static_override_staticc             C   sX   G dd dt }G dd d|}| }| j|jd | jt|jd | j|jd d S )Nc               @   s   e Zd Ze ZdS )zCTestExpression.test_default_static_override_method.<locals>.BaseFooN)r   r	   r
   r   r   r   r   r   r   r    U   s   r    c               @   s   e Zd ZedZdd ZdS )z?TestExpression.test_default_static_override_method.<locals>.Foor   c             S   s   |  j d7  _ dS )Nr   r!   )r   )r   r   r   r   r   \   s    zLTestExpression.test_default_static_override_method.<locals>.Foo._bar_defaultN)r   r	   r
   r   r   r   r   r   r   r   r   Y   s   r   r!   r"   r   )r   r   r   r   r   r   )r   r    r   r   r   r   r   ฺ#test_default_static_override_methodT   s    z2TestExpression.test_default_static_override_methodc             C   sX   G dd dt }G dd d|}| }| j|jd | jt|jd | j|jd d S )Nc               @   s"   e Zd Ze ZedZdd ZdS )zCTestExpression.test_default_method_override_static.<locals>.BaseFoor   c             S   s   |  j d7  _ dS )Nr   r   )r   )r   r   r   r   r   l   s    zPTestExpression.test_default_method_override_static.<locals>.BaseFoo._bar_defaultN)r   r	   r
   r   r   r   r   r   r   r   r   r   r    f   s   r    c               @   s   e Zd ZdZdS )z?TestExpression.test_default_method_override_static.<locals>.Foor!   N)r   r	   r
   r   r   r   r   r   r   p   s   r   r!   r"   r   )r   r   r   r   r   r   )r   r    r   r   r   r   r   ฺ#test_default_method_override_statice   s    
z2TestExpression.test_default_method_override_staticc             C   sX   G dd dt }G dd d|}| }| j|jd | jt|jd | j|jd d S )Nc               @   s"   e Zd Ze ZedZdd ZdS )zCTestExpression.test_default_method_override_method.<locals>.BaseFoor   c             S   s   |  j d7  _ dS )Nr   r   )r   )r   r   r   r   r      s    zPTestExpression.test_default_method_override_method.<locals>.BaseFoo._bar_defaultN)r   r	   r
   r   r   r   r   r   r   r   r   r   r    y   s   r    c               @   s   e Zd Zdd ZdS )z?TestExpression.test_default_method_override_method.<locals>.Fooc             S   s   |  j d7  _ dS )Nr   r!   )r   )r   r   r   r   r      s    zLTestExpression.test_default_method_override_method.<locals>.Foo._bar_defaultN)r   r	   r
   r   r   r   r   r   r      s   r   r!   r"   r   )r   r   r   r   r   r   )r   r    r   r   r   r   r   ฺ#test_default_method_override_methodx   s    
z2TestExpression.test_default_method_override_methodc             C   sT   G dd dt }| }|jd}tjtj|}|j d }| jt||d d S )Nc               @   s   e Zd ZeddZdS )z4TestExpression.test_pickle_shadow_trait.<locals>.Foor   )r   N)r   r	   r
   r   r   r   r   r   r   r      s   r   r   r   )r   Ztraitฺpickleฺloadsฺdumpsr   r   r   )r   r   r   Zmarried_shadow_traitZreconstitutedZdefault_value_callabler   r   r   ฺtest_pickle_shadow_trait   s    
z'TestExpression.test_pickle_shadow_traitc             C   sN   t dd}|jd}| j|jtj | j|jd | j|j jd dd d S )Nr   )r   ฺ2ฺexpr)	r   ฺcloner   Zdefault_value_typer   Zconstantr   Z	as_ctraitZdefault_value_for)r   r,   Zcloned_exprr   r   r   ฺ
test_clone   s    

zTestExpression.test_cloneN)r   r	   r
   r   r   r   r   r#   r$   r%   r&   r*   r.   r   r   r   r   r      s   		r   )r'   ZunittestZ
traits.apir   r   r   r   Ztraits.constantsr   ZTestCaser   r   r   r   r   ฺ<module>   s   