3
d  ใ               @   sv   d Z ddlZddlmZ ddlmZmZmZmZmZ ddl	m
Z
mZ ddlmZ dd Zd	d
 ZG dd dejZdS )z* Test cases for dictionary (Dict) traits. ้    N)ฺmock)ฺAnyฺDictฺEventฺStrฺTraitDictObject)ฺ	HasTraitsฺon_trait_change)ฺ
TraitErrorc                  s"    fdd  fdd _ t S )z4 Create a listener for testing trait notifications. c                s*   |  _ | _| _| _  jd7  _d S )N้   )ฺobjฺ
trait_nameฺnewฺoldฺcalled)r   r   r   r   )ฺlistenerฉ ๚8/tmp/pip-build-7vycvbft/traits/traits/tests/test_dict.pyr      s
    z!create_listener.<locals>.listenerc                  s   t  S )N)ฺinitialize_listenerr   )r   r   r   ฺ<lambda>"   s    z!create_listener.<locals>.<lambda>)ฺ
initializer   r   r   )r   r   ฺcreate_listener   s    r   c             C   s"   d| _ d| _d| _d| _d| _| S )zฃ Initialize a listener so it looks like it hasn't been called.

    This allows us to re-use the listener without having to create and
    wire-up a new one.

    Nr   )r   r   r   r   r   )r   r   r   r   r   &   s    r   c               @   s8   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d ZdS )ฺTestDictz* Test cases for dictionary (Dict) traits. c                s  G dd dt  G  fdddt }| }t }|j|d d ddi|_| jd|j | jd|j |j   d	d}||jd	< | jd|j | jd|j |j  d
|_| jd|j | jd|j |j   dd|jd	< | jd|j | jd|j d S )Nc               @   s$   e Zd ZeZeZeddd ZdS )z)TestDict.test_modified_event.<locals>.Fooฺnamec             S   s
   d| _ d S )NT)ฺmodified)ฺselfr   r   r   ฺ_fire_modified_event?   s    z>TestDict.test_modified_event.<locals>.Foo._fire_modified_eventN)	ฺ__name__ฺ
__module__ฺ__qualname__r   r   r   r   r	   r   r   r   r   r   ฺFoo;   s   r    c                   s*   e Zd Zee ZeZeddd Z	dS )z)TestDict.test_modified_event.<locals>.Barzfoos_items,foos.modifiedc             S   s
   d| _ d S )NT)r   )r   r   r   r   r   r   r   r   r   G   s    z>TestDict.test_modified_event.<locals>.Bar._fire_modified_eventN)
r   r   r   r   r   ฺfoosr   r   r	   r   r   )r    r   r   ฺBarC   s   
r"   r   Zdino)r   r   ฺfredZbarneyZwilma)	r   r   r	   r!   ฺassertEqualr   r   r   r   )r   r"   ฺbarr   r#   r   )r    r   ฺtest_modified_event:   s*    

zTestDict.test_modified_eventc             C   sl   t  }| jt |jt ddd W dQ R X |jt di d}| j|t |jddi d}| j|i  dS )z' Check the validation method.

        r%   N)ฺobjectr   ฺvalue)r   ฺassertRaisesr
   ฺvalidater   ZassertIsInstancer   r$   )r   ฺfooฺresultr   r   r   ฺtest_validateg   s    zTestDict.test_validatec          
   C   sH   G dd dt }|i d}d|jd< | jt d|jd< W d Q R X d S )Nc               @   s   e Zd ZeeZdS )z'TestDict.test_validate_key.<locals>.FooN)r   r   r   r   r   ฺmappingr   r   r   r   r    {   s   r    )r.   r   ฺa)r   r.   r)   r
   )r   r    r+   r   r   r   ฺtest_validate_keyy   s
    

zTestDict.test_validate_keyc          
   C   sH   G dd dt }|i d}d|jd< | jt d|jd< W d Q R X d S )Nc               @   s   e Zd ZeeeZdS )z)TestDict.test_validate_value.<locals>.FooN)r   r   r   r   r   r   r.   r   r   r   r   r       s   r    )r.   ฺ1r/   r   )r   r.   r)   r
   )r   r    r+   r   r   r   ฺtest_validate_value   s
    

zTestDict.test_validate_valuec                sN   G dd dt }tj  |i d}|j fdddd d|jd	<  j  d S )
Nc               @   s   e Zd ZeddZdS )z-TestDict.test_items_set_to_false.<locals>.FooF)ฺitemsN)r   r   r   r   r.   r   r   r   r   r       s   r    )r.   c                  s     S )Nr   r   )ฺhandlerr   r   r   ก   s    z2TestDict.test_items_set_to_false.<locals>.<lambda>Zmapping_items)r   r   r1   )r   r   ZMockr	   r.   Zassert_not_called)r   r    r+   r   )r4   r   ฺtest_items_set_to_false   s    

z TestDict.test_items_set_to_falseN)	r   r   r   ฺ__doc__r&   r-   r0   r2   r5   r   r   r   r   r   7   s   -r   )r6   Zunittestr   Ztraits.trait_typesr   r   r   r   r   Ztraits.has_traitsr   r	   Ztraits.trait_errorsr
   r   r   ZTestCaser   r   r   r   r   ฺ<module>   s   