U
    fª/e;  ã                   @   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   úD/tmp/pip-unpacked-wheel-tiezk1ph/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   Ú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   Ú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 5 Q R X t t¡ |  |jd¡ W 5 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 5 Q R X t t¡ |d  W 5 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   Útest_getitem_2d>   s     
zDim2CompatTests.test_getitem_2dc                 C   s‚   |  dd¡}tt|ƒƒ}t|ƒ|jd ks.t‚|D ]J}t|t|ƒƒsHt‚|j|jksXt‚|j	dksft‚t|ƒ|jd ks2t‚q2d S )Nr   r   r   )
r   ÚlistÚiterr$   r"   r   Ú
isinstancer   ÚdtypeÚndim)r   r   r   Ú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 5 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   )r9   )r   r   ÚisnaÚallr   ÚanyZfillnar
   )r   Zdata_missingr9   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 }zt||ƒƒ }W nb tk
rš } zD|}zt||ƒd d}	W n& tk
rˆ }
 z|
}W 5 d }
~
X Y nX W 5 d }~X Y nX t||ƒd d}	|d k	s¼|d k	rÔt|ƒt|ƒksÐt‚d S |	|ksàt‚d S )Nú*test is not applicable for this type/dtyper   r   r   )Úhasattrr%   Úskipr   ÚgetattrÚ	Exceptionr   r   )r   r   r9   Ú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< zt||ƒf ddi|—Ž}W n~ tk
rÎ } z`zt||ƒƒ  W nB tk
r´ } z$t|ƒt|ƒks˜t‚W Y ¢
W Y ¢d S d }~X Y n
X tdƒ‚W 5 d }~X Y nX |d	kr„|}	|d
krv|jj	dkrv|jj	dkrt
j}
nt
j}
| |
¡}	t|	ƒt|ƒkrHtjjdd}|j |¡ t|	ƒt|ƒksftt|	ƒƒ‚|
|	jksvt‚|  ||	¡ n|dkrž|  ||| ¡ d S )NrE   r   r   rB   r   Zddofr   ú'Both reductions should raise or neither)r?   r@   rC   rD   )rC   rD   )ÚiÚurO   z&IntegerArray.astype is broken GH#38983)Úreason)rF   r%   rG   r   rH   rI   r   r   r0   ÚkindÚpdZ
Int64DtypeZUInt64DtypeZastypeÚmarkZxfailÚnodeZ
add_markerr
   )r   r   r9   rJ   r   Úkwargsr   rK   rL   r   r0   rT   r   r   r   Útest_reductions_2d_axis0   s@    



ÿ
z(Dim2CompatTests.test_reductions_2d_axis0c           	      C   s  t ||ƒst d¡ | dd¡}zt||ƒdd}W n~ tk
r² } z`zt||ƒƒ  W nB tk
r˜ } z$t|ƒt|ƒks|t‚W Y ¢
W Y ¢d S d }~X Y n
X tdƒ‚W 5 d }~X Y nX |jdksÂt‚t||ƒƒ }t	 
|d ¡rðt	 
|¡sît|ƒ‚n|d |kst‚d S )NrE   r   r   r   rN   )r   r   )rF   r%   rG   r   rH   rI   r   r   r"   rS   r;   )	r   r   r9   rJ   r   r   rK   rL   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,   r4   r8   r%   rT   Zparametrizer>   rM   rW   rX   r   r   r   r   r      s    



.r   )	Ú__doc__Znumpyr+   r%   ZpandasrS   Z pandas.tests.extension.base.baser   r   r   r   r   r   Ú<module>   s
   