B
    `8G                 @   sd   d dl Z d dlZd dlZd dlmZ d dlZd dlm	Z
 d dlmZ ddlmZ G dd deZdS )    N)is_bool_dtype)nargsort   )BaseExtensionTestsc               @   s  e Zd ZdZejdddg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ddgdd Zejdddgdd Zejddejd d!d"ged#d$fd%ejd"d d!ged#d$fgd&d' Zejd(ddgd)d* Zejd(ddgd+d, Zejd(ddgd-d. Zejd/ejd0d1 gejdd2d1 ejgd3d4 Zejd5d6d7gd8d9 Zejd5d6d7gd:d; Zd<d= Zd>d? Z d@dA Z!dBdC Z"dDdE Z#dFdG Z$dHdI Z%ejdJddgejdKd7d dLdMd6d6gfd!d!d"d dLdMgfd d6d6d!d"d gfgdNdO Z&dPdQ Z'ejdRd"d7gdSdT Z(ejdKdUd6d6ggd6d"d6ggd!d!d"ggd"d6d!ggdMd6d6gggdVdW Z)ejdRdUd6d!d"dMgdXdY Z*dZd[ Z+d\d] Z,d^d_ Z-d`da Z.dbdc Z/ddde Z0ejdfd!d"d d"d dLggdgdh Z1ejdid e2d"dje3dkfd6e2 e3dlfd"d ge2 e3dmfd e2dndoe4dpfgdqdr Z5ejd/ejejej6gdsdt Z7duS )vBaseMethodsTestsz%Various Series and DataFrame methods.dropnaTFc             C   sf   |d d }|r&t ||   }n|}t|j|d }t|j|d }| || d S )N
   )r   )nparrayisnapdSeriesvalue_counts
sort_indexassert_series_equal)selfZall_datar   otherresultexpected r   R/home/dcms/DCMS/lib/python3.7/site-packages/pandas/tests/extension/base/methods.pytest_value_counts   s    z"BaseMethodsTests.test_value_countsc             C   sr   |d d   }t||   }tj||jdjdd }tjdt	| gt	| |j
d}| || d S )Nr   )dtypeT)	normalizer   )index)uniquer	   r
   r   r   r   r   r   r   lenr   r   )r   datavaluesr   r   r   r   r    test_value_counts_with_normalize   s
    "z1BaseMethodsTests.test_value_counts_with_normalizec             C   s8   t d|i}|jdd}t ddg}| || d S )NAcolumns)axisr   r   )r   	DataFramecountr   r   )r   data_missingdfr   r   r   r   r   
test_count+   s    zBaseMethodsTests.test_countc             C   s&   t |}| }d}||ks"td S )Nr   )r   r   r$   AssertionError)r   r%   serr   r   r   r   r   test_series_count1   s    
z"BaseMethodsTests.test_series_countc             C   s$   t |t}t|t js td S )N)r   r   applyid
isinstancer(   )r   r   r   r   r   r   test_apply_simple_series8   s    z)BaseMethodsTests.test_apply_simple_seriesc             C   s:   t | }t tjdddgtjd}| || d S )N   r   r   )r   )r   r   argsortr	   r
   int64r   )r   data_for_sortingr   r   r   r   r   test_argsort<   s    zBaseMethodsTests.test_argsortc             C   sN   |  }tjdddgtdd}|jddd}|jddd}t|| d S )	Nr/   r   r   int)r   r1   safe)Zcasting)r0   r	   r
   r   Zastypetmassert_numpy_array_equal)r   data_missing_for_sortingr   r   r   r   r   test_argsort_missing_arrayA   s
    z+BaseMethodsTests.test_argsort_missing_arrayc             C   s:   t | }t tjdddgtjd}| || d S )Nr   r   )r   )r   r   r0   r	   r
   r1   r   )r   r8   r   r   r   r   r   test_argsort_missingI   s    z%BaseMethodsTests.test_argsort_missingc             C   sz   |  dkst| dks t|ddddddg}|  dksFt| dksVt|  dksft| dksvtd S )Nr   r/   r      )argmaxr(   argmintake)r   r2   r8   na_valuer   r   r   r   test_argmin_argmaxN   s    z#BaseMethodsTests.test_argmin_argmaxmethodr=   r>   c          	   C   s6   d}t jt|d t|d d |  W d Q R X d S )Nzattempt to get)matchr   )pytestraises
ValueErrorgetattr)r   rB   r   err_msgr   r   r   test_argmin_argmax_empty_array_   s    z/BaseMethodsTests.test_argmin_argmax_empty_arrayc          	   C   sF   d}t |j||g|jd}tjt|d t||  W d Q R X d S )Nzattempt to get)r   )rC   )type_from_sequencer   rD   rE   rF   rG   )r   rB   r   r@   rH   data_nar   r   r   test_argmin_argmax_all_nah   s    z*BaseMethodsTests.test_argmin_argmax_all_nazna_position, expectedlastr/   r   r   intp)r   firstc             C   s   t ||d}t|| d S )N)na_position)r   r6   r7   )r   r8   rQ   r   r   r   r   r   test_nargsortr   s    	zBaseMethodsTests.test_nargsort	ascendingc             C   sJ   t |}|j||d}|jdddg }|s:|d d d }| || d S )N)rS   keyr/   r   r   r:   )r   r   sort_valuesilocr   )r   r2   rS   sort_by_keyr)   r   r   r   r   r   test_sort_values~   s    
z!BaseMethodsTests.test_sort_valuesc             C   sN   t |}|j||d}|r.|jdddg }n|jdddg }| || d S )N)rS   rT   r/   r   r   )r   r   rU   rV   r   )r   r8   rS   rW   r)   r   r   r   r   r   test_sort_values_missing   s    
z)BaseMethodsTests.test_sort_values_missingc             C   s`   t dddg|d}|ddg}t jdddg|dddgddddgd}| || d S )Nr   r/   )r    Br    rZ   r   )r   )r   r#   rU   r?   assert_frame_equal)r   r2   rS   r&   r   r   r   r   r   test_sort_values_frame   s
    (z'BaseMethodsTests.test_sort_values_frameboxc             C   s   | S )Nr   )xr   r   r   <lambda>       zBaseMethodsTests.<lambda>c             C   s   |   S )N)r   )r^   r   r   r   r_      r`   c             C   s\   || |d |d g}||}t|dks2tt|t|sDt|d |d ksXtd S )Nr   r   )rK   r   r(   r-   rJ   )r   r   r]   rB   Z
duplicatedr   r   r   r   test_unique   s
    zBaseMethodsTests.test_uniquena_sentinelr:   c          	   C   s^   t j||d\}}tjdd||ddddgtjd}|dddg}t|| | || d S )N)rb   r   r   r/   )r         )	r   	factorizer	   r
   rO   r?   r6   r7   assert_extension_array_equal)r   data_for_groupingrb   codesuniquesexpected_codesexpected_uniquesr   r   r   test_factorize   s    zBaseMethodsTests.test_factorizec             C   sh   t j||d\}}|j|d\}}t|| | || t|tt |ksTt|j|jksdtd S )N)rb   )	r   rf   r6   r7   rg   r   r   r(   r   )r   rh   rb   Zcodes_1Z	uniques_1Zcodes_2Z	uniques_2r   r   r   test_factorize_equivalence   s    z+BaseMethodsTests.test_factorize_equivalencec             C   s^   t |d d \}}tjg tjd}t|jg |d d jd}t	|| | 
|| d S )Nr   )r   )r   rf   r	   r
   rO   rJ   rK   r   r6   r7   rg   )r   r   ri   rj   rk   rl   r   r   r   test_factorize_empty   s
    z%BaseMethodsTests.test_factorize_emptyc             C   sH   | ddg}td|i}|jd }||}|jj|jjk	sDtd S )Nr   r    )r   r   )r?   r   r#   rV   fillnar    r   r(   )r   r%   arrr&   
filled_valr   r   r   r   test_fillna_copy_frame   s
    

z'BaseMethodsTests.test_fillna_copy_framec             C   sL   | ddg}t|}|d }||}|j|jk	s:t|j|ksHtd S )Nr   r   )r?   r   r   rp   Z_valuesr(   )r   r%   rq   r)   rr   r   r   r   r   test_fillna_copy_series   s    

z(BaseMethodsTests.test_fillna_copy_seriesc          	   C   s4   d}t jt|d ||dg W d Q R X d S )Nz!Length of 'value' does not match.)rC   r   )rD   rE   rF   rp   r?   )r   r%   msgr   r   r   test_fillna_length_mismatch   s    z,BaseMethodsTests.test_fillna_length_mismatchc                s   |d\}}t |}t |}||dd }t dd tt|t|D }| || |jd  | dd }t  fddt|D }| || d S )	Nr/   c             S   s   | |kS )Nr   )x1x2r   r   r   r_      r`   z2BaseMethodsTests.test_combine_le.<locals>.<lambda>c             S   s   g | ]\}}||kqS r   r   ).0abr   r   r   
<listcomp>   s    z4BaseMethodsTests.test_combine_le.<locals>.<listcomp>r   c             S   s   | |kS )Nr   )rw   rx   r   r   r   r_      r`   c                s   g | ]}| kqS r   r   )ry   rz   )valr   r   r|      s    )r   r   combineziplistr   rV   )r   data_repeated
orig_data1
orig_data2s1s2r   r   r   )r}   r   test_combine_le   s    


z BaseMethodsTests.test_combine_lec          
      s   |d\}}t |}t |}||dd }tjdd. t |dd tt|t|D }W d Q R X | || |j	d  | d	d }t | fd
dt|D }| || d S )Nr/   c             S   s   | | S )Nr   )rw   rx   r   r   r   r_      r`   z3BaseMethodsTests.test_combine_add.<locals>.<lambda>ignore)Zoverc             S   s   g | ]\}}|| qS r   r   )ry   rz   r{   r   r   r   r|      s    z5BaseMethodsTests.test_combine_add.<locals>.<listcomp>r   c             S   s   | | S )Nr   )rw   rx   r   r   r   r_      r`   c                s   g | ]}|  qS r   r   )ry   rz   )r}   r   r   r|      s    )
r   r   r~   r	   ZerrstaterK   r   r   r   rV   )r   r   r   r   r   r   r   r   r   )r}   r   test_combine_add   s    

*
z!BaseMethodsTests.test_combine_addc             C   sZ   t |d d }t j|dd dddgd}||}t |d d }| || d S )Nr<   r/      rd   )r   )r   r   Zcombine_firstr   )r   r   rz   r{   r   r   r   r   r   test_combine_first  s
    
z#BaseMethodsTests.test_combine_firstframezperiods, indicesr<   rd   c       	      C   s   |d d }t j|dd}t j|j|dddd}|r|jddjdd|}t j|t jdgd dd|gdd	}| j}n||}| j}||| d S )
Nr   r    )nameT)
allow_fillr   )rZ   rZ   )r"   )	r   r   r?   to_frameZassignshiftconcatr[   r   )	r   r   r   periodsindicessubsetr   r   comparer   r   r   test_container_shift  s    $
z%BaseMethodsTests.test_container_shiftc             C   sB   | d}|d |d kst|d |d< |d |d ks>td S )Nr   r   )r   r(   )r   r   r   r   r   r   test_shift_0_periods"  s    
z%BaseMethodsTests.test_shift_0_periodsr   c       	      C   s   |d d }t |jrtj}ntj}y||| W n( tk
rZ   tt| d Y nX t	
|}||}t	
||||}| || t	|dgd d}||}|dkrtjddddg}ndddtjtjg}t	||d}| || d S )Nr   z does not support diffg      ?)r    rZ   r   r   )r   r   operatorxorsub	ExceptionrD   skiprJ   r   r   Zdiffr   r   r#   r	   nanr[   )	r   r   r   opsr   r   r&   r{   r   r   r   	test_diff)  s&    



zBaseMethodsTests.test_diffc             C   s4   |d d }| |}|j|dd}| || d S )Nr/   T)r   )r   r?   rg   )r   r   r   r   r   r   r   r   r   r   test_shift_non_empty_arrayC  s    
z+BaseMethodsTests.test_shift_non_empty_arrayc             C   s*   |d d }| |}|}| || d S )Nr   )r   rg   )r   r   r   emptyr   r   r   r   r   test_shift_empty_arrayN  s    
z'BaseMethodsTests.test_shift_empty_arrayc             C   s8   | d}||k	st|d d  d}||k	s4td S )Nr   r/   )r   r(   )r   r   r   r   r   r   test_shift_zero_copiesV  s    
z'BaseMethodsTests.test_shift_zero_copiesc             C   sp   |d d }|d }|j d|d}|ddddg}| || |j d|d}|ddddg}| || d S )Nrd   r   r   )
fill_valuer/   rc   r<   )r   r?   rg   )r   r   rq   r   r   r   r   r   r   test_shift_fill_value]  s    z&BaseMethodsTests.test_shift_fill_valuec          	   C   s&   t jtdd t| W d Q R X d S )Nzunhashable type)rC   )rD   rE   	TypeErrorhash)r   r   r   r   r   test_not_hashableh  s    z"BaseMethodsTests.test_not_hashablec             C   s>   t |}|r| }t j|}t j|}| || d S )N)r   r   r   utilZhash_pandas_objectassert_equal)r   r   as_framerz   r{   r   r   r   test_hash_pandas_object_worksm  s    
z.BaseMethodsTests.test_hash_pandas_object_worksc       
      C   s  |\}}}t ||||g}|r,t|}||dks>t|j|dddksTt||dksft|j|dddks|t||dkst|j|dddkst||ddg}tjddgtj	d}t
|| tdddg}	|j||	ddkstd S )	Nr   right)Zsider   r/   r<   )r   )sorter)rJ   rK   r   r   Zsearchsortedr(   r?   r	   r
   rO   r6   r7   )
r   r2   	as_seriesr{   crz   rq   r   r   r   r   r   r   test_searchsortedv  s    

z"BaseMethodsTests.test_searchsortedc             C   sT  |d |d kst t|}|d d \}}t|j||||g|jd}tddddg}|rx|jdd}|	d	d}|
|}	t|j||||g|jd}
|r|
jdd}
| |	|
 tddddg}|j||||g|jd}|rtd|i}td|i}|
||}	t|j||||g|jd}
|rD|
jdd}
| |	|
 d S )
Nr   r   r/   )r   TFrz   )r   r:   )r(   rJ   r   r   rK   r   r	   r
   r   Zreshapewherer   r#   )r   r   r@   r   clsrz   r{   r)   Zcondr   r   r   r   r   r   test_where_series  s0    
z"BaseMethodsTests.test_where_seriesrepeatsc             C   s   t |j|d d |jd}|r*t|}|r:t||n||}t|trX|gd n|}dd t	||D }t |j||jd}|rtj||j
|d}| || d S )Nr<   )r   c             S   s"   g | ]\}}t |D ]}|qqS r   )range)ry   r^   n_r   r   r   r|     s    z0BaseMethodsTests.test_repeat.<locals>.<listcomp>)r   )rJ   rK   r   r   r   r	   repeatr-   r4   r   r   r   )r   r   r   r   	use_numpyrq   r   r   r   r   r   test_repeat  s    
zBaseMethodsTests.test_repeatzrepeats, kwargs, error, msg)r"   z'axisnegativeshapebar)Zfooz'foo'c          	   C   sB   t j||d* |r&tj||f| n|j|f| W d Q R X d S )N)rC   )rD   rE   r	   r   )r   r   r   kwargserrorru   r   r   r   r   test_repeat_raises  s    
z#BaseMethodsTests.test_repeat_raisesc             C   s8  t |j|d gt| |jd}t |j|gt| |jd}tj||dd}tj||dd}tj||dd}||dkst|| dkst||dkst||dkst|d d |d d dkst|d d |d d dkst|d dkst|dg |d dks4td S )Nr   )r   F)Z	transposeTr/   r<   )	rJ   rK   r   r   r6   Zbox_expectedequalsr(   copy)r   r   r@   r   r]   Zdata2rL   r   r   r   test_equals  s    ""$zBaseMethodsTests.test_equalsN)8__name__
__module____qualname____doc__rD   markZparametrizer   r   r'   r*   r.   r3   r9   r;   rA   rI   rM   r	   r
   r   rR   rX   rY   r\   r   r   r   ra   rm   rn   ro   rs   rt   rv   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   dictrF   r   r   r#   r   r   r   r   r   r      sp   	*
	"

	
@@	 	!$
r   )r   numpyr	   rD   Zpandas.core.dtypes.commonr   Zpandasr   Zpandas._testingZ_testingr6   Zpandas.core.sortingr   baser   r   r   r   r   r   <module>   s   