3
d                 @   s  d Z ddlZddlmZmZmZmZmZmZ ddl	m
Z
mZ G dd dZyeed W n ek
rr   dZY nX d	ZG d
d deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd dejeZG dd dejeZdS )z"
Tests for the Float trait type.

    N)	BaseFloatEitherFloat	HasTraitsStr
TraitError)numpyrequires_numpyc               @   s   e Zd Zdd Zdd ZdS )IntegerLikec             C   s
   || _ d S )N)_value)selfvalue r   9/tmp/pip-build-7vycvbft/traits/traits/tests/test_float.py__init__   s    zIntegerLike.__init__c             C   s   | j S )N)r   )r   r   r   r   	__index__   s    zIntegerLike.__index__N)__name__
__module____qualname__r   r   r   r   r   r   r
      s   r
      FTc               @   s   e Zd Zdd Zdd ZdS )MyFloatc             C   s
   || _ d S )N)r   )r   r   r   r   r   r   (   s    zMyFloat.__init__c             C   s   | j S )N)r   )r   r   r   r   	__float__+   s    zMyFloat.__float__N)r   r   r   r   r   r   r   r   r   r   '   s   r   c               @   s   e Zd ZdS )InheritsFromFloatN)r   r   r   r   r   r   r   r   /   s   r   c               @   s   e Zd Zdd ZdS )BadFloatc             C   s   t d S )N)ZeroDivisionError)r   r   r   r   r   4   s    zBadFloat.__float__N)r   r   r   r   r   r   r   r   r   3   s   r   c               @   s$   e Zd ZeZedeZeeeZdS )
FloatModelN)	r   r   r   r   r   r   value_or_noner   float_or_textr   r   r   r   r   8   s   
r   c               @   s$   e Zd ZeZedeZeeeZ	dS )BaseFloatModelN)
r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   B   s   
r   c               @   s   e Zd ZdZdd Zdd Zdd Zdd	 Zej	e
d
dd Zdd Zdd Zdd Zdd Zdd Zdd Zedd ZdS )CommonFloatTestsz& Common tests for Float and BaseFloat c             C   s   | j  }| j|jd d S )Ng        )
test_classassertEqualr   )r   ar   r   r   test_defaultM   s    zCommonFloatTests.test_defaultc             C   sX   | j  }d|_| jt|jt | j|jd d|_| jt|jt | j|jd d S )Ngffffff@)r    r   assertIstypefloatr!   r   )r   r"   r   r   r   test_accepts_floatQ   s    z#CommonFloatTests.test_accepts_floatc             C   s`   | j  }td|_| jt|jt | j|jd td|_| jt|jt | j|jd d S )Ng     B@)r    r   r   r$   r%   r&   r!   r   )r   r"   r   r   r   test_accepts_float_subclass\   s    

z,CommonFloatTests.test_accepts_float_subclassc             C   sX   | j  }d|_| jt|jt | j|jd d|_| jt|jt | j|jd d S )N   g       @)r    r   r$   r%   r&   r!   r   )r   r"   r   r   r   test_accepts_intg   s    z!CommonFloatTests.test_accepts_intz8float does not support __index__ for this Python versionc             C   s6   | j  }td|_| jt|jt | j|jd d S )Nr   g      @)r    r
   r   r$   r%   r&   r!   )r   r"   r   r   r   test_accepts_integer_liker   s    
z*CommonFloatTests.test_accepts_integer_likec             C   s`   | j  }td|_| jt|jt | j|jd td|_| jt|jt | j|jd d S )Ng     @g     @)r    r   r   r$   r%   r&   r!   )r   r"   r   r   r   test_accepts_float_like|   s    

z(CommonFloatTests.test_accepts_float_likec             C   sD   | j  }| jt d|_W d Q R X | jt d|_W d Q R X d S )Nz2.3)r    assertRaisesr   r   r   )r   r"   r   r   r   test_rejects_string   s
    z$CommonFloatTests.test_rejects_stringc          	   C   s*   | j  }| jt t |_W d Q R X d S )N)r    r-   r   r   r   )r   r"   r   r   r   $test_bad_float_exceptions_propagated   s    z5CommonFloatTests.test_bad_float_exceptions_propagatedc             C   s    | j  }d|_| j|jd d S )Nznot a float)r    r   r!   )r   r"   r   r   r   )test_compound_trait_float_conversion_fail   s    z:CommonFloatTests.test_compound_trait_float_conversion_failc             C   sX   | j  }d|_| jt|jt | j|jd d|_| jt|jt | j|jd d S )Nr)   g       @)r    r   r$   r%   r&   r!   r   )r   r"   r   r   r   test_accepts_small_integer   s    z+CommonFloatTests.test_accepts_small_integerc             C   sX   | j  }d|_| jt|jt | j|jd d|_| jt|jt | j|jd d S )Nr)   @   l            l            l            l            )r    r   r$   r%   r&   r!   r   )r   r"   r   r   r   test_accepts_large_integer   s    z+CommonFloatTests.test_accepts_large_integerc             C   s   t jdt jdt jdg}| j }xX|D ]P}||_| jt|jt | j	|j| ||_
| jt|j
t | j	|j
| q*W d S )Ngffffff@g@g{Gz?)r   Zfloat64Zfloat32Zfloat16r    r   r$   r%   r&   r!   r   )r   Ztest_valuesr"   Z
test_valuer   r   r   test_accepts_numpy_floats   s    
z*CommonFloatTests.test_accepts_numpy_floatsN)r   r   r   __doc__r#   r'   r(   r*   unittestZ
skipUnlessfloat_accepts_indexr+   r,   r.   r/   r0   r1   r3   r	   r4   r   r   r   r   r   J   s   
r   c               @   s   e Zd Zdd Zdd ZdS )	TestFloatc             C   s
   t | _d S )N)r   r    )r   r   r   r   setUp   s    zTestFloat.setUpc          	   C   s*   | j  }| jt t |_W d Q R X d S )N)r    r-   r   r   r   )r   r"   r   r   r   +test_exceptions_propagate_in_compound_trait   s    z5TestFloat.test_exceptions_propagate_in_compound_traitN)r   r   r   r9   r:   r   r   r   r   r8      s   r8   c               @   s   e Zd Zdd ZdS )TestBaseFloatc             C   s
   t | _d S )N)r   r    )r   r   r   r   r9      s    zTestBaseFloat.setUpN)r   r   r   r9   r   r   r   r   r;      s   r;   )r5   r6   Z
traits.apir   r   r   r   r   r   Z$traits.testing.optional_dependenciesr   r	   r
   r&   	TypeErrorr7   objectr   r   r   r   r   r   ZTestCaser8   r;   r   r   r   r   <module>   s"    


w