B
    Y0d;                 @   s<   d Z ddlZddlZddlZddlmZ G dd deZdS )z
Tests for 2D compatibility.
    N)BaseExtensionTestsc            	   @   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
ejdddgdd Zejdddddddgdd Zejdddddddgdd Zejdddddddgd d! Zd"S )#Dim2CompatTestsc             C   s4   | ddd}|dd}|j}| || d S )N   r      )repeatreshapeZswapaxesTassert_extension_array_equal)selfdataarr2dresultexpected r   R/var/www/html/venv/lib/python3.7/site-packages/pandas/tests/extension/base/dim2.pytest_swapaxes   s    zDim2CompatTests.test_swapaxesc             C   st   | ddd}|jddd}|d ddd}| || |jddd}| ddd}| || d S )N   r   r   r   )axisr   )r   r   deleter
   )r   r   r   r   r   r   r   r   test_delete_2d   s    zDim2CompatTests.test_delete_2dc             C   sH   | dd}|jdddgdd}|dddg dd}| || d S )Nr   r   r   )r   )r   Ztaker
   )r   r   r   r   r   r   r   r   test_take_2d    s    zDim2CompatTests.test_take_2dc             C   s`   t |dd}|dt|j dks.tt |dd}|dt|j dks\td S )Nr   r   <)reprr   counttype__name__AssertionError)r   r   resr   r   r   test_repr_2d(   s    zDim2CompatTests.test_repr_2dc          	   C   s   | dd}|j|jdfks tt|t|ks4t| d}|j|jdfksRtt|t|ksfttt | |jdf W d Q R X tt | |jd W d Q R X d S )Nr   r   )r   r   r   )r   shapesizer   lenpytestraises
ValueError)r   r   r   r   r   r   test_reshape0   s    
zDim2CompatTests.test_reshapec          	   C   s   | dd}|d }| || tt |d  W d Q R X tt |d  W d Q R X |d d  }| || |d d d d f }| || |d d df }|dg }| || |d d tjf }| ||j d S )Nr   r   r   )r   r
   r#   r$   
IndexErrornpZnewaxisr	   )r   r   r   r   r   r   r   r   test_getitem_2d>   s     
zDim2CompatTests.test_getitem_2dc             C   s   | dd}tt|}t||jd ks.txR|D ]J}t|t|sJt|j|jksZt|j	dkshtt||jd ks4tq4W d S )Nr   r   r   )
r   listiterr"   r    r   
isinstancer   dtypendim)r   r   r   Zobjsobjr   r   r   test_iter_2dX   s    
zDim2CompatTests.test_iter_2dc          	   C   s   | dd}| }|j||gdd}|||g dd}| || |j||gdd}|d dd}| || tt |j||gdd W d Q R X d S )Nr   r   r   )r   r   )r   copyZ_concat_same_typer
   r   r#   r$   r%   )r   r   leftrightr   r   r   r   r   test_concat_2dd   s    zDim2CompatTests.test_concat_2dmethodZbackfillpadc             C   sp   | ddd}|d   s&t|d   r:t|j|d}|j|d ddd}| || d S )Nr   r   r   )r6   )r   r   isnaallr   anyZfillnar
   )r   Zdata_missingr6   Zarrr   r   r   r   r   test_fillna_2d_methodv   s    z%Dim2CompatTests.test_fillna_2d_methodmeanmedianvarstdsumprodc             C   s   t ||std |dd}d }d }yt|| }W nb tk
r } zD|}yt||d d}	W n& tk
r }
 z|
}W d d }
~
X Y nX W d d }~X Y nX t||d d}	|d k	s|d k	rt|t|kstd S |	|kstd S )Nz*test is not applicable for this type/dtyper   r   )r   )hasattrr#   skipr   getattr	Exceptionr   r   )r   r   r6   requestr   Zerr_expectedZ
err_resultr   errr   err2r   r   r   test_reductions_2d_axis_none   s$    

(z,Dim2CompatTests.test_reductions_2d_axis_nonec             C   s  t ||std |dd}i }|dkr4d|d< yt||f ddi|}W nr tk
r } zTyt||  W n6 tk
r } zt|t|kstd S d }~X Y n
X tdW d d }~X Y nX |d	krx|}	|d
krj|jj	dkrj|jj	dkr t
j}
nt
j}
||
}	t|	t|kr<tjjdd}|j| t|	t|ksZtt|	|
|	jksjt| ||	 n|dkr| |||  d S )Nz*test is not applicable for this type/dtyper   r   r?   r   Zddofr   z'Both reductions should raise or neither)r<   r=   r@   rA   )r@   rA   )iurJ   z&IntegerArray.astype is broken GH#38983)reason)rB   r#   rC   r   rD   rE   r   r   r.   kindpdZ
Int64DtypeZUInt64DtypeZastypemarkZxfailnodeZ
add_markerr
   )r   r   r6   rF   r   kwargsr   rG   rH   r   r.   rO   r   r   r   test_reductions_2d_axis0   s>    




z(Dim2CompatTests.test_reductions_2d_axis0c       	      C   s   t ||std |dd}yt||dd}W nr tk
r } zTyt||  W n6 tk
r } zt|t|ks|td S d }~X Y n
X tdW d d }~X Y nX |jdkstt|| }t	
|d rt	
|st|n|d |kstd S )Nz*test is not applicable for this type/dtyper   r   )r   z'Both reductions should raise or neither)r   r   )rB   r#   rC   r   rD   rE   r   r   r    rN   r8   )	r   r   r6   rF   r   r   rG   rH   Zexpected_scalarr   r   r   test_reductions_2d_axis1   s"    

z(Dim2CompatTests.test_reductions_2d_axis1N)r   
__module____qualname__r   r   r   r   r&   r*   r1   r5   r#   rO   Zparametrizer;   rI   rR   rS   r   r   r   r   r      s   ""/r   )	__doc__numpyr)   r#   ZpandasrN   Z pandas.tests.extension.base.baser   r   r   r   r   r   <module>   s
   