U
    sVc                     @   s>   d dl Zd dlZd dlmZmZ d dlmZ G dd dZ	dS )    N)	DataFrameSeriesc                   @   s  e Zd Zdd Zdd Zdd Zdd Zej	d	d
dgdd Z
ej	d	d
dgej	ddddgedddggej	dddddgdddgdddggfddddgdddgdddggfgdd Zej	ddddgdd  Zd!d" Zd#d$ Zd%d& ZdS )'TestDataFrameClipc                 C   sL   |    }| }|j||d}|j|k r4t|j|jk sHtd S )Nupperlower)mediancopyclipvaluesanyAssertionErrorall)selffloat_framer   originaldouble r   H/tmp/pip-unpacked-wheel-xj8nt62q/pandas/tests/frame/methods/test_clip.py	test_clip   s
    zTestDataFrameClip.test_clipc                 C   sF   |    }| }|j||dd}|d ks0t|j|k rBtd S )NT)r   r   inplace)r   r	   r
   r   r   r   )r   r   r   Z
frame_copyZreturn_valuer   r   r   test_inplace_clip   s
    z#TestDataFrameClip.test_inplace_clipc                 C   s   t tjdd}dD ]\}}|||}t||t|| }}|j|k}|j|k}| | @ }|j| |k svt	|j| |k st	|j| |j| k st	qd S )N     ))   )r   r   )
r   nprandomrandnr
   minmaxr   r   r   )r   dflbub
clipped_dflb_maskub_maskmaskr   r   r   test_dataframe_clip   s    

z%TestDataFrameClip.test_dataframe_clipc                 C   s   t dddgdtjdgd}|dd}t dddgdtjdgd}t|| t dddgdd	d
ggdddgd}|j}|jddj}t|| d S )Nr   r      g      ?      @)AB       @g333333@   gffffff@ZfoobarZbazcolumns)r   )r   r   nanr
   tmassert_frame_equalZdtypesassert_series_equal)r   r!   resultexpectedr   r   r   test_clip_mixed_numeric.   s    "z)TestDataFrameClip.test_clip_mixed_numericr   TFc                 C   s  t tjdd}ttjd}|d }| }|j||d|d}|rL|}tdD ]}|jd d |f |k}|jd d |f |k}	| |	 @ }
|j	||f }t
j||| dd |j|kst|j	|	|f }t
j|||	 dd |j|kstt
|j	|
|f |j	|
|f  qTd S )Nr   r   r   r   )axisr   F)Zcheck_names)r   r   r   r   r   r	   r
   rangeZiloclocr3   r5   namer   )r   r   r!   r"   r#   r   r$   ir%   r&   r'   r6   r   r   r   test_clip_against_series;   s$    z*TestDataFrameClip.test_clip_against_seriesr   r   r)   r.   zaxis,resr   r-   r*   g      @g      @g      @g      @r   c           	      C   sR   |j dd}|j|dddg||d}t||j|jd}|r>|}tj||dd d S )	NT)deep         )r   r   r9   r   )r1   index)Zcheck_exact)r	   r
   r   r1   rC   r3   r4   )	r   Zsimple_framer   r   r9   resr   r6   r7   r   r   r   test_clip_against_list_likeX   s    z-TestDataFrameClip.test_clip_against_list_liker9   Nc           	      C   s   t tjdd}t tjdd}|d }|j|||d}||k}||k}| | @ }t|| ||  t|| ||  t|| ||  d S )Nr   r   r   )r9   )r   r   r   r   r
   r3   r4   )	r   r9   r!   r"   r#   r$   r%   r&   r'   r   r   r   test_clip_against_framel   s    z)TestDataFrameClip.test_clip_against_framec           
      C   s   t tjddddddgd}t tjddddddgd}t |jd ddddgd}|jd	|d
}|jd	||j d
}|j|dd
}|j||j dd
}|j||d
}|j||j ||j d
}	t|| t|| t||	 d S )Nr   r.   r+   r,   CDr0   r   r   )r   r   r)   )	r   r   r   r   r   r
   r1   r3   r4   )
r   Zdf1Zdf2Zdf3Zresult_upperZexpected_upperZresult_lowerZexpected_lowerZresult_lower_upperZexpected_lower_upperr   r   r   #test_clip_against_unordered_columns|   s    z5TestDataFrameClip.test_clip_against_unordered_columnsc                 C   sR  t |tj| t |jtjtjd| tdddgdddgdd	d
gd}|jddtjgdd}tdddgdddgdd	d
gd}t || |jddtjgdd}tdddgdddgdd	d
gd}t || d
ddddgdddd	dgd}t|}tddtjddg}|j|dd}td
ddddgdddd	dgd}t || dS )z&Should process np.nan argument as Noner   r   r   r)   r.   r@   rA   rB      	   )col_0col_1Zcol_2r   )r   r9   r   i)rL   rM   N)r3   r4   r
   r   r2   r   r   NaN)r   r   r!   r6   r7   datatr   r   r   test_clip_with_na_args   s&    ""z(TestDataFrameClip.test_clip_with_na_argsc              	   C   s`   t ddddgi}d}tjt|d |ddd}W 5 Q R X t ddddgi}t|| d S )Nar   r   r)   zIn a future version of pandas all arguments of DataFrame.clip except for the arguments 'lower' and 'upper' will be keyword-only)matchr   )r   r3   Zassert_produces_warningFutureWarningr
   r4   )r   r!   msgr6   r7   r   r   r   test_clip_pos_args_deprecation   s    z0TestDataFrameClip.test_clip_pos_args_deprecation)__name__
__module____qualname__r   r   r(   r8   pytestmarkZparametrizer>   r   ZasarrayrE   rF   rI   rU   rZ   r   r   r   r   r      s(   
	
"
r   )
Znumpyr   r^   Zpandasr   r   Zpandas._testingZ_testingr3   r   r   r   r   r   <module>   s   