U
    b                     @   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   _/home/fireinfo/NEWAFireInfo/venv/lib/python3.8/site-packages/numpy/lib/tests/test_histograms.pysetup   s    zTestHistogram.setupc                 C   s   d S r   r   r   r   r   r   teardown   s    zTestHistogram.teardownc                 C   sT   d}t j|}t|\}}tt j|dd| tt ddd\}}t|d d S )Nd   r   Z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dg t|tddg d S )	N            r   bins      ?       @)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  }|` |tjd}d}tj|}t|dd\}}t|t| }t	|d t
t|d W 5 Q R X t  }|j |tjd}td}dddd	dg}t||dd\}}t|t| }t	|d t
t|d W 5 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|}t|dd\}}t |t | }t|d t d}dddddg}t||dd\}}t|d	 t	t |t | d t||d
d\}}t|ddddg t 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&      皙?Fr%   r'                 ?      ?      ?)r   r   r   r   r   r8   r   r:   r   r   inf)	r   r   r    r!   r"   r=   r)   countsZdmyr   r   r   test_densityA   s,    




 
 
zTestHistogram.test_densityc                 C   s   t dd }t|ddgd\}}t| d t|ddgd\}}t| d t|ddgdd\}}t|t |  dd	d
 t dd }t|ddg|dd\}}t|t |  d t|dddg|d\}}t||dd  d S )Nr   rD   r   r6   ranger$   TrK   r@      decimalrK   weightsr@      r)   rK   rQ   )r   r:   r   r   r   r   r8   )r   r!   r0   r"   wr   r   r   test_outliersa   s    zTestHistogram.test_outliersc              	   C   sN   t dd }t dd }ttd t|ddg|dd\}}W 5 Q R X d S )	Nr   rD      zsame shape asr$   r6   TrP   )r   r:   r   r,   r   )r   r!   rU   r0   r"   r   r   r   test_arr_weights_mismatchy   s    z'TestHistogram.test_arr_weights_mismatchc                 C   s   t dd }t|\}}tt |jt j t|dd\}}tt |jt j t|t dt	d\}}tt |jt j t|t dt
d\}}tt |jt j d S )Nr   rD   Tr?   rQ   )r   r:   r   r   Z
issubdtypedtypeintegerZfloatingonesintfloat)r   r!   r0   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| d
 d S )Ng2VEq@gx>fQg-VT5@rZ   g!@gS@g^z@r   r(         @)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 |\}}t H}|td}t dddg\}}tt|d t	|| t	|| W 5 Q R X d S )Nr$   r   r`   zConverting input from .*TF)
r   r-   Zuint8r   r   r7   RuntimeWarningr   r9   r   )r   r!   Zint_histZ	int_edgesr;   r<   r.   r/   r   r   r   test_bool_conversion   s    
z"TestHistogram.test_bool_conversionc                 C   s  t jd}t dd }t|\}}t|dd\}}t||d\}}t||dd\}	}
t|d | t||	 t ddd}t t dt df}t|t 	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 ddddgd d d  tt 	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   r5   Tr?   rY   rQ   r@   r   r   rW   r)   rQ   r$   r%   r'   r&   )r)   rQ   r@   g      $@ra   r6   rA   g?rB   g333333?)r   r   r   r\   r   r	   r   concatenatezerosr:   r   r-   r   )r   r    rU   r!   r"   nanbwawbZnwaZnwbr   r   r   test_weights   s8    

"
  
 
$  
zTestHistogram.test_weightsc                 C   sH  t dddg}t dddgdt dddg  }t|ddd	g|d
\}}t|t ddgdt dd	g   t|ddd	g|d\}}t|t ddgdt dd	g   ddlm} t dddg}t |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 )N?      @ffffff@r$   rT   r%   y              ?r   r&   rh   rS   )Decimalr5   )r   r-   r   r	   rO   rs   )r   valuesrQ   rm   rn   rs   r   r   r   test_exotic_weights   s    $&&z!TestHistogram.test_exotic_weightsc                 C   s8   t dddg}t j|ddgdd t|dddg d S )Nrp   rq   rr   r   r   )rK   r)   )r   r-   r   r	   )r   rt   r   r   r   test_no_side_effects   s    z"TestHistogram.test_no_side_effectsc                 C   s>   t g ddgd\}}t|tdg t|t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 )NrC   r*   r   numr5   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 )NrC   r*   r   r{   rF         ?rJ   )r   r   r   r
   r,   nanrG   r~   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 5 Q R X d S )	NrC   r*   r   r{   zmax must be larger thanrB   g{Gz?rJ   )r   r   r   r,   r   r~   r   r   r   test_invalid_range   s    z TestHistogram.test_invalid_rangec           
   	   C   s   t dddddddg}t j|dd	d
\}}|dk}|d d | }|dd  | }t|||D ]"\}}}	t||k t||	k  q`d S )NiQ  i  i  i&  i  i  i  ih   )r%   i  r)   rK   r   rT   r$   )r   r-   r   zipr   )
r   arrr.   r/   maskZ
left_edgesZright_edgesrb   leftrightr   r   r   test_bin_edge_cases  s    z!TestHistogram.test_bin_edge_casesc                 C   sB   t dddddddddg	}t j|ddd	\}}t|d
 d d S )NrC   r*   r+   ra         @      @         r5   r   rT   r$   )r   r-   r   r   )r   r   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 ddgddgg}ttd t j||d	 W 5 Q R X d S )
NrC   r*   r   r{   r   rD   g333333?z
must be 1dr(   )r   r   r-   r   r,   r   )r   r   r)   r   r   r   test_bin_array_dims  s    z!TestHistogram.test_bin_array_dimsc              	   C   sJ   t dg}t jdddgdd}tt t j||d\}}W 5 Q R X d S )Nr%   r$   r&   Zuint64r`   r(   )r   r-   r
   r,   r   )r   r   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dd tdD dg  tdd tdD dg  d S )	Nc                 S   s   g | ]}t 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 d qS r   r   r   r   r   r   r   %  s     c                 S   s   g | ]}t d qS rD   r   r   r   r   r   r   (  s     g	     ?c                 S   s   g | ]}t d qS r   r   r   r   r   r   r   )  s     rD   )r
   r,   r   rK   r   rG   r   r   r   r   test_object_array_of_0d   s      z%TestHistogram.test_object_array_of_0dc              	   C   s   t ddt jg}t t jt jg}t }|t | ttt|dd ttt|dd t|ddd\}}t	|
 d t|ddd\}}t	|
 d t|ddgd\}}t	|
 d t|ddgd\}}t	|
 d W 5 Q R X d S )Nr   r$   autor(   r   r$   r   r%   )r   r-   r   r   filterre   r
   r,   r   r   r   )r   Zone_nanZall_nanr;   r0   r"   r   r   r   test_some_nan_values+  s    
z"TestHistogram.test_some_nan_valuesc                 C   s   t dd}t ddddddddd	g	}t ddd
d	g}|| }|| }t d}t||d\}}t||||d\}	}
t||d\}}t|| t|	| t|| t| t|
t| t|j|j t|
j| d S )Nz
2000-01-01Dr   r$   r%   r&   r5   r         ztimedelta64[D]r(   )r   Z
datetime64r-   rZ   r   astyper   r]   )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 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 )NrR   r$   r%   r'   r`   r(   r   )r   rZ   itemsizer-   r   r   )r   rZ   exponentr   r.   r1   r   r   r   do_signed_overflow_bounds]  s
    $"z'TestHistogram.do_signed_overflow_boundsc                 C   s@   |  tj |  tj |  tj |  tj |  tj d S r   )r   r   byteshortZintcint_Zlonglongr   r   r   r   test_signed_overflow_boundsd  s
    z)TestHistogram.test_signed_overflow_boundsc                 C   st   t |j}t dg|}t d| dg|}||d dkrDd S t j|d|d\}}t|dg t|j| d S )Nr*   r+   r   r$   r   r   Zfinfoepsr-   r   r   r   rZ   r   float_smallfloat_larger   r   rK   countZx_locr   r   r   do_precision_lower_boundk  s    z&TestHistogram.do_precision_lower_boundc                 C   st   t |j}t dg|}t dd| g|}||d dkrDd S t j|d|d\}}t|dg t|j| d S )Nr*   rC   rT   r$   r   r   r   r   r   r   do_precision_upper_bound|  s    z&TestHistogram.do_precision_upper_boundc                 C   s   |  || | || d S r   )r   r   )r   r   r   r   r   r   do_precision  s    zTestHistogram.do_precisionc                 C   sd   |  tjtj |  tjtj |  tjtj |  tjtj |  tjtj |  tjtj d S r   )r   r   ZhalfZsingledoubleZ
longdoubler   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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'   rC   r*   r+   ra   r   r   r   r   r   r   r   )r   r   r   r   r-   )r   r.   r1   r/   r   r   r   r   test_histogram_bin_edges  s    

z&TestHistogram.test_histogram_bin_edgesN)#__name__
__module____qualname__r   r   r#   r2   r>   rI   rV   rX   r_   rd   rf   ro   ru   rw   rz   r   r   r   r   r   r   r   r   r   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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   sX   ddddddddg}|D ]:}t g |d	\}}t|td
g t|td
dg qd S )Nfdscottricesturgesdoanesqrtr   stoner(   r   r$   rx   )r   estimator_list	estimatorr!   r"   r   r   r   rz     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}|  D ]~\}}tdd|d d }tdd|d d }t||f}|  D ]2\}}t||\}	}
tt|	|d||d qqJd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'   rR   r   r%   r   r   r   r   r   r   r   r      r         r6      #      G   r   2   i  i  rv   rT   r5   r$   r&   *For the {0} estimator with datasize of {1}err_msgN)itemsr   r   ri   r   r   r9   format)r   
basic_testtestlenexpectedResultsx1x2rb   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}|  D ]N\}}t|}|  D ]2\}}t||\}}tt||d||d q^qDd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&   r   r   N)r   r   r:   r   r   r9   r   )	r   Z	small_datr   r   Ztestdatr   Zexpbinsr!   r"   r   r   r   
test_small  s0          
 z$TestHistogramOptimBinNums.test_smallc                 C   s.   ddddg}|D ]}t ttdddg| q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   s^   t d}ddddddddd}| D ]0\}}t ||\}}tt||d|d q(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   z{0} estimator, No Variance testr   N)r   r\   r   r   r   r9   r   )r   Znovar_datasetZnovar_resultdictr   r   r!   r"   r   r   r   test_novariance  s    
   z)TestHistogramOptimBinNums.test_novariancec                 C   s   t d}d|dd< d|dd< t|d}t|t ddd t|d	}t|t ddg t|d
}t|t 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   r   r   r   )r   r\   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   sh   t ddd}t t ddd|f}dddd	d
}| D ]&\}}t ||\}}tt|| q<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.
        rv   r   r   ir5      rW   rA   )r   r   r   r   N)r   r   hstackr   r   r   r9   )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dd|d}tt |dd tt |dd  }}|||  S )Nr   r%   )locZscalesizer   r   )r   r   ZRandomStatenormalr9   r   )seedr   rngrb   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 tD qS )c                    s   g | ]} |qS r   r   )r   r   )r   r   r   r   r   +  s     zLTestHistogramOptimBinNums.test_scott_vs_stone.<locals>.<listcomp>.<listcomp>r   r   r'   )startstopr|   )r   Z	geomspaceroundr   r]   )r   r   )r   r   r   +  s   zATestHistogramOptimBinNums.test_scott_vs_stone.<locals>.<listcomp>r   r   r   rD   g333333?g
ףp=
?g{Gz?gQ?r%   rN   N)rK   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}|  D ]\}}tdd|d d }tdd|d d }tdd|}t|||f}|  D ]F\}}	tj||dd\}
}d|}|d|7 }tt|
|	|d qq>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.
        rR   rM   r   )r   r   r   r   r   r   r       r   P   !   E      r   rv   rT   r5   r%   r$   r   r&   r   i)ir   rJ   zFor the {0} estimatorz with datasize of {0}r   N)r   r   r   r   r   r   r   r9   )r   r   r   r   r   r   Zx3rb   r   r   r!   r"   msgr   r   r   test_simple_range2  s4    
      	
z+TestHistogramOptimBinNums.test_simple_ranger)   r   r   r   r   r   r   r   c                 C   sZ   t jdddgt jd}t j||d\}}t j|t j|d\}}t|| t|| d S )Nr      r`   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}|D ]"}t ttdddg|dddgd	 qd
S )z=
        Check that weighted data raises a TypeError
        r   r   r   r   r   r$   r%   r&   rY   N)r
   r}   r   )r   r   r   r   r   r   test_simple_weighted[  s     z.TestHistogramOptimBinNums.test_simple_weightedN)r   r   r   __doc__rz   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 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 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 ||d k t|dddgdd	gddggdd\}}t 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 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 d}d|t	t
dt	t
dt	t
df< tt dt dt dgd\}}t|| d S )Nr   rD   rE   rq   )r%   r&   r&   rT   r$   r   r&   rJ   r   r%   Tr)   r@   g      (@)r%   r&   r'   r'   rL   g      @c                 S   s   g | ]}t |qS r   )r   Zsqueeze)r   rc   r   r   r   r   ~  s     z/TestHistogramdd.test_simple.<locals>.<listcomp>r   )r'   r&   r%   r   )r5   r5   r5   r*   r5   )r   r-   r   r   r   allr	   splitrj   listrK   r:   )r   rb   Hr/   ZanswerZedzZr   r   r   r#   g  sN      

 
$   


&&zTestHistogramdd.test_simplec                 C   s<   d}t jdd}|D ] }t||\}}t|j|k qd S )N))r5   r'   rA   )rA   r'   r5   )r5   rA   r'   )r'   rA   r5   )rA   r5   r'   )r'   r5   rA   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   s<   d}t jdd}|D ] }t||\}}t|j|k qd S )N))r   r'   r5   rA   )r'   r5   r   rA   )r5   rA   r'   r   )r   rA   r5   r'   )r5   r   rA   r'   )r'   rA   r   r5   )rA   r5   r   r'   )r   r5   r'   rA   )r   r'   rA   r5   )rA   r'   r   r5   )rA   r   r5   r'   )r'   rA   r5   r   )r'   r   r5   rA   )r5   r'   rA   r   )r5   r   r'   rA   )rA   r   r'   r5   )rA   r5   r'   r   )r'   r   rA   r5   )r'   r5   rA   r   )r   rA   r'   r5   )r5   r'   r   rA   )r5   rA   r   r'   )rA   r'   r5   r   )r   r5   rA   r'   r   r'   r
  r  r   r   r   test_shape_4d  s
    zTestHistogramdd.test_shape_4dc                 C   s   t jdd}t|\}}t|dd\}}t|t dd\}}t|| t|t dd dd\}}t|| t|t dtd d\}}t|d|  d S )Nr   r%   Tr?   rY   rg   )r   r   r   r   r\   r   r]   )r   r    r.   r/   Zn_histZw_histr   r   r   ro     s    

zTestHistogramdd.test_weightsc                 C   s:   t dt}t|dd\}}t|d t dddg d S )N)r   r%   r%   r(   r   r   rC   rD   )r   rj   r]   r   r   r-   )r   rb   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dgg tj g g g gdd\}}t|td d S )Nr   r$   r(   rC   r%   )r%   r%   r%   )r   r   r   r-   rj   ry   r   r   r   rz     s     zTestHistogramdd.test_emptyc                 C   s   t d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 )NrR   r%   r'   rT   r5   r(   r$   gGz?r&   )r   r:   reshaper
   r,   r   r   )r   rb   r   r   r   test_bins_errors  s       z TestHistogramdd.test_bins_errorsc              	   C   s   t jdd t ddd}t 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 d
dt jggd	\}}t|| t j|dt j dt jggd	\}}t|| W 5 Q R X d S )Nignore)invalidrA   r&   r%   r$   r   r   r(   rT   )r   Zerrstater:   r  r-   r   rG   r   )r   rb   expectedr0   r1   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?rC   rD   r*   r(   r   r$   g8   ?gqh ?)r   r   )r   rb   r)   r.   _r   r   r   test_rightmost_binedge  s(    z&TestHistogramdd.test_rightmost_binedgec                 C   sv   t 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 )N)r   r&   rC   r*   rF   r   rD   rJ   )r   r   r   r
   r,   rG   r   r~   r   r   r   r     s    z!TestHistogramdd.test_finite_rangec                 C   sl   t dddg}t dddg}t dddg}d}t||f||fd\}}t dgdgg}t|| dS )z: Test that adjacent entries in an edge array can be equal r   r$   r%   r(   r+   r*   Nr   r-   r   r   )r   rb   rc   x_edgesy_edgesr.   r/   Zhist_expectedr   r   r   test_equal_edges  s    z TestHistogramdd.test_equal_edgesc                 C   sr   t dddg}|d }t 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   r   r5   rM   r(   r$   N)r   r-   r   r   rZ   )r   rb   rc   r  r  r.   r/   r   r   r   test_edge_dtype  s    zTestHistogramdd.test_edge_dtypec                 C   s`   d}t dgt j}t ddgt j}|| }|| }t||f||fd\}}t|d d d S )Nl            r   rT   r$   r(   )r   r   )r   r-   Zint64r   r   )r   bigrb   r  rc   r  r.   r/   r   r   r   test_large_integers  s    z#TestHistogramdd.test_large_integersc                 C   s   t dddg}t dddg}t ddgddgg}t dgdgd  dgd  dgd  }t 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%   rR   rA   r&   r6   r$   r   r(   Tr  g      ?r  )r   r  r  Zrelative_areasrb   rc   r.   r/   r   r   r   test_density_non_uniform_2d  s    	**
z+TestHistogramdd.test_density_non_uniform_2dc                 C   sb   t d}t dddddg}t||dd\}}t|f|fdd\}}t|| t||d  d S )Nr   r   r$   r&   rA   Tr?   r   r:   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 d}t dddddg}t||dd\}}t|f|fdd\}}t|| t||d  d S )	Nr   r   r$   r&   rA   Tr?   r3   r"  r#  r   r   r   test_density_via_normed7  s    

z'TestHistogramdd.test_density_via_normedc              	   C   sP   t d}t dddddg}ttd t|f|fddd\}}W 5 Q R X d S )	Nr   r   r$   r&   rA   zCannot specify bothT)r@   r4   )r   r:   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  ro   r  rz   r  r  r  r   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     =