3
Kd                 @   s   d dl Zd dlmZmZmZ d dlmZmZm	Z	m
Z
mZmZmZmZmZmZ d dlZG dd dZG dd dZG dd	 d	ZdS )
    N)	histogramhistogramddhistogram_bin_edges)
assert_assert_equalassert_array_equalassert_almost_equalassert_array_almost_equalassert_raisesassert_allcloseassert_array_max_ulpassert_raises_regexsuppress_warningsc               @   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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+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Zd;d< Z d=d> Z!d?d@ Z"dAS )BTestHistogramc             C   s   d S )N )selfr   r   S/var/www/html/virt/lib64/python3.6/site-packages/numpy/lib/tests/test_histograms.pysetup   s    zTestHistogram.setupc             C   s   d S )Nr   )r   r   r   r   teardown   s    zTestHistogram.teardownc             C   sT   d}t jj|}t|\}}tt j|dd| tt jddd\}}t|d d S )Nd   r   )axis
   )nprandomrandr   r   sumlinspacer   )r   nvabr   r   r   test_simple   s    zTestHistogram.test_simplec             C   s   t ddddgddg\}}t|dg t|ddg ttt ddgdd t ddgdd\}}t|tjdg t|tjddg d S )	N            r   )binsg      ?g       @)r   r   r
   
ValueErrorr   r   arrayr   )r   histedgesher   r   r   test_one_bin   s    zTestHistogram.test_one_binc       	      C   s   t  }|` |jtjd}d}tjj|}t|dd\}}tj|tj| }t	|d t
t|d W d Q R X t  }|j |jtjd}tjd}dddd	dg}t||dd\}}tj|tj| }t	|d t
t|d W d Q R X d S )
Nz
.*normed.*r   T)normedr"   r   r      	   )r   recordr   ZVisibleDeprecationWarningr   r   r   r   diffr   r   lenarange)	r   suprecr   r   r   r    arear&   r   r   r   test_normed)   s$    


zTestHistogram.test_normedc       	      C   s$  d}t jj|}t|dd\}}t j|t j| }t|d t jd}dddddg}t||dd\}}t|d	 t	t j|t j| d t||d
d\}}t|ddddg t jd}ddddt j
g}t||dd\}}t|d	d	d	dg t jddddgddt j
gdd\}}t	|ddg d S )Nr   T)densityr"   r   r   r$      g?Fr#   r%   g        g      ?g      ?g      ?)r   r   r   r   r   r2   r   r4   r   r   inf)	r   r   r   r   r    r7   r&   countsZdmyr   r   r   test_densityA   s&    



 zTestHistogram.test_densityc             C   s   t jdd }t|ddgd\}}t|j d t|ddgd\}}t|j d t|ddgdd\}}t|t j| j dd	d
 t jdd }t|ddg|dd\}}t|t j| j d t|dddg|d\}}t||dd  d S )Nr   g      ?r   r0   )ranger"   T)r>   r9      )decimal)r>   weightsr9      )r&   r>   rA   )r   r4   r   r   r   r   r2   )r   r   r+   r    wr   r   r   test_outliersa   s    zTestHistogram.test_outliersc             C   sN   t jdd }t jdd }ttd t|ddg|dd\}}W d Q R X d S )	Nr   g      ?   zsame shape asr"   r0   T)r>   rA   r9   )r   r4   r   r'   r   )r   r   rD   r+   r    r   r   r   test_arr_weights_mismatchy   s    z'TestHistogram.test_arr_weights_mismatchc             C   s   t jdd }t|\}}tt j|jt j t|dd\}}tt j|jt j t|t jdt	d\}}tt j|jt j t|t jdt
d\}}tt j|jt j d S )Nr   g      ?T)r9   )rA   )r   r4   r   r   Z
issubdtypedtypeintegerZfloatingonesintfloat)r   r   r+   r    r   r   r   	test_type   s    zTestHistogram.test_typec             C   sT   t jdddgt jd}t jdddgt jd}t j||dd	\}}}t|j d
 d S )Ng2VEq@gx>fQ@g-VT5@)rH   g!@gS@g^z@r   )r&   g      @gx>fQ)r   r(   Zfloat32Zhistogram2dr   r   )r   xyZcounts_histZxedgesZyedgesr   r   r   test_f32_rounding   s    zTestHistogram.test_f32_roundingc             C   s|   t jdddgt jd}t j|\}}t H}|jtd}t jdddg\}}tt|d t	|| t	|| W d Q R X d S )Nr"   r   )rH   zConverting input from .*TF)
r   r(   Zuint8r   r   r1   RuntimeWarningr   r3   r   )r   r   Zint_histZ	int_edgesr5   r6   r)   r*   r   r   r   test_bool_conversion   s    
z"TestHistogram.test_bool_conversionc             C   s  t jjd}t jdd }t|\}}t|dd\}}t||d\}}t||dd\}	}
t|d | t||	 t jddd}t jt jdt jdf}t|t j	d	|d
\}}t|| tddddgdddddgd
\}}t
|ddddg tddddgdddddgdd\}}t|t jddddgd d d  tt j	ddddddgdddddddddg	dd\}}t|ddddg d S )Nr   r/   T)r9   )rA   )rA   r9   r   r   rF   )r&   rA   r"   r#   r%   r$   )r&   rA   r9   g      $@g      @r0   r:   g?g?g333333?)r   r   r   rJ   r   r	   r   concatenatezerosr4   r   r(   r   )r   r   rD   r   r    nanbwawbZnwaZnwbr   r   r   test_weights   s*    

""$ zTestHistogram.test_weightsc             C   sH  t jdddg}t jdddgdt jdddg  }t|dddg|d	\}}t|t jddgdt jddg   t|dddg|d
\}}t|t jddgdt jddg   ddlm} t jdddg}t j|d|d|dg}t|dddg|d	\}}t||d|dg t|dddg|d
\}}t||d|dg d S )Ng?g      @gffffff@r"   r#   y              ?r   r$   )r&   rA   )r&   r>   rA   )Decimalr/   rC   )r   r(   r   r	   r@   rZ   )r   valuesrA   rW   rX   rZ   r   r   r   test_exotic_weights   s    $&&z!TestHistogram.test_exotic_weightsc             C   s8   t jdddg}t j|ddgdd t|dddg d S )Ng?g      @gffffff@r   r   )r>   r&   i)r   r(   r   r	   )r   r[   r   r   r   test_no_side_effects   s    z"TestHistogram.test_no_side_effectsc             C   s>   t g ddgd\}}t|tjdg t|tjddg d S )Nr   r"   )r&   )r   r   r   r(   )r   r   r    r   r   r   
test_empty   s    zTestHistogram.test_emptyc             C   s,   t jdddd}t|d ttt|d d S )Ng        g      ?r   )numr/   g333333@)r   r   r   r
   	TypeError)r   valsr   r   r   test_error_binnum_type   s    
z$TestHistogram.test_error_binnum_typec             C   sP   t jdddd}t|ddgd ttt|t jdgd ttt|dt jgd d S )Ng        g      ?r   )r_   g      ?g      ?)r>   )r   r   r   r
   r'   nanr;   )r   ra   r   r   r   test_finite_range   s    zTestHistogram.test_finite_rangec             C   s<   t jdddd}ttd t j|ddgd W d Q R X d S )	Ng        g      ?r   )r_   zmax must be larger thang?g{Gz?)r>   )r   r   r   r'   r   )r   ra   r   r   r   test_invalid_range   s    z TestHistogram.test_invalid_rangec       
      C   s   t jdddddddg}t j|ddd\}}|dk}|d d | }|dd  | }x2t|||D ]"\}}}	t||k t||	k  qbW d S )NiQ  i  i  i&  i  i  i  ih   r#     )r&   r>   r   r"   )r#   rf   rC   )r   r(   r   zipr   )
r   arrr)   r*   maskZ
left_edgesZright_edgesrN   leftrightr   r   r   test_bin_edge_cases  s    z!TestHistogram.test_bin_edge_casesc          
   C   sB   t jdddddddddg	}t j|ddd
\}}t|d d d S )Ng        g      ?g       @g      @g      @g      @   g      ?r/   )r&   r>   r"         )rn   r/   rC   )r   r(   r   r   )r   rh   r)   r*   r   r   r   test_last_bin_inclusive_range  s    z+TestHistogram.test_last_bin_inclusive_rangec             C   sN   t jdddd}t jddgddgg}ttd t j||d	 W d Q R X d S )
Ng        g      ?r   )r_   r   g      ?g333333?z
must be 1d)r&   )r   r   r(   r   r'   r   )r   ra   r&   r   r   r   test_bin_array_dims  s    z!TestHistogram.test_bin_array_dimsc             C   sJ   t jdg}t jdddgdd}tt t j||d\}}W d Q R X d S )Nr#   r"   r$   Zuint64)rH   )r&   )r   r(   r
   r'   r   )r   rh   r&   r)   r*   r   r   r    test_unsigned_monotonicity_check  s    
z.TestHistogram.test_unsigned_monotonicity_checkc             C   s   t ttdd tdD tj g  t ttdd tdD tjg  tjdd tdD dg  tjdd tdD dg  d S )	Nc             S   s   g | ]}t jd qS )g?)r   r(   ).0ir   r   r   
<listcomp>#  s    z9TestHistogram.test_object_array_of_0d.<locals>.<listcomp>r   c             S   s   g | ]}t jd qS )g?)r   r(   )rr   rs   r   r   r   rt   %  s    c             S   s   g | ]}t jd qS )g      ?)r   r(   )rr   rs   r   r   r   rt   (  s    g	     ?c             S   s   g | ]}t jd qS )g      ?)r   r(   )rr   rs   r   r   r   rt   )  s    g      ?)r
   r'   r   r>   r   r;   )r   r   r   r   test_object_array_of_0d   s     z%TestHistogram.test_object_array_of_0dc             C   s   t jddt jg}t jt jt jg}t }|jt | ttt|dd ttt|dd t|ddd\}}t	|j
 d t|ddd\}}t	|j
 d t|ddgd\}}t	|j
 d t|ddgd\}}t	|j
 d W d Q R X d S )	Nr   r"   auto)r&   )r&   r>   r#   )r   r"   )r   r"   )r   r(   rc   r   filterrQ   r
   r'   r   r   r   )r   Zone_nanZall_nanr5   r+   r    r   r   r   test_some_nan_values+  s    
z"TestHistogram.test_some_nan_valuesc          
   C   s   t jdd}t jddddddddd	g	}t jddd
d	g}|| }|| }t jd}t||d\}}t|j||j|d\}	}
t||d\}}t|| t|	| t|| jt| t|
jt| t|j|j t|
j| d S )Nz
2000-01-01Dr   r"   r#   r$   r/   r         ztimedelta64[D])r&   )r   Z
datetime64r(   rH   r   astyper   rK   )r   beginoffsetsr&   datesZ	date_binstdZd_countZd_edgeZt_countZt_edgeZi_countZi_edger   r   r   test_datetimeD  s    


zTestHistogram.test_datetimec             C   s|   dt j|j d }t jd|  d d| d g|d}t|dd\}}t|d|  d dd| d g t|ddg d S )NrB   r"   r#   r%   )rH   )r&   r   )r   rH   itemsizer(   r   r   )r   rH   exponentrh   r)   r,   r   r   r   do_signed_overflow_bounds]  s
    $"z'TestHistogram.do_signed_overflow_boundsc             C   s@   | j tj | j tj | j tj | j tj | j tj d S )N)r   r   byteshortZintcint_Zlonglong)r   r   r   r   test_signed_overflow_boundsd  s
    z)TestHistogram.test_signed_overflow_boundsc             C   st   t j|j}t jdg|}t jd| dg|}|j|d dkrDd S t j|d|d\}}t|dg t|j| d S )Ng      ?g       @r   r"   )r&   r>   )r   finfoepsr(   r|   r   r   rH   )r   float_smallfloat_larger   rh   r>   countx_locr   r   r   do_precision_lower_boundk  s    z&TestHistogram.do_precision_lower_boundc             C   st   t j|j}t jdg|}t jdd| g|}|j|d dkrDd S t j|d|d\}}t|dg t|j| d S )Ng      ?g        r"   )r&   r>   rC   )r   r   r   r(   r|   r   r   rH   )r   r   r   r   rh   r>   r   r   r   r   r   do_precision_upper_bound|  s    z&TestHistogram.do_precision_upper_boundc             C   s   | j || | j|| d S )N)r   r   )r   r   r   r   r   r   do_precision  s    zTestHistogram.do_precisionc             C   sd   | j tjtj | j tjtj | j tjtj | j tjtj | j tjtj | j tjtj d S )N)r   r   ZhalfZsingledoubleZ
longdouble)r   r   r   r   test_precision  s    zTestHistogram.test_precisionc          
   C   s   t ddddgddg\}}tddddgddg}t|| tjdddddddd	d
g	}t |ddd\}}t|ddd}t|| t |ddd\}}t|ddd}t|| d S )Nr"   r#   r$   r%   g        g      ?g       @g      @g      @g      @rm   g      ?r/   )r&   r>   rv   r         )r   r/         )r   r/   )r   r"   )r   r"   )r   r   r   r   r(   )r   r)   r,   r*   rh   r   r   r   test_histogram_bin_edges  s    

z&TestHistogram.test_histogram_bin_edgesN)#__name__
__module____qualname__r   r   r!   r-   r8   r=   rE   rG   rM   rP   rR   rY   r\   r]   r^   rb   rd   re   rl   ro   rp   rq   ru   rx   r   r   r   r   r   r   r   r   r   r   r   r   r      s@   
 	r   c            	   @   s   e Zd 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ejjddddddddgdd Zdd Zd S )!TestHistogramOptimBinNumsz]
    Provide test coverage when using provided estimators for optimal number of
    bins
    c             C   s\   ddddddddg}xB|D ]:}t g |d	\}}t|tjd
g t|tjd
dg qW d S )Nfdscottricesturgesdoanesqrtrv   stone)r&   r   r"   )r   r   r   r(   )r   estimator_list	estimatorr   r    r   r   r   r^     s    
z$TestHistogramOptimBinNums.test_emptyc             C   s   ddddddddddddddd	dd
ddddddddddd}x|j  D ]\}}tjdd|d d }tjdd|d d }tj||f}x>|j  D ]2\}}tj||\}	}
tt|	|dj||d qW qLW dS )z
        Straightforward testing with a mixture of linspace data (for
        consistency). All test values have been precomputed and the values
        shouldn't change
        r%   rB   r{   r#   )r   r   r   r   r   r   rv   r      r         r0      #      G   rz   )2   i  i  r"   r/   r$   z*For the {0} estimator with datasize of {1})err_msgNirC   )itemsr   r   rS   r   r   r3   format)r   
basic_testtestlenexpectedResultsx1x2rN   r   numbinsr   r    r   r   r   r!     s    z%TestHistogramOptimBinNums.test_simplec       	   
   C   s   ddddddddddddddddddddddddd}x^|j  D ]R\}}tj|}x>|j  D ]2\}}tj||\}}tt||dj||d qbW qFW dS )	z
        Smaller datasets have the potential to cause issues with the data
        adaptive methods, especially the FD method. All bin numbers have been
        precalculated.
        r"   )r   r   r   r   r   r   r   r#   r$   )r"   r#   r$   z*For the {0} estimator with datasize of {1})r   N)r   r   r4   r   r   r3   r   )	r   Z	small_datr   r   Ztestdatr   Zexpbinsr   r    r   r   r   
test_small  s    


z$TestHistogramOptimBinNums.test_smallc             C   s2   ddddg}x |D ]}t ttdddg| qW dS )	zS
        Check a Value Error is thrown when an unknown string is passed in
        ZmadZfreemanZ
histogramsZIQRr"   r#   r$   N)r
   r'   r   )r   Z
check_listr   r   r   r   test_incorrect_methods  s    
z0TestHistogramOptimBinNums.test_incorrect_methodsc          	   C   sb   t jd}ddddddddd}x<|j D ]0\}}t j||\}}tt||dj|d q*W dS )z
        Check that methods handle no variance in data
        Primarily for Scott and FD as the SD and IQR are both 0 in this case
        r   r"   )r   r   r   r   r   r   rv   r   z{0} estimator, No Variance test)r   N)r   rJ   r   r   r   r3   r   )r   Znovar_datasetZnovar_resultdictr   r   r   r    r   r   r   test_novariance  s    
z)TestHistogramOptimBinNums.test_novariancec             C   s   t jd}d|dd< d|dd< t|d}t|t jddd t|d	}t|t jddg t|d
}t|t jddd dS )zu
        Check when IQR is 0, but variance exists, we return the sturges value
        and not the fd value.
        i  r   Nr$   r   r%   rv   r   r   r   )r   rJ   r   r   r   r(   )r   Zlim_var_dataZ
edges_autoZedges_fdZedges_sturgesr   r   r   test_limited_variance  s    



z/TestHistogramOptimBinNums.test_limited_variancec             C   sl   t jddd}t jt jddd|f}ddddd	}x2|j D ]&\}}t j||\}}tt|| q>W d
S )a  
        Check the FD, Scott and Doane with outliers.

        The FD estimates a smaller binwidth since it's less affected by
        outliers. Since the range is so (artificially) large, this means more
        bins, most of which will be empty, but the data of interest usually is
        unaffected. The Scott estimator is more affected and returns fewer bins,
        despite most of the variance being in one area of the data. The Doane
        estimator lies somewhere between the other two.
        r   r   n   r   r/      rF   r:   )r   r   r   r   Niii)r   r   hstackr   r   r   r3   )r   ZxcenterZoutlier_datasetZoutlier_resultdictr   r   r   r    r   r   r   test_outlier  s    z&TestHistogramOptimBinNums.test_outlierc                sN   dd   fddt dD }ttj|ddd }t|d	d
ddgdd dS )zQVerify that Scott's rule and Stone's rule converges for normally distributed datac             S   sR   t jj| }|jdd|d}tt j|dd tt j|dd  }}|||  S )Nr   r#   )locZscalesizer   r   )r   r   ZRandomStatenormalr3   r   )seedr   rngrN   r   r    r   r   r   nbins_ratio%  s    *zBTestHistogramOptimBinNums.test_scott_vs_stone.<locals>.nbins_ratioc                s6   g | ].  fd dt jddddj jtD qS )c                s   g | ]} |qS r   r   )rr   r   )r   r   r   r   rt   +  s    zLTestHistogramOptimBinNums.test_scott_vs_stone.<locals>.<listcomp>.<listcomp>r   r   r%   )startstopr_   )r   Z	geomspaceroundr|   rK   )rr   )r   )r   r   rt   +  s   zATestHistogramOptimBinNums.test_scott_vs_stone.<locals>.<listcomp>r   r   )r   g      ?g333333?g
ףp=
?g{Gz?gQ?r#   )r@   N)r>   absr   Zmeanr   )r   Zllavgr   )r   r   test_scott_vs_stone"  s
    
z-TestHistogramOptimBinNums.test_scott_vs_stonec          	   C   s   ddddddddddddddd	d	d
dd	ddd}x|j  D ]\}}tjdd|d d }tjdd|d d }tjdd|}tj|||f}xR|j  D ]F\}}	tj||dd\}
}dj|}|dj|7 }tt|
|	|d qW q@W dS )z
        Straightforward testing with a mixture of linspace data (for
        consistency). Adding in a 3rd mixture that will then be
        completely ignored. All test values have been precomputed and
        the shouldn't change.
        rB   r?   r   )r   r   r   r   rv   r   r       rz   P   !   E      )r   i  i  r   r"   r/   r#   r$   r   r   )r>   zFor the {0} estimatorz with datasize of {0})r   NirC   ii)r   rz   )r   r   r   r   r   r   r   r3   )r   r   r   r   r   r   Zx3rN   r   r   r   r    msgr   r   r   test_simple_range2  s     



z+TestHistogramOptimBinNums.test_simple_ranger&   rv   r   r   r   r   r   r   c             C   sZ   t jdddgt jd}t j||d\}}t j|jt j|d\}}t|| t|| d S )Nr#   r      )rH   )r&   )r   r(   Zint8r   r|   Zint32r   )r   r&   r   r)   r*   Zhist32Zedges32r   r   r   test_signed_integer_dataQ  s
    
z2TestHistogramOptimBinNums.test_signed_integer_datac          	   C   s>   dddddg}x*|D ]"}t ttdddg|dddgd	 qW d
S )z=
        Check that weighted data raises a TypeError
        r   r   r   r   rv   r"   r#   r$   )rA   N)r
   r`   r   )r   r   r   r   r   r   test_simple_weighted[  s    
z.TestHistogramOptimBinNums.test_simple_weightedN)r   r   r   __doc__r^   r!   r   r   r   r   r   r   r   pytestmarkZparametrizer   r   r   r   r   r   r     s   		r   c               @   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d Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#S )$TestHistogramddc          	   C   st  t jdddgdddgdddgdddgdddgdddgg}t|dddgddgddggd\}}t jdddgdddgdddggdddgdddgdddggg}t|| dddgddddgddddgg}t||d	d
\}}tt j||d k t|dddgddgddggd	d\}}t jddddgddddgddddggddddgddddgddddggg}t||d d dd t j|dddD }t|dddgddgddggd\}}t jddgddgddggddgddgddggddgddgddggddgddgddggg}t|| t jd}d|t	t
dt	t
dt	t
df< tt jdt jdt jdgd\}}t|| d S ) Ng      ?g      ?g      @r#   r$   r"   r   )r>   T)r&   r9   g      (@r%   )r>   r9   g      @c             S   s   g | ]}t j|qS r   )r   Zsqueeze)rr   rO   r   r   r   rt   ~  s    z/TestHistogramdd.test_simple.<locals>.<listcomp>)r   )r&   r>   r/   g      ?g      g      g      )r#   r$   r$   rC   r   )r#   r$   r%   rC   )r%   r$   r#   r   )r/   r/   r/   )r   r(   r   r   r   allr	   splitrT   listr>   r4   )r   rN   Hr*   ZanswerZedzZr   r   r   r!   g  s8     
 $&"

&&zTestHistogramdd.test_simplec             C   s@   d}t jjdd}x(|D ] }t||\}}t|j|k qW d S )Nr/   r%   r:   r   r$   r/   r%   r:   r:   r%   r/   r/   r:   r%   r%   r:   r/   r:   r/   r%   r%   r/   r:   )r   r   r   r   r   r   )r   r   r   r   r   shape)r   r&   rr    r   r*   r   r   r   test_shape_3d  s     
zTestHistogramdd.test_shape_3dc             C   sB   d}t jjdd}x*|D ]"}t||\}}t|j|k  qW d S )Nr{   r%   r/   r:   r   r{   r%   r/   r:   r%   r/   r{   r:   r/   r:   r%   r{   r{   r:   r/   r%   r/   r{   r:   r%   r%   r:   r{   r/   r:   r/   r{   r%   r{   r/   r%   r:   r{   r%   r:   r/   r:   r%   r{   r/   r:   r{   r/   r%   r%   r:   r/   r{   r%   r{   r/   r:   r/   r%   r:   r{   r/   r{   r%   r:   r:   r{   r%   r/   r:   r/   r%   r{   r%   r{   r:   r/   r%   r/   r:   r{   r{   r:   r%   r/   r/   r%   r{   r:   r/   r:   r{   r%   r:   r%   r/   r{   r{   r/   r:   r%   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   )r   r&   r   r    r   r*   r   r   r   test_shape_4d  s         
zTestHistogramdd.test_shape_4dc             C   s   t jjdd}t|\}}t|dd\}}t|t jdd\}}t|| t|t jdd dd\}}t|| t|t jdtd d\}}t|d|  d S )Nr   r#   T)r9   )rA   )rA   r9   )r   r   r   r   rJ   r   rK   )r   r   r)   r*   Zn_histZw_histr   r   r   rY     s    

zTestHistogramdd.test_weightsc             C   s:   t jdt}t|dd\}}t|d t jdddg d S )	Nr   r#   )r&   r   g      ?g        )r   r#   g      )r   rT   rK   r   r   r(   )r   rN   r)   r*   r   r   r   test_identical_samples  s    z&TestHistogramdd.test_identical_samplesc             C   s`   t g g gddgddgfd\}}t|tjdgg tj g g g gdd\}}t|tjd d S )Nr   r"   )r&   g        r#   )r#   r#   r#   )r   r   r   r(   rT   )r   r   r    r   r   r   r^     s     zTestHistogramdd.test_emptyc             C   s   t jdjdd}ttt j|d	dddgd ttt j|ddddgd ttt j|ddddddd
ggd tt j|dddddddggd d S )NrB   r#   r%   r"   r/   )r&   gGz?r$   rC   )r   r4   reshaper
   r'   r   r   )r   rN   r   r   r   test_bins_errors  s     z TestHistogramdd.test_bins_errorsc             C   s   t jdd t jdjdd}t jddgddgddgg}t j|dt j ddggd	\}}t|| t j|dt jd
dt jggd	\}}t|| t j|dt j dt jggd	\}}t|| W d Q R X d S )Nignore)invalidr:   r$   r#   r"   r   r   )r&   rC   )r   Zerrstater4   r  r(   r   r;   r   )r   rN   expectedr+   r,   r   r   r   test_inf_edges  s     
$
"zTestHistogramdd.test_inf_edgesc             C   s  dg}dddgg}t ||d\}}t|d dk t|d dk dg}dddgg}t ||d\}}t|d dk t|d dk dg}dddgg}t ||d\}}t|d dk t|d dk d	g}dddgg}t ||d\}}t|d dk t|d dk d S )
NgG?g        g      ?g      ?)r&   r   r"   g8   ?gqh ?)r   r   )r   rN   r&   r)   _r   r   r   test_rightmost_binedge  s(    z&TestHistogramdd.test_rightmost_binedgec             C   sv   t jjd	}t|ddgddgddggd ttt|ddgddgdt jggd ttt|ddgt jdgddggd d S )
Nr   r$   g        g      ?g      ?g      ?g      ?)r>   )r   r$   )r   r   r   r
   r'   r;   rc   )r   ra   r   r   r   rd     s    z!TestHistogramdd.test_finite_rangec             C   sl   t jdddg}t jdddg}t jdddg}d}t||f||fd\}}t jdgdgg}t|| dS )z: Test that adjacent entries in an edge array can be equal r   r"   r#   )r&   g       @g      ?N)r   r(   r   r   )r   rN   rO   x_edgesy_edgesr)   r*   Zhist_expectedr   r   r   test_equal_edges  s    
z TestHistogramdd.test_equal_edgesc             C   sr   t jdddg}|d }t jddddg}|d }t||f||fd\}}t|d j|j t|d j|j dS )	z< Test that if an edge array is input, its type is preserved r   r   rz   r/   r?   )r&   r"   N)r   r(   r   r   rH   )r   rN   rO   r  r  r)   r*   r   r   r   test_edge_dtype  s    zTestHistogramdd.test_edge_dtypec             C   s`   d}t jdgt j}t jddgt j}|| }|| }t||f||fd\}}t|d	 d d S )
Nr#   <   r   r"   )r&   l            rC   r"   )r   r   )r   r(   Zint64r   r   )r   bigrN   r  rO   r  r)   r*   r   r   r   test_large_integers  s    z#TestHistogramdd.test_large_integersc             C   s   t jdddg}t jdddg}t jddgddgg}t jdgdgd  dgd  dgd  }t jdgdgd  dgd  dgd  }t||f||fd	\}}t|| t||f||fd
d\}}t|d d S )Nr   r#   rB   r:   r$   r0   r"   r{   )r&   T)r&   r9   @   g      ?)r   r(   r   r   )r   r  r  Zrelative_areasrN   rO   r)   r*   r   r   r   test_density_non_uniform_2d  s    	**
z+TestHistogramdd.test_density_non_uniform_2dc             C   sb   t jd}t jdddddg}t||dd\}}t|f|fdd\}}t|| t||d  d S )Nr   r   r"   r$   r:   T)r9   )r   r4   r(   r   r   r   )r   r   r&   r)   r*   hist_ddedges_ddr   r   r   test_density_non_uniform_1d.  s    

z+TestHistogramdd.test_density_non_uniform_1dc             C   sb   t jd}t jdddddg}t||dd\}}t|f|fdd\}}t|| t||d  d S )	Nr   r   r"   r$   r:   T)r9   )r.   )r   r4   r(   r   r   r   )r   r   r&   r)   r*   r  r  r   r   r   test_density_via_normed7  s    

z'TestHistogramdd.test_density_via_normedc             C   sP   t jd}t jdddddg}ttd t|f|fddd\}}W d Q R X d S )	Nr   r   r"   r$   r:   zCannot specify bothT)r9   r.   )r   r4   r(   r   r`   r   )r   r   r&   r  r  r   r   r   test_density_normed_redundancy@  s    

z.TestHistogramdd.test_density_normed_redundancyN)r   r   r   r!   r   r  rY   r  r^   r  r	  r  rd   r  r  r  r  r  r  r  r   r   r   r   r   e  s"   %	
		r   )Znumpyr   Znumpy.lib.histogramsr   r   r   Znumpy.testingr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s   0     =