U
    sVc&                     @   sb   d dl Zd dlZd dlmZmZmZ d dlmZm	Z	 G dd dZ
G dd dZG dd	 d	ZdS )
    N)NaT	Timestampisna)SparseArraySparseDtypec                	   @   s  e Zd Zejddddgddfdddgddfdddgdd	fgd
d Zejddddgddfdddgddfdddgdd	fgdd Zejddddgddfdddgddfd	dd	gdd	fgdd Zejddddgddfdddgddfd	dd	gdd	fgdd Z	dd Z
ejdeddejdgedddggejdddejgejdddejfgdd Zdd Zdd Zdd  Zd!d" Zd#S )$TestReductionszdata,pos,negTF      r   g      ?g       @g        c                 C   sd   t | }|stt ||d }|s,t||d< t | }|rHtt ||d }|r`td S N
fill_valuer   )r   allAssertionErrorselfdataposnegout r   N/tmp/pip-unpacked-wheel-xj8nt62q/pandas/tests/arrays/sparse/test_reductions.pytest_all   s    
zTestReductions.test_allc              	   C   s   t t|}|stt t||d}|s0t||d< t t|}|rNtt t||d}|rhtd}tjt|d t jt|t g d W 5 Q R X d S Nr   r   $the 'out' parameter is not supportedmatchr   )npr   r   r   pytestraises
ValueErrorarrayr   r   r   r   r   msgr   r   r   test_numpy_all'   s    
zTestReductions.test_numpy_allc                 C   sd   t | }|stt ||d }|s,t||d< t | }|rHtt ||d }|r`td S r
   )r   anyr   r   r   r   r   test_anyC   s    
zTestReductions.test_anyc              	   C   s   t t|}|stt t||d}|s0t||d< t t|}|rNtt t||d}|rhtd}tjt|d t jt||d W 5 Q R X d S r   )r   r%   r   r   r   r   r    r"   r   r   r   test_numpy_anyZ   s    
zTestReductions.test_numpy_anyc                 C   sp   t dt}t| }|dks(tt j|d< t|dd }|dksNtt|t jd }|dksltd S )N
        F@   r	   r         D@)r   arangeastypefloatr   sumr   nanr   r   r   r   r   r   test_sumu   s    
zTestReductions.test_sumarrr   zmin_count, expected)   r	      c                 C   sB   t ||d}|j|d}t|r2t|s>tn||ks>td S )Nr   	min_count)r   r/   r   isnanr   )r   r3   r   r7   expectedZsparrayresultr   r   r   test_sum_min_count   s
    
z!TestReductions.test_sum_min_countc                 C   sL   t ddgd tjdd}|jdd}|dks0t|jdd}t|sHtd S )NFTr*   )dtyper   r   r6      )r   r   Zbool_r/   r   r   )r   Z	spar_boolresr   r   r   test_bool_sum_min_count   s
    z&TestReductions.test_bool_sum_min_countc              	   C   s   t dt}t t|}|dks*tt j|d< t t|dd}|dksRtt t|t jd}|dksrtd}tj	t
|d t jt|t jd	 W 5 Q R X d
}tj	t
|d t jt||d W 5 Q R X d S )Nr(   r)   r*   r	   r   r+   &the 'dtype' parameter is not supportedr   r<   r   r   )r   r,   r-   r.   r/   r   r   r0   r   r   r    int64r   r   r   r#   r   r   r   test_numpy_sum   s    
zTestReductions.test_numpy_sumc                 C   sN   t dt}t| }|dks(tt j|d< t| }|dksJtd S )Nr(         @r*   rq@)r   r,   r-   r.   r   meanr   r0   r1   r   r   r   	test_mean   s    
zTestReductions.test_meanc              	   C   s   t dt}t t|}|dks*tt j|d< t t|}|dksNtd}tj	t
|d t jt|t jd W 5 Q R X d}tj	t
|d t jt||d	 W 5 Q R X d S )
Nr(   rE   r*   rF   r@   r   rA   r   r   )r   r,   r-   r.   rG   r   r   r0   r   r   r    rB   rC   r   r   r   test_numpy_mean   s    
zTestReductions.test_numpy_meanN)__name__
__module____qualname__r   markparametrizer   r$   r&   r'   r2   r   r!   r0   r;   r?   rD   rH   rI   r   r   r   r   r      sX   



"		r   c                   @   sH  e Zd Zejdeddgdgfed dgdgfedddej	dgdgdgfeej	gd ej	gej	gfeg ej	gej	gfgd	d
 Z
ejdddgdd Zdd Zejdddgejdeg eej	ej	ggejdeejej	ej	feejdej	fedeefededefgdd ZdS )
TestMinMaxz"raw_data,max_expected,min_expectedg      @r5   r   r   r	   r*   c                 C   s   t |}| }| }||ks$t||ks0t|jdd}|jdd}t| rtt|sdtt|stn||kst||kstd S )NFZskipna)r   maxminr   r   r8   r%   )r   raw_datamax_expectedmin_expectedr3   
max_result
min_resultr   r   r   test_nan_fill_value   s    zTestMinMax.test_nan_fill_valuez$fill_value,max_expected,min_expected)d   rZ   r   )r   r[   c                 C   sJ   t t|ddgtd|d}| }||ks2t| }||ksFtd S )Nr   r   intrA   )r   r   r!   r   rR   r   rS   )r   r   rU   rV   r3   rW   rX   r   r   r   test_fill_value   s     zTestMinMax.test_fill_valuec                 C   s   d}t t|||gtd|d}t|jdks4t| |ksDt| |ksTt|jdd|ksht|jdd|ks|td S )NrZ   r\   rA   r   FrQ   )	r   r   r!   r   lenZ_valid_sp_valuesr   rR   rS   )r   Zfvr3   r   r   r   test_only_fill_value   s    zTestMinMax.test_only_fill_valuefuncrS   rR   r   zdtype,expectedzdatetime64[ns]z
2018-05-05c                 C   sJ   t ||d}t|| }|tkr8|tksFt|sFtnt|sFtd S )NrA   )r   getattrr   r   Zisnatr   r8   )r   r`   r   r<   r9   r3   r:   r   r   r    test_na_value_if_no_valid_values   s
    z+TestMinMax.test_na_value_if_no_valid_valuesN)rJ   rK   rL   r   rM   rN   r   r,   r!   r0   rY   r]   r_   r   Zfloat64r   r   rb   r   r   r   r   rO      s:   




$	rO   c                   @   s  e Zd Zejdedddddgddfedddddgddfeejdddejdgddfeejdddejdgddfeejdddejdgddddfeejdddejdgddddfeejdddejdgddddfeejdddejdgddddfeejdddejdgd	dddfedgd
 dg dddd
fedgd
 dg dddd
fedgd
 dg dddd
fedgdgd
  ddddfedgdgd
  ddddfedgdgd
  ddddfedgdgd
  ddddfgdd Z	ejdeg dfeg dfgdd Z
dS )TestArgmaxArgminz#arr,argmax_expected,argmin_expectedr   r	   r   r*   r   r4   r(   c                 C   s,   |  }| }||kst||ks(td S )N)argmaxargminr   )r   r3   Zargmax_expectedZargmin_expectedZargmax_resultZargmin_resultr   r   r   test_argmax_argmin  s    z#TestArgmaxArgmin.test_argmax_argminz
arr,methodrf   rg   c              	   C   sB   d| d}t jt|d |dkr,| n|  W 5 Q R X d S )Nzattempt to get z of an empty sequencer   rf   )r   r   r    rf   rg   )r   r3   methodr#   r   r   r   test_empty_array-  s    z!TestArgmaxArgmin.test_empty_arrayN)rJ   rK   rL   r   rM   rN   r   r   r0   rh   rj   r   r   r   r   rc     s4        
rc   )Znumpyr   r   Zpandasr   r   r   Zpandas.core.arrays.sparser   r   r   rO   rc   r   r   r   r   <module>   s    8K