o
    h                     @   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"e#j$j%dAdBdCdD Z&dEdF Z'dGS )HTestHistogramc                 C      d S N selfr   r   s/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/numpy/lib/tests/test_histograms.pysetup_method      zTestHistogram.setup_methodc                 C   r   r   r   r   r   r   r   teardown_method   r   zTestHistogram.teardown_methodc                 C   sT   d}t j|}t|\}}tt j|dd| tt 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 g d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(   r)   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  d}t j|}t|dd\}}t |t | }t|d t d}g d}t||dd\}}t|d t	t |t | d t||dd\}}t|g d	 t d}d
dddt j
g}t||dd\}}t|g d t jg d	ddt j
gdd\}}t	|dd
g d S )Nr   Tdensityr(   r   r   r(   r*      r   皙?Fr'   r   r*   r:   )r;   r;   r;                 ?      ?      ?)r   r   r   r   r    diffr   aranger   r   inf)	r   r"   r#   r$   r%   arear-   countsdmyr   r   r   test_density)   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   r=   r   	   ranger(   TrI   r8      decimalrI   weightsr8      r-   rI   rO   )r   rA   r   r   r    r   r@   )r   r$   r4   r%   wr   r   r   test_outliersI   s   zTestHistogram.test_outliersc                 C   sd   t dd }t dd }ttd t|ddg|dd\}}W d    d S 1 s+w   Y  d S )	Nr   r=      zsame shape asr(   rG   TrN   )r   rA   r   r0   r   )r   r$   rS   r4   r%   r   r   r   test_arr_weights_mismatcha   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   r=   Tr7   rO   )r   rA   r   r   
issubdtypedtypeintegerfloatingonesintfloat)r   r$   r4   r%   r   r   r   	test_typeh   s   zTestHistogram.test_typec                 C   sP   t jg dt jd}t jg dt jd}t j||dd\}}}t| d d S )N)g2VEq@gx>fQg-VT5@rY   )g!@gS@g^z@r   r,         @)r   r1   float32histogram2dr   r    )r   xycounts_histxedgesyedgesr   r   r   test_f32_roundingw   s   zTestHistogram.test_f32_roundingc                 C   s   t jg dt jd}t |\}}t )}|td}t g d\}}tt|d t	|| t	|| W d    d S 1 s@w   Y  d S )N)r(   r(   r   r`   zConverting input from .*)TTFr(   )
r   r1   uint8r   r   recordRuntimeWarningr   lenr   )r   r$   int_hist	int_edgessuprecr2   r3   r   r   r   test_bool_conversion~   s   
"z"TestHistogram.test_bool_conversionc                 C   sR  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g ddg dd
\}}t
|g d tg ddg ddd\}}t|t g dd d d  tt 	dg dg ddd\}}t|g d d S )Nr      Tr7   rW   rO   r8   r   r   rU   r-   rO   )r(   r)   r)   r+   r+   )r+   r*   r)   r(   )r+   rs   r   r(   )r-   rO   r8   g      $@ra   rG   r9   )	r)   r(   r(   r(   r(   r(   r(   r(   r(   )皙?r;   r;   g333333?)r   r   r   r\   r   r	   r!   concatenatezerosrA   r   r1   r   )r   r#   rS   r$   r%   nanbwawbnwanwbr   r   r   test_weights   s.   


 
zTestHistogram.test_weightsc                 C   s<  t g d}t g ddt g d  }t|g d|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 g d}t |d|d|d	g}t|g d|d\}}t||d|dg t|ddd	g|d
\}}t||d|dg d S )Ng?      @gffffff@)r(   rR   r)   y              ?)r)   r(   r)   )r   r)   r*   ru   r(   r)   r*   rQ   r   )Decimalrs   )r   r1   r   r	   rM   r   )r   valuesrO   r{   r|   r   r   r   r   test_exotic_weights   s    &&z!TestHistogram.test_exotic_weightsc                 C   s4   t g d}t j|ddgdd t|g d d S )Nr   r   r   )rI   r-   )r   r1   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dg t|tddg d S )Nr   r(   r,   r   r   r   r1   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 )Nr<   r.   r   numrs   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 )Nr<   r.   r   r   r?         ?rH   )r   r!   r   r
   r0   nanrB   r   r   r   r   test_finite_range   s   zTestHistogram.test_finite_rangec                 C   sR   t jdddd}ttd t j|ddgd W d    d S 1 s"w   Y  d S )	Nr<   r.   r   r   zmax must be larger thanr;   g{Gz?rH   )r   r!   r   r0   r   r   r   r   r   test_invalid_range   s   "z TestHistogram.test_invalid_rangec           
      C   s~   t g d}t j|ddd\}}|dk}|d d | }|dd  | }t|||D ]\}}}	t||k t||	k  q+d S )N)iQ  i  i  i&  i  i  i  ih   )r)   i  r-   rI   r   rR   r(   )r   r1   r   zipr   )
r   arrr2   r3   mask
left_edgesright_edgesrd   leftrightr   r   r   test_bin_edge_cases   s   z!TestHistogram.test_bin_edge_casesc                 C   s4   t g d}t j|ddd\}}t|d d d S )N	r<   r<   r<   r.   r/   ra   ra   g      @g      @         rs   r   rR   r(   )r   r1   r   r   )r   r   r2   r3   r   r   r   test_last_bin_inclusive_range   s   z+TestHistogram.test_last_bin_inclusive_rangec                 C   sd   t jdddd}t ddgddgg}ttd t j||d	 W d    d S 1 s+w   Y  d S )
Nr<   r.   r   r   r   r=   g333333?z
must be 1dr,   )r   r!   r1   r   r0   r   )r   r   r-   r   r   r   test_bin_array_dims   s
   "z!TestHistogram.test_bin_array_dimsc                 C   s^   t dg}t jg ddd}tt t j||d\}}W d    d S 1 s(w   Y  d S )Nr)   )r(   r*   r(   uint64r`   r,   )r   r1   r
   r0   r   )r   r   r-   r2   r3   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      g | ]}t d qS g?r   r1   .0ir   r   r   
<listcomp>      z9TestHistogram.test_object_array_of_0d.<locals>.<listcomp>r   c                 S   r   r   r   r   r   r   r   r     r   c                 S   r   r=   r   r   r   r   r   r     r   g     ?c                 S   r   r   r   r   r   r   r   r     r   r=   )r
   r0   r   rI   r   rB   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 d    d S 1 szw   Y  d S )Nr   r(   autor,   r   r(   r   r)   )r   r1   r   r   filterrl   r
   r0   r   r   r    )r   one_nanall_nanrp   r4   r%   r   r   r   test_some_nan_values  s    
"z"TestHistogram.test_some_nan_valuesc                 C   s   t dd}t g d}t g d}|| }|| }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D)	r   r   r(   r(   r)   r*   rs   r      )r   r)      r   ztimedelta64[D]r,   )r   
datetime64r1   rY   r   astyper   r]   )r   beginoffsetsr-   dates	date_binstdd_countd_edget_countt_edgei_counti_edger   r   r   test_datetime,  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 )NrP   r(   r)   r+   r`   r,   r   )r   rY   itemsizer1   r   r   )r   rY   exponentr   r2   r5   r   r   r   do_signed_overflow_boundsE  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shortintcint_longlongr   r   r   r   test_signed_overflow_boundsL  s
   z)TestHistogram.test_signed_overflow_boundsc                 C   st   t |j}t dg|}t d| dg|}||d dkr"d S t j|d|d\}}t|dg t|j| d S )Nr.   r/   r   r(   r   r   finfoepsr1   r   r   r   rY   r   float_smallfloat_larger   r   rI   countx_locr   r   r   do_precision_lower_boundS  s   z&TestHistogram.do_precision_lower_boundc                 C   st   t |j}t dg|}t dd| g|}||d dkr"d S t j|d|d\}}t|dg t|j| d S )Nr.   r<   rR   r(   r   r   r   r   r   r   r   do_precision_upper_boundb  s   z&TestHistogram.do_precision_upper_boundc                 C   s   |  || | || d S r   )r   r   )r   r   r   r   r   r   do_precisionr  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   halfsingledouble
longdoubler   r   r   r   test_precisionv  s   zTestHistogram.test_precisionc                 C   s   t g dddg\}}tg dddg}t|| tg d}t |ddd\}}t|ddd}t|| t |dd	d\}}t|dd	d}t|| d S )
Nr'   r(   r)   r   r   r   r   r   r   )r   r   r   r   r1   )r   r2   r5   r3   r   r   r   r   test_histogram_bin_edges  s   

z&TestHistogram.test_histogram_bin_edgesc                 C   sR   t ddgd }tjtdd t|dd W d    d S 1 s"w   Y  d S )Nr(   g     ?r   zToo many bins for data range)matchr,   )r   r1   pytestraisesr0   r   )r   r   r   r   r   test_small_value_range  s   "z$TestHistogram.test_small_value_rangez,Bad memory reports lead to OOM in ci testing)reasonc                 C   sJ   t ddg}d}d}t d}t j||||fd}tt|td d S )Ni r*   i  i>  )sampler-   )r(   r)   )r   rx   rA   r   r   type)r   r   xbinsybinszbinsr2   r   r   r   test_big_arrays  s   
zTestHistogram.test_big_arraysc                 C   s<   t jt jdgddddd\}}t ddg}t|| d S )	Ng$xz>f8r`   r)   )gx0gel	  r   r(   r   )r   r   r1   r   )r   r2   r5   expected_histr   r   r   test_gh_23110  s   
zTestHistogram.test_gh_23110N)(__name__
__module____qualname__r   r   r&   r6   rF   rT   rV   r_   ri   rr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   markskipr   r   r   r   r   r   r      sH    
 	
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g ddd Zejdg ddd Zdd Zdd ZdS )TestHistogramOptimBinNumsz]
    Provide test coverage when using provided estimators for optimal number of
    bins
    c                 C   sL   g d}|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(   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}|  D ]?\}}tdd|d d }tdd|d d }t||f}|  D ]\}}t||\}	}
tt|	|d||d qJq%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+   rP   r   r)   r      r         rG      #      G   r   2   i  i  r   rR   rs   r(   r*   *For the {0} estimator with datasize of {1}err_msgN)itemsr   r!   rw   r   r   rm   format)r   
basic_testtestlenexpectedResultsx1x2rd   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 ]*\}}t|t}|  D ]\}}t||\}}tt||d||d q2q"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*   r  r  N)	r	  r   rA   r   r^   r   r   rm   r
  )	r   	small_datr  r  testdatr   expbinsr$   r%   r   r   r   
test_small  s&   z$TestHistogramOptimBinNums.test_smallc                 C   s(   g d}|D ]}t ttg d| qdS )zS
        Check a Value Error is thrown when an unknown string is passed in
        )madfreeman
histogramsIQRr  N)r
   r0   r   )r   
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 ]\}}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   rm   r
  )r   novar_dataset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.
          r   Nr*   r   r   r   r   r   )r   r\   r   r   r!   r1   )r   lim_var_data
edges_autoedges_fd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.
        r   r   r  irs      rU   r:   )r   r   r   r   N)r   r!   hstackr	  r   r   rm   )r   xcenteroutlier_datasetoutlier_resultdictr   r  r$   r%   r   r   r   test_outlier
  s   z&TestHistogramOptimBinNums.test_outlierc                    sJ   dd   fddt dD }ttj|ddd }t|g d	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)   )locscalesizer   r   )r   r   RandomStatenormalrm   r   )seedr/  rngrd   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/  )r4  r2  r   r   r   '  r   zLTestHistogramOptimBinNums.test_scott_vs_stone.<locals>.<listcomp>.<listcomp>r   r   r+   )startstopr   )r   	geomspaceroundr   r]   )r   r4  )r2  r   r   '  s    .zATestHistogramOptimBinNums.test_scott_vs_stone.<locals>.<listcomp>r   r   r   r=   )g333333?g
ףp=
?g{Gz?gQ?r)   rL   N)rI   absr   meanr   )r   llavgr   r9  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 ]Q\}}tdd|d d }tdd|d d }tdd|}t|||f}|  D ]#\}}	tj||dd\}
}d|}|d|7 }tt|
|	|d qLq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.
        rP   rK   r  )r   r   r   r   r   r   r       r   P   !   E      r  r   rR   rs   r)   r(   r   r*   r&  i)ir   rH   zFor the {0} estimatorz with datasize of {0}r  N)r	  r   r!   r(  r   r
  r   rm   )r   r  r  r  r  r  x3rd   r   r  r$   r%   msgr   r   r   test_simple_range.  s,   
	
z+TestHistogramOptimBinNums.test_simple_ranger-   )r   r   r   r   r   r   r   c                 C   sX   t jg dt jd}t j||d\}}t j|t j|d\}}t|| t|| d S )N)r      r`   r,   )r   r1   int8r   r   int32r   )r   r-   r$   r2   r3   hist32edges32r   r   r   test_signed_integer_dataM  s
   
z2TestHistogramOptimBinNums.test_signed_integer_datac              	   C   sd   t  %}|dkr|t ttttdd|td W d   dS 1 s+w   Y  dS )zE
        Test that bin width for integer data is at least 1.
        r   rG   r  N)r   r   rl   r   r   r   tilerA   )r   r-   rp   r   r   r   test_integerW  s   
"z&TestHistogramOptimBinNums.test_integerc                 C   sV   t tttdddtdd  t tttddddgddg dS )	zX
        Test that the bin-width>=1 requirement *only* applies to auto binning.
        rG   r  r   r   r)   r;   rv   N)r   r   r   rN  rA   r   r   r   r   test_integer_non_autod  s   z/TestHistogramOptimBinNums.test_integer_non_autoc                 C   s0   g d}|D ]}t ttg d|g dd qdS )z=
        Check that weighted data raises a TypeError
        )r   r   r   r   r   r  rW   N)r
   r   r   )r   r   r   r   r   r   test_simple_weightedo  s   z.TestHistogramOptimBinNums.test_simple_weightedN)r   r   r   __doc__r   r&   r  r  r  r%  r,  r>  rF  r   r   parametrizerM  rO  rP  rQ  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S ) TestHistogramddc              	   C   s:  t g dg dg dg dg dg dg}t|ddd	gd
dgd
dggd\}}t g dg dg dgg dg dg dgg}t|| g dg dg dg}t||dd\}}tt ||d k t|ddd	gd
dgd
dggdd\}}t g dg dg dgg dg dg d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 )&N)r   r=   r>   )r   r>   r   )r   r   r=   )r=   r=   r>   )r=   r>   r   )r=   r   r   )r)   r*   r*   rR   r(   r   r*   rH   )r   r(   r   )r   r   r(   )r(   r   r   )rG  r   r)   )r   r(   r)   r*   Tr-   r8   g      (@)r)   r*   r+   r+   rJ   )r   r(   r   r   )r   r   r(   r   )r(   r   r   r   g      @c                 S   s   g | ]}t |qS r   )r   squeeze)r   re   r   r   r   r     r   z/TestHistogramdd.test_simple.<locals>.<listcomp>r   )r+   r*   r)   rG  r)   r   )rs   rs   rs   r.   rs   )r   r1   r   r   r   allr	   splitrx   listrI   rA   )r   rd   Hr3   answeredzZr   r   r   r&   {  sF   





&&zTestHistogramdd.test_simplec                 C   <   d}t jdd}|D ]}t||\}}t|j|k qd S )N))rs   r+   r:   )r:   r+   rs   )rs   r:   r+   )r+   r:   rs   )r:   rs   r+   )r+   rs   r:   r   r*   r   r   r   r   r   shaper   r-   rr%   rZ  r3   r   r   r   test_shape_3d  s   zTestHistogramdd.test_shape_3dc                 C   r_  )N))r   r+   rs   r:   )r+   rs   r   r:   )rs   r:   r+   r   )r   r:   rs   r+   )rs   r   r:   r+   )r+   r:   r   rs   )r:   rs   r   r+   )r   rs   r+   r:   )r   r+   r:   rs   )r:   r+   r   rs   )r:   r   rs   r+   )r+   r:   rs   r   )r+   r   rs   r:   )rs   r+   r:   r   )rs   r   r+   r:   )r:   r   r+   rs   )r:   rs   r+   r   )r+   r   r:   rs   )r+   rs   r:   r   )r   r:   r+   rs   )rs   r+   r   r:   )rs   r:   r   r+   )r:   r+   rs   r   )r   rs   r:   r+   r   r+   r`  rb  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)   Tr7   rW   rt   )r   r   r   r   r\   r   r]   )r   r#   r2   r3   n_histw_histr   r   r   r     s   

zTestHistogramdd.test_weightsc                 C   s8   t dt}t|dd\}}t|d t g d d S )N)r   r)   r)   r,   r   )r   r<   r=   )r   rx   r]   r   r   r1   )r   rd   r2   r3   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,   r<   r)   )r)   r)   r)   )r   r   r   r1   rx   r   r   r   r   r     s    zTestHistogramdd.test_emptyc              	   C   s~   t ddd}ttt j|g dd ttt j|g dd ttt j|dddg dgd tt j|dddg d	gd d S )
NrP   r)   r+   )rR   r)   r+   rs   r,   )r(   gGz?r(   r(   r(   )r(   r)   r*   r'   )r   rA   reshaper
   r0   r   r   )r   rd   r   r   r   test_bins_errors  s   "z TestHistogramdd.test_bins_errorsc              	   C   s   t jddb 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 d    d S 1 skw   Y  d S )Nignore)invalidr:   r*   r)   r(   r   r   r,   rR   )r   errstaterA   rj  r1   r   rB   r   )r   rd   expectedr4   r5   r   r   r   test_inf_edges  s    
$
""zTestHistogramdd.test_inf_edgesc                 C   s  dg}g dg}t ||d\}}t|d dk t|d dk dg}g dg}t ||d\}}t|d dk t|d dk dg}g dg}t ||d\}}t|d dk t|d dk d	g}g dg}t ||d\}}t|d dk t|d dk d S )
NgG?)r<   r=   r.   r,   r   r<   r(   r.   g8   ?gqh ?)r   r   )r   rd   r-   r2   _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*   r<   r.   r?   r   r=   rH   )r   r   r   r
   r0   rB   r   r   r   r   r   r     s   
z!TestHistogramdd.test_finite_rangec                 C   sf   t g d}t g d}t g d}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)   r(   r,   r/   r.   Nr   r1   r   r   )r   rd   re   x_edgesy_edgesr2   r3   hist_expectedr   r   r   test_equal_edges  s   z TestHistogramdd.test_equal_edgesc                 C   sl   t g d}|d }t g d}|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   r   )r   rs   rK   r   r,   r   r(   N)r   r1   r   r   rY   )r   rd   re   rt  ru  r2   r3   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   rR   r(   r,   )r   r   )r   r1   int64r   r   )r   bigrd   rt  re   ru  r2   r3   r   r   r   test_large_integers  s   z#TestHistogramdd.test_large_integersc                 C   s   t g d}t g d}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 )N)r   r)   rP   )r   r:   rP   r*   rG   r(   r   r,   TrU  g      ?rs  )r   rt  ru  relative_areasrd   re   r2   r3   r   r   r   test_density_non_uniform_2d'  s   	**
z+TestHistogramdd.test_density_non_uniform_2dc                 C   s\   t d}t g d}t||dd\}}t|f|fdd\}}t|| t||d  d S )Nr   r9   Tr7   r   )r   rA   r1   r   r   r   )r   r#   r-   r2   r3   hist_ddedges_ddr   r   r   test_density_non_uniform_1dB  s   

z+TestHistogramdd.test_density_non_uniform_1dN)r   r   r   r&   rd  re  r   rh  r   rk  rp  rr  r   rw  rx  r{  r}  r  r   r   r   r   rT  y  s     %	
rT  )numpyr   r   r   r   numpy.testingr   r   r   r   r	   r
   r   r   r   r   r   r   r   rT  r   r   r   r   <module>   s    0    U