3
d
                 @   s   d Z ddlZddlZddlZddlmZmZmZmZm	Z	 G dd dej
ZG dd deZG dd	 d	eZG d
d deZeje G dd dejZG dd dej
ZdS )z Test the ABC functionality.
    N)ABCHasTraitsABCMetaHasTraits	HasTraitsIntFloatc               @   s(   e Zd ZdZdd Zdd Zdd ZdS )	TestNewz( Test that __new__ works correctly.
    c             C   s    t jd d  | _t jdt d S )Nerror)warningsfiltersold_filterssimplefilterDeprecationWarning)self r   7/tmp/pip-build-7vycvbft/traits/traits/tests/test_abc.pysetUp   s    zTestNew.setUpc             C   s   | j tjd d < d S )N)r   r	   r
   )r   r   r   r   tearDown   s    zTestNew.tearDownc             C   s   G dd dt }|dd d S )Nc               @   s   e Zd ZdS )zTestNew.test_new.<locals>.AN)__name__
__module____qualname__r   r   r   r   A$   s   r   
   )x)r   )r   r   r   r   r   test_new   s    zTestNew.test_newN)r   r   r   __doc__r   r   r   r   r   r   r   r      s   r   c               @   s8   e Zd ZedZedZejdd Z	ej
dd ZdS )AbstractFoor   g      4@c             C   s
   t  d S )N)NotImplementedError)r   r   r   r   foo/   s    zAbstractFoo.fooc             C   s
   t  d S )N)r   )r   r   r   r   bar3   s    zAbstractFoo.barN)r   r   r   r   r   r   yabcabstractmethodr   abstractpropertyr   r   r   r   r   r   +   s   r   c               @   s    e Zd Zdd Zedd ZdS )ConcreteFooc             C   s   dS )Nr   r   )r   r   r   r   r   9   s    zConcreteFoo.fooc             C   s   dS )Nr   r   )r   r   r   r   r   <   s    zConcreteFoo.barN)r   r   r   r   propertyr   r   r   r   r   r#   8   s   r#   c               @   s0   e Zd ZedZedZdd Zedd Z	dS )FooLiker   g      4@c             C   s   dS )Nr   r   )r   r   r   r   r   E   s    zFooLike.fooc             C   s   dS )Nr   r   )r   r   r   r   r   H   s    zFooLike.barN)
r   r   r   r   r   r   r   r   r$   r   r   r   r   r   r%   A   s   r%   c               @   s   e Zd Zejdd ZdS )AbstractBarc             C   s
   t  d S )N)r   )r   r   r   r   r   S   s    zAbstractBar.barN)r   r   r   r    r!   r   r   r   r   r   r&   P   s   r&   c               @   s$   e Zd Zdd Zdd Zdd ZdS )TestABCc             C   s`   | j tt t }| j|j d | j|jd | j|jd | j|jd | j	t
|t d S )Nr   r   r   g      4@)ZassertRaises	TypeErrorr   r#   assertEqualr   r   r   r   
assertTrue
isinstance)r   Zconcreter   r   r   test_basic_abcY   s    zTestABC.test_basic_abcc             C   s   t  }| jt|t d S )N)r%   r*   r+   r   )r   Zfooliker   r   r   test_registeredb   s    zTestABC.test_registeredc             C   s>   G dd dt ttd}| }| jt|t | j|jd d S )Nc               @   s   e Zd ZedZdd ZdS )z0TestABC.test_post_hoc_mixing.<locals>.TraitedBarr   c             S   s   dS )Nr   r   )r   r   r   r   r   j   s    z4TestABC.test_post_hoc_mixing.<locals>.TraitedBar.barN)r   r   r   r   r   r   r   r   r   r   
TraitedBarg   s   r.   )	metaclassr   )r   r&   r   r*   r+   r)   r   )r   r.   Ztraitedr   r   r   test_post_hoc_mixingf   s    zTestABC.test_post_hoc_mixingN)r   r   r   r,   r-   r0   r   r   r   r   r'   X   s   	r'   )r   r    Zunittestr	   Z
traits.apir   r   r   r   r   ZTestCaser   r   r#   r%   registerABCr&   r'   r   r   r   r   <module>   s   	
