3
d  ใ               @   s6   d Z ddlZddlmZmZmZ G dd dejZdS )zF Test whether HasTraits objects with cycles can be garbage collected.
้    N)ฺ	HasTraitsฺInstanceฺIntc               @   s    e Zd ZdZdd Zdd ZdS )ฺTestCasez3 Tests the 'target' argument for on_traits_change. c                s^   G dd dt }| }t  }d _ fdd}|j|d|d d|_~d|_ j jd	 d
S )z. Tests a simple dynamic trait change handler. c               @   s   e Zd ZeZdS )z"TestCase.test_simple.<locals>.TestN)ฺ__name__ฺ
__module__ฺ__qualname__r   ฺiฉ r
   r
   ๚:/tmp/pip-build-7vycvbft/traits/traits/tests/test_target.pyฺTest   s   r   r   c                  s     j d7  _ d S )N้   )ฺcountr
   )ฺselfr
   r   ฺcount_notifies%   s    z,TestCase.test_simple.<locals>.count_notifiesr	   )ฺtarget้
   r   N)r   r   ฺon_trait_changer	   ฺassertEqual)r   r   ฺobjr   r   r
   )r   r   ฺtest_simple   s    zTestCase.test_simplec                s|   G dd dt  G  fdddt }|  d}t  }d_fdd}|j|d	|d
 d|j_~d|j_jjd dS )z< Tests a dynamic trait change handler using extended names. c               @   s   e Zd ZeZdS )z%TestCase.test_extended.<locals>.ChildN)r   r   r   r   r	   r
   r
   r
   r   ฺChild5   s   r   c                   s   e Zd Ze ZdS )z&TestCase.test_extended.<locals>.ParentN)r   r   r   r   ฺchildr
   )r   r
   r   ฺParent8   s   r   )r   r   c                  s     j d7  _ d S )Nr   )r   r
   )r   r
   r   r   B   s    z.TestCase.test_extended.<locals>.count_notifieszchild:i)r   r   r   N)r   r   r   r   r	   r   )r   r   ฺparentr   r   r
   )r   r   r   ฺtest_extended2   s    zTestCase.test_extendedN)r   r   r   ฺ__doc__r   r   r
   r
   r
   r   r      s   r   )r   ZunittestZ
traits.apir   r   r   r   r
   r
   r
   r   ฺ<module>   s   