B
    x\                @   s8  d dl m Z  d dlmZ d dlZd dlZd dlmZ d dlmZ d dl	Z	d dl
mZmZmZ d dlmZmZ d dlmZ d dlm  mZ d d	lmZ d dlZd d
lmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z& d dl'm(  m)Z d dl*m+Z+ d dl,m(  m-Z. d dl/m  m0Z1 d dl/m2Z2 G dd de3Z4G dd de3Z5G dd de3Z6G dd de3Z7G dd de3Z8G dd de3Z9G dd de3Z:G dd de:Z;G dd de:Z<G dd  d e3Z=d!d" Z>d#d$ Z?G d%d& d&e3Z@d'd( ZAd)d* ZBG d+d, d,e3ZCd-d. ZDd/d0 ZEd1d2 ZFd3d4 ZGd5d6 ZHd7d8 ZIG d9d: d:e3ZJdS );    )datetime)permutationsN)nan)RandomState)algosgroupby	hashtable)lrangerange)np_array_datetime64_compat)CategoricalDtype)CategoricalCategoricalIndexDatetimeIndexIndexIntervalIndexSeries	Timestampcompat)DatetimeArray)assert_almost_equalc               @   s   e Zd Zdd Zdd ZdS )	TestMatchc             C   s2  t dddg}t ddddddddg}t||}t jddddddddgt jd}t|| tt||t j}tt ddddddt jdg}t	|| tt 
dt jd}t|ddg}t jdddddgt jd}t|| tt|ddgt j}tt t jt jdt jdg}t	|| d S )	Nr            )dtype      )nparrayr   matchint64tmassert_numpy_array_equalr   r   assert_series_equalarangefloat32)selfvaluesto_matchresultexpecteds r.   6lib/python3.7/site-packages/pandas/tests/test_algos.py	test_ints!   s      zTestMatch.test_intsc          
   C   s   dddg}dddddddg}t ||}tjdddddddgtjd	}t|| tt ||tj}ttddtjdddtjg}t	|| d S )
Nfoobarbazquxr   r   r   r   )r   )
r   r!   r   r    r"   r#   r$   r   r   r%   )r(   r)   r*   r+   r,   r.   r.   r/   test_strings6   s    
 zTestMatch.test_stringsN)__name__
__module____qualname__r0   r5   r.   r.   r.   r/   r      s   r   c               @   s  e Zd Zdd Zdd Zdd Zdd Zej	d	d
ddddgdddddgd
dddgfd
ddddgdddddgd
dddgfd
dddgddddgd
ddgf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ej	d#ejdddgd$d%ejd&dd&gd'd%ejd(d)d(gd*d%gd+d, Zej	d-ejddddgd$d%dfejddddgd$d%dfejd&dd&dgd'd%d&fejdd&ddgd'd%dfejd.d/d.d0ged%d.fejd1d2d1d3ged%d1fejd2d1d2d3ged%d2fgd4d5 Zej	d6d7d8gej	d9d:d;d<gd=d> Zd?S )@TestFactorizec          
   C   sP  t ddddddddg\}}t|tjdddgtd t jddddddddgdd\}}tjdddddd	d	d	gtjd}t|| tjdddgtd}t|| t tt	t
d
\}}tjddd	ddgtjd}t|| tjddd	ddgtjd}t|| t jtt	t
d
dd\}}tjddd	ddgtjd}t|| tjddd	ddgtjd}t|| t tt	td\}}tjddd	ddgtjd}t|| tjdddddgtjd}t|| t jtt	tddd\}}tjddd	ddgtjd}t|| tjdddddgtjd}t|| d S )Nabc)r   T)sortr   r   r   r   r   r   g      @g      @g      @g       @g      ?g        )r   	factorizer#   r$   r   r    objectintplistreversedr
   r"   r&   float64)r(   labelsuniquesexpr.   r.   r/   
test_basicE   s>     zTestFactorize.test_basicc             C   s   t ddtjddtjg}t|\}}tjddddddgtjd	}t	|| t
dddtjg}t|| tj|d
d\}}tjddddddgtjd	}t	|| t
dtjddg}t|| d S )NABgQ	@r   r   r   r   r   )r   T)r=   )r   r   r   infr   r>   r    r@   r#   r$   r   assert_index_equal)r(   xrD   rE   rF   r.   r.   r/   
test_mixedm   s    zTestFactorize.test_mixedc             C   s^  t d}t d}t||||||g}t|\}}tjddddddgtjd}t|| t	||g}t
|| tj|dd\}}tjddddddgtjd}t|| t	||g}t
|| tjdd	d
}tjdd	d
}t||||||g}t|\}}tjddddddgtjd}t|| t
|t||g tj|dd\}}tjddddddgtjd}t|| t
|t||g td}td}t|||||||g}t|\}}tjdddddddgtjd}t|| t
|t||g tj|dd\}}tjdddddddgtjd}t|| t
|t||g d S )Nz20130101 09:00:00.0000420130101r   r   )r   T)r=   Z201302M)freqZ201303z1 day 1 minz1 day)r   r   r   r>   r   r    r@   r#   r$   r   rK   pdPeriodZPeriodIndexto_timedelta)r(   Zv1Zv2rL   rD   rE   rF   r.   r.   r/   test_datelike~   sF    

zTestFactorize.test_datelikec             C   s   t jdddt jgdd}tt|}xddD ]\}|j|d|d}t jddd|gd	d}tt|tt|ksrtt	
t|||k q,W t jdt jdgdd}d
}|j|d|d}t jdd
dgd	d}tt|tt|kstt	
t|||k d S )Nr   r   O)r   )r      T)r=   na_sentinelr   Zint32r   F)r   r    r   htZ
Factorizerlenr>   setAssertionErrorr#   r$   rQ   isna)r(   keyZrizerrW   idsr,   r.   r.   r/   test_factorize_nan   s    
z TestFactorize.test_factorize_nanz"data,expected_label,expected_level)r   r   )r   r   )r   r   Znonsenser   r   r   r   )r   r   r   c             C   sH   t |}t|d tj|tjd tj|t	d}t|d | d S )Nr   )r   r   )
rQ   r>   r#   r$   r   r    r@   comZasarray_tuplesafer?   )r(   dataZexpected_labelZexpected_levelr+   Zexpected_level_arrayr.   r.   r/   test_factorize_tuple_list   s    

z'TestFactorize.test_factorize_tuple_listc             C   s>   t jdd tdD td}tjttj|d d d dd d S )Nc             S   s   g | ]}t |qS r.   )complex).0ir.   r.   r/   
<listcomp>   s    z6TestFactorize.test_complex_sorting.<locals>.<listcomp>   )r   r   T)r=   )	r   r    r
   r?   pytestraises	TypeErrorr   r>   )r(   Zx17r.   r.   r/   test_complex_sorting   s    z"TestFactorize.test_complex_sortingc             C   s   t jddddddgt jd}|j|d t jddddddgt jd}t jdddgt jd}t|\}}t|| t|| d S )	Ng      ?g    חAg:0yE>)r   )writer   r   r   )	r   r    rC   setflagsr@   r   r>   r#   r$   )r(   writablera   
exp_labelsexp_uniquesrD   rE   r.   r.   r/   test_float64_factorize   s    z$TestFactorize.test_float64_factorizec             C   sv   t jdddgt jd}|j|d t jdddgt jd}t jddgt jd}t|\}}t|| t|| d S )Nl    r   )r   )rl   r   )	r   r    uint64rm   r@   r   r>   r#   r$   )r(   rn   ra   ro   rp   rD   rE   r.   r.   r/   test_uint64_factorize   s    z#TestFactorize.test_uint64_factorizec             C   sv   t jdddgt jd}|j|d t jdddgt jd}t jddgt jd}t|\}}t|| t|| d S )Nl    l         )r   )rl   r   r   )	r   r    r"   rm   r@   r   r>   r#   r$   )r(   rn   ra   ro   rp   rD   rE   r.   r.   r/   test_int64_factorize   s    z"TestFactorize.test_int64_factorizec             C   s|   t jdddddgtd}|j|d t jdddddgt jd}t jdddgtd}t|\}}t|| t|| d S )	Nr:   r<   r;   )r   )rl   r   r   r   )	r   r    r?   rm   r@   r   r>   r#   r$   )r(   rn   ra   ro   rp   rD   rE   r.   r.   r/   test_string_factorize  s    z#TestFactorize.test_string_factorizec          	   C   s   t jddd t jddtjdgtd}|j|d t jdddddd	ddgt jd}t jdddgtd}t	|\}}t
|| t
|| d S )
Nr:   r<   r;   )r   )rl   r   r   r   r   )r   r    r   rQ   NaTr?   rm   r@   r   r>   r#   r$   )r(   rn   ra   ro   rp   rD   rE   r.   r.   r/   test_object_factorize  s     z#TestFactorize.test_object_factorizec          	   C   s`   t jdddgt jd}tjtd tj|dd W d Q R X td t| W d Q R X d S )Nl            r   )r   )Zexpected_warningT)orderF)r   r    rr   r#   assert_produces_warningFutureWarningr   r>   )r(   ra   r.   r.   r/   test_deprecate_order  s
    z"TestFactorize.test_deprecate_orderra   u8)r   l         i8Z__nan__r1   r?   c             C   sL   t |\}}|ddg }tjdddgtjd}t|| t|| d S )Nr   r   )r   )r   r>   r   r    r@   r#   r$   )r(   ra   luexpected_uniquesexpected_labelsr.   r.   r/   ,test_parametrized_factorize_na_value_default&  s
    z:TestFactorize.test_parametrized_factorize_na_value_defaultzdata, na_valuer:    r;   r.   )r:   r   )r:   r   c             C   sR   t j||d\}}|ddg }tjddddgtjd}t|| t|| d S )N)na_valuer   r   r   r   )r   )r   Z_factorize_arrayr   r    r@   r#   r$   )r(   ra   r   r~   r   r   r   r.   r.   r/   $test_parametrized_factorize_na_value3  s
    z2TestFactorize.test_parametrized_factorize_na_valuer=   TFrW   r   id   c             C   s   t jddd dgtd}tj|||d\}}|rZt jdd|dgt jd}t jddgtd}n*t jdd|dgt jd}t jddgtd}t|| t|| d S )Nr;   r:   )r   )r=   rW   r   r   )r   r    r?   r   r>   r@   r#   r$   )r(   r=   rW   ra   rD   rE   r   r   r.   r.   r/   test_factorize_na_sentinelD  s    z(TestFactorize.test_factorize_na_sentinelN)r6   r7   r8   rG   rM   rT   r_   rh   markparametrizerb   rk   rq   rs   rt   ru   rw   r{   r   r    r   r?   r   r   r.   r.   r.   r/   r9   C   sH   (1




	 
	r9   c            	   @   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
dd Zdd Zdd Zejddejddgedfdejdgedfgdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*S )+
TestUniquec             C   s0   t jjdddd}t|}t|t js,td S )Nr   r   2   )size)r   randomrandintr   unique
isinstancendarrayr[   )r(   arrr+   r.   r.   r/   r0   V  s    
zTestUnique.test_intsc             C   s6   t jjddddd}t|}t|t js2td S )Nr   r   r   )r   rU   )	r   r   r   astyper   r   r   r   r[   )r(   r   r+   r.   r.   r/   test_objects\  s    
zTestUnique.test_objectsc             C   s2   dddddg}xt dD ]}tt| qW d S )NrH   rI   CDEi  )r
   rY   r   r   )r(   Zlstre   r.   r.   r/   test_object_refcount_bugb  s    z#TestUnique.test_object_refcount_bugc             C   sd   t jtddttddg}|j}|  |d}t 	|}|  t
|| d S )Nr   r   )rQ   Z
MultiIndexZfrom_arraysr   r&   repeattiler)   r=   r   r#   r   )r(   Zmindexr,   r+   r.   r.   r/   test_on_index_objectg  s    

zTestUnique.test_on_index_objectc             C   s   t ddgdd}tdddg}t|}t|| |j|jksFtt	|}t|}t|| |j|jkstt|j
}t|}t|| |j|jkstd S )Nz"2015-01-03T00:00:00.000000000+0000z"2015-01-01T00:00:00.000000000+0000zM8[ns])r   z2015-01-03T00:00:00.000000000z2015-01-01T00:00:00.000000000)r   rQ   to_datetimer   r   r#   r$   r   r[   r   r)   )r(   r,   Zdt_indexr+   r-   r   r.   r.   r/   $test_datetime64_dtype_array_returnedu  s$    


z/TestUnique.test_datetime64_dtype_array_returnedc             C   s   t jdddgdd}tdddddg}t|}t|| |j|jksNt	t
|}t|}t|| |j|jks|t	|j}t|}t|| |j|jkst	d S )Niy  in  i'  zm8[ns])r   )r   r    rQ   rS   r   r   r#   r$   r   r[   r   r)   )r(   r,   Ztd_indexr+   r-   r   r.   r.   r/   %test_timedelta64_dtype_array_returned  s    


z0TestUnique.test_timedelta64_dtype_array_returnedc             C   sB   t ddddgtjd}tjdddgtjd}tt|| d S )Nr   r   l            )r   )r   r   rr   r    r#   r$   r   r   )r(   r-   rF   r.   r.   r/   test_uint64_overflow  s    zTestUnique.test_uint64_overflowc             C   s>   dt jddg}t|}t jdt jdgtd}t|| d S )Nr:   r<   )r   )r   r   rQ   r   r    r?   r#   r$   )r(   Zduplicated_itemsr+   r,   r.   r.   r/   test_nan_in_object_array  s    
z#TestUnique.test_nan_in_object_arrayc             C   s&  t tdtdd}t tdtddd}t td}| }t|| t|}t|| t tddd}| }t|| t|}t|| tt tddd	}| }t|| t|}t|| tt tdtdd}t|}| }t	|| t|}t	|| d S )
NZbac)
categoriesabcT)r   orderedZbaabc)r   r1   )name)
r   rA   r   r#   assert_categorical_equalr   r   rQ   r   rK   )r(   r,   Z
expected_or<   r+   r-   Zcir.   r.   r/   test_categorical  s2    




zTestUnique.test_categoricalc          	   C   s  t ttdddtdddg }tttdddg}t	|| ttdddtdddg }t
dgdd d}t|| tt ttdddtdddg}tttdddg}t	|| tttdddtdddg}t
dgdd d}t|| d S )	N20160101z
US/Eastern)tzz2016-01-01 00:00:00-0500z2016-01-01 00:00:00zdatetime64[ns, US/Eastern])r   rP   z
2016-01-01)r   r   r   r   r   Z_from_sequencer   r    r#   Zassert_extension_array_equalr   rK   rQ   )r(   r+   r,   r.   r.   r/   test_datetime64tz_aware  s,    

z"TestUnique.test_datetime64tz_awarec             C   s:  t tddddg}t|tjdddgdd t tdgdgd  }t|tjddgdd t ttdtdg}tjdgd	d}t|| t ttdd
dtdd
dg}t	dgdd d}t
|| t td}tjdddgtd}t|| t tttd}ttd}t|| d S )Nr   r   r   r"   )r   r   r   z2016-01-01T00:00:00.000000000zdatetime64[ns]z
US/Eastern)r   z2016-01-01 00:00:00zdatetime64[ns, US/Eastern])r   rP   Zaabcr:   r;   r<   r   )rQ   r   r   r#   r$   r   r    r   r   r   rK   rA   r?   r   r   )r(   r+   r,   r.   r.   r/   test_order_of_appearance  s0    
z#TestUnique.test_order_of_appearancezarg ,expected)1r   2r   r   )r   )r1   r1   c             C   s   t |}t|| d S )N)rQ   r   r#   r$   )r(   argr,   r+   r.   r.   r/   test_tuple_with_strings  s    
z"TestUnique.test_tuple_with_stringsc             C   sB   t jdd gtd}t|}t jdd gtd}tj||dd d S )Nr1   )r   T)Z
strict_nan)r   r    r?   rQ   r   r#   r$   )r(   r   r+   r,   r.   r.   r/   test_obj_none_preservation!  s    
z%TestUnique.test_obj_none_preservationc             C   s4   t ddg}t|}t dg}t|| d S )Ng       g        )r   r    rQ   r   r#   r$   )r(   r:   r+   r,   r.   r.   r/   test_signed_zero)  s    
zTestUnique.test_signed_zeroc             C   s~   t dt ddd }t dt ddd }||ks<t||ksHtt||g}t|}ttjg}t	
|| d S )Ndz=Ql          r   l         )structunpackpackr[   r   r    rQ   r   r   r#   r$   )r(   NAN1NAN2r:   r+   r,   r.   r.   r/   test_different_nans0  s    
zTestUnique.test_different_nansc       	   	   C   s   d}d}t dt d|d }t dt d|d }||ksDt||ksPtxftjtjgD ]V}tj||g|d}t	|}|j
dkstt dt d|d d }||ks^tq^W d S )Nl         l         r   z=Qr   )r   r   )r   r   r   r[   r   rC   r?   r    rQ   r   r   )	r(   Zbits_for_nan1Zbits_for_nan2r   r   Zel_typer:   r+   Zresult_nan_bitsr.   r.   r/   test_first_nan_kept<  s    
zTestUnique.test_first_nan_keptc             C   s\   ||krd S t j||gt jd}t|}|jdks8t|d |ksHt|d |ksXtd S )N)r   r   r   r   )r   r    r?   rQ   r   r   r[   )r(   Zunique_nulls_fixtureZunique_nulls_fixture2r:   r+   r.   r.   r/   test_do_not_mangle_na_valuesN  s    
z'TestUnique.test_do_not_mangle_na_valuesN)r6   r7   r8   r0   r   r   r   r   r   r   r   r   r   r   rh   r   r   r   r    r?   r   r   r   r   r   r   r.   r.   r.   r/   r   T  s&   ," r   c               @   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
dd Zejdg e eg gdd Zdd Zdd ZdS )TestIsinc             C   s4   t tdd  t tdd  t tdd  d S )Nc               S   s   t ddS )Nr   )r   isinr.   r.   r.   r/   <lambda>_  s    z'TestIsin.test_invalid.<locals>.<lambda>c               S   s   t ddgS )Nr   )r   r   r.   r.   r.   r/   r   `  s    c               S   s   t dgdS )Nr   )r   r   r.   r.   r.   r/   r   a  s    )rh   ri   rj   )r(   r.   r.   r/   test_invalid]  s    zTestIsin.test_invalidc             C   s  t ddgdg}tddg}t|| t tddgdg}tddg}t|| t tddgdg}tddg}t|| t tddgtdg}tddg}t|| t tddgdh}tddg}t|| t ddgdg}tddg}t|| t tddgtdg}tddg}t|| t tddgdh}tddg}t|| t ddgdg}tddg}t|| d S )Nr   r   TFr:   r;   )r   r   r   r    r#   r$   r   )r(   r+   r,   r.   r.   r/   rG   c  s6    zTestIsin.test_basicc             C   sH  t jdddj}t||d g}tdddg}t|| t||dd }tdddg}t|| t|t	|dd }tdddg}t|| t j
dddj}t||d g}tdddg}t|| t||dd }tdddg}t|| t|t	|dd }tdddg}t|| d S )	NrN   r   )periodsr   TFr   z1 day)rQ   
date_ranger)   r   r   r   r    r#   r$   rZ   Ztimedelta_range)r(   r   r+   r,   r.   r.   r/   test_i8  s(    zTestIsin.test_i8c             C   sX   t jddddj}t||dd }tjt|td}d|d< d|d	< t	
|| d S )
NZ20000101i r-   )r   rP   r   r   )r   Tr   )rQ   r   r)   r   r   r   zerosrY   boolr#   r$   )r(   r-   r+   r,   r.   r.   r/   
test_large  s    zTestIsin.test_largec             C   s|   t ddddg}dddg}ttd||}ttdt ddg|}t ddddg}t||}t|| d S )	Nr   r   r   r:   r;   r<   TF)	r   r    r   r   Z
from_codesr   r   r#   r$   )r(   valsZcatsZSdZStr,   r+   r.   r.   r/   test_categorical_from_codes  s    
z$TestIsin.test_categorical_from_codesc             C   s8   t jg}t jg}t dg}t||}t|| d S )NT)r   r   r    r   r   r#   r$   )r(   compsr)   r,   r+   r.   r.   r/   test_same_nan_is_in  s
    zTestIsin.test_same_nan_is_inc             C   sb   G dd dt }| |  }}tt|g|gtdg tt|g|gtdg d S )Nc               @   s   e Zd Zdd Zdd ZdS )z0TestIsin.test_same_object_is_in.<locals>.LikeNanc             S   s   dS )NFr.   )r(   r.   r.   r/   __eq__  s    z7TestIsin.test_same_object_is_in.<locals>.LikeNan.__eq__c             S   s   dS )Nr   r.   )r(   r.   r.   r/   __hash__  s    z9TestIsin.test_same_object_is_in.<locals>.LikeNan.__hash__N)r6   r7   r8   r   r   r.   r.   r.   r/   LikeNan  s   r   TF)r?   r#   r$   r   r   r   r    )r(   r   r:   r;   r.   r.   r/   test_same_object_is_in  s     zTestIsin.test_same_object_is_inc             C   s   t dg}t dg}|d |d k	s(tt||}ttdg| ttj|tj	dtj|tj	d}ttdg| ttj|tj
dtj|tj
d}ttdg| d S )Nr   r   T)r   )floatr[   r   r   r#   r$   r   r    Zasarrayr?   rC   )r(   r   r)   r+   r.   r.   r/   r     s    

zTestIsin.test_different_nansc             C   s8   ddg}dg}t ddg}t||}t|| d S )NZss*   Z42F)r   r    r   r   r#   r$   )r(   r   r)   r,   r+   r.   r.   r/   test_no_cast  s
    zTestIsin.test_no_castemptyc             C   s6   t ddg}tddg}t||}t|| d S )Nr:   r;   F)r   r   r    r   r   r#   r$   )r(   r   r   r,   r+   r.   r.   r/   
test_empty  s    zTestIsin.test_emptyc             C   sb   t jdt jd tdgt jd}t jtdgt jd}t dddg}t||}t|| d S )Nr   y              ?)r   FT)	r   r    r   r   r?   r   r   r#   r$   )r(   r   r   r,   r+   r.   r.   r/   test_different_nan_objects  s
     z#TestIsin.test_different_nan_objectsc             C   s   t dt ddd }t dt ddd }||ks<t||ksHttj||gtjd}tj|gtjd}t||}tddg}t	
|| tj|gtjd}t||}tddg}t	
|| d S )Nr   z=Ql          r   l         )r   T)r   r   r   r[   r   r    rC   r   r   r#   r$   )r(   r   r   r   Zlookup1r+   r,   Zlookup2r.   r.   r/   test_different_nans_as_float64  s    z'TestIsin.test_different_nans_as_float64N)r6   r7   r8   r   rG   r   r   r   r   r   r   r   rh   r   r   r   r   r    r   r   r   r.   r.   r.   r/   r   [  s   &	
	$	r   c               @   sd   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
dd Zdd Zdd ZdS )TestValueCountsc             C   s   t jd ddlm} t jd}||d}t|}ddddd	g}t	|
td
d}tddddg|d}t| |  d S )Ni  r   )cutr   gvgQg`"?gw/?g!rh?T)r   r   )index)r   r   ZseedZpandas.core.reshape.tiler   randnr   value_countsr   Zfrom_breaksr   CDTr   r#   r%   Z
sort_index)r(   r   r   Zfactorr+   Zbreaksr   r,   r.   r.   r/   test_value_counts   s    

z!TestValueCounts.test_value_countsc             C   sv   ddddg}t j|dd}tdgtdgd}t|| t j|ddd	}tddgtd
dgd}t|| d S )Nr   r   r   r   )bins)gZd;?g      @)r   F)r   r=   )gZd;?g      @)g      @g      @)r   r   r   r   Zfrom_tuplesr#   r%   )r(   r-   r+   r,   r.   r.   r/   test_value_counts_bins.  s    z&TestValueCounts.test_value_counts_binsc             C   s~   t ddg}t|dkstt jddgdd}t|dks@tt tdddg}t|dksdtttdd ddg d S )Nr   g      ?)r   r   r   c             S   s   t j| ddS )Nr   )r   )r   r   )r-   r.   r.   r/   r   E  s    z:TestValueCounts.test_value_counts_dtypes.<locals>.<lambda>)r   r   rY   r[   r   rh   ri   rj   )r(   r+   r.   r.   r/   test_value_counts_dtypes;  s    z(TestValueCounts.test_value_counts_dtypesc             C   s   t tdtjgdd}tddg}xH||gD ]<}t|}tj|dd}t|dks\t	t|d	ks0t	q0W t t
d
di}tt|| d S )Ni'  ztimedelta64[ns])r   rv   z
2014-01-01F)dropnar   r   z2014-01-01 00:00:00)r   r   Ztimedelta64rQ   rv   r   r   r   rY   r[   r   r#   r%   )r(   tddtr-   ZvcZ
vc_with_naZexp_dtr.   r.   r/   test_value_counts_natH  s    
z%TestValueCounts.test_value_counts_natc          
   C   s   t tdddtdddtdddtdddtdddtdddg}| }ttdddtdddtdddgtd}t dddg|d}t|| tjt d	t	j
gd
d}t d	t	j
gtd}t|| d S )Ni  r   i  ip  )r   r   r   )r   z
2362-01-01ignore)errors)r   r   r   r   r?   r#   r%   rQ   r   r   r   )r(   r-   ZresZ	exp_indexrF   r.   r.   r/   &test_value_counts_datetime_outofboundsV  s    z6TestValueCounts.test_value_counts_datetime_outofboundsc             C   sv   t ttd}| }t dddgtdddgd}tj||d	d
 |j }| }|j	 |_	tj||d	d
 d S )NZaaabbcr   r   r   r:   r;   r<   )r   T)check_index_type)
r   r   rA   r   r   r#   r%   catZ
as_orderedr   )r(   r-   r+   r,   r.   r.   r/   r   h  s    
z TestValueCounts.test_categoricalc             C   sN  t ttd}tj|jd< | }t dddgtdddgdddgd	d
}tj	||dd |jdd}t ddddgtdddtjgd
}tj	||dd t ttdddddgd}tj|jd< | }t dddgtdddgdddgddd
}tj	||dd |jdd}t ddddgtdddtjgdddgddd
}tj	||dd d S )NZ
aaaaabbbccr   r   r   r   r:   r;   r<   )r   )r   T)r   F)r   )r   r   )r   r   )
r   r   rA   r   r   Zilocr   r   r#   r%   )r(   r-   r+   r,   r.   r.   r/   test_categorical_nansu  s,    
 z%TestValueCounts.test_categorical_nansc             C   s`   t ttdtddd}| }t ddddgtd	d
ddgtdddd}tj||dd d S )NZbbbaacZabcdT)r   r   r   r   r   r   r;   r:   r<   r   )r   )r   )r   r   rA   r   r#   r%   )r(   r-   r+   r,   r.   r.   r/   test_categorical_zeroes  s    z'TestValueCounts.test_categorical_zeroesc             C   s  t tdddgjddtddgddgd t tdddgjddtddgddgd t tdddd gjddtddgddgd t tdddd gjddtdddgddtjgd t tdddgjddtddgddgd t tdddgjddtddgddgd t tdddd gjddtddgddgd t stdddd gjdd}tdddgddtjgd}t || d S )	NTF)r   r   r   )r   g$@g      @)r#   r%   r   r   r   r   r   is_platform_32bit)r(   r+   r,   r.   r.   r/   test_dropna  s2    
zTestValueCounts.test_dropnac             C   s   t ddtjtjtjg}tjtjdf}x|D ]}||}|jddd}t dddgt tjd	d
g|dd}t|| |jddd}t ddgt d	d
g|dd}t|| q,W d S )Nr   r   zM8[ns]TF)Z	normalizer   g333333?g?g       @g      ?)r   )r   g      ?)	r   r   r   rC   r?   r   r   r#   r%   )r(   r-   ZdtypestZs_typedr+   r,   r.   r.   r/   test_value_counts_normalized  s    


z,TestValueCounts.test_value_counts_normalizedc             C   s   t jdgt jd}tdgdgd}t|}t|| t jddgtd}tddgddgd}t|}t	
 s|t|| d S )Nl            )r   r   )r   r   )r   r    rr   r   r   r   r#   r%   r?   r   r   )r(   r   r,   r+   r.   r.   r/   test_value_counts_uint64  s    

z(TestValueCounts.test_value_counts_uint64N)r6   r7   r8   r   r   r   r   r   r   r   r   r   r   r   r.   r.   r.   r/   r     s   	!r   c               @   s.  e Zd Zdd Zejdedddddddddd	g
ed
dd
ej	dddd
ej	dg
eddddddddddg
ejddddddddddg
e
dejdddddddddd g
ejdgd!d" Zd#d$ Zd%d& Zejd'd(d)d*d+d(d)d*d+gd(d)d*d+gfd,d-d-d,gd,d-gfd.d/d0d.gd.d/d0gfgd1d2 Zd3S )4TestDuplicatedc             C   s  t jddt jddt jgtd}t|}t ddddddg}t|| tj|dd}t ddddddg}t|| tj|d	d}t ddddddg}t|| tj|dd}t ddddddg}t|| t jd
td}xDt	t
ddt jt jgd dt jdt jgd D ]\}}|||< qW t|}dgd }dgd }t || }t|| tj|d	d}t || }t|| tj|dd}t || }t|| d S )Nr   r   r   )r   FTfirst)keeplast   r   )r   r    r   r?   r   
duplicatedr#   r$   r   	enumeratezip)r(   keysr+   r,   re   r   ZfalsesZtruesr.   r.   r/   test_duplicated_with_nas  s8    
 


z'TestDuplicated.test_duplicated_with_nascaser   r   r   r   r      g?g@gffffff
@g@gffffff@y      ?      ?y       @       @y      @      @y      @      @y      @      @y      @      @r:   r;   er<   r   f)r   l               
   '      c       
      C   sp  t ddddddddddg
}t ddddddddddg
}||B }tj|dd}t|| tj|dd}t|| tj|dd}t|| xdt|t|ddgD ]L}|jdd}t|| |jdd}t|| |jdd}t|| qW xrt|t|ddgD ]Z}	|	jdd}t|t| |	jdd}t|t| |	jdd}t|t| qW d S )NFTr   )r   r   category)r   )	r   r    r   r   r#   r$   r   r   r%   )
r(   r   	exp_firstexp_last	exp_false	res_firstres_last	res_falseidxr-   r.   r.   r/   test_numeric_object_likes  s2    z(TestDuplicated.test_numeric_object_likesc             C   s&  ddddddddddg
}ddddd	dd
dddg
}t dd |D t dd |D t dd |D t dd |D t dd |D g}t ddddddddddg
}t ddddddddddg
}||B }xL|D ]B}tj|dd}t|| tj|dd}	t|	| tj|dd}
t|
| xpt|t|ddt|tdgD ]N}|jdd}t|| |jdd}	t|	| |jdd}
t|
| qNW x|t|t|ddt|tdgD ]Z}|jdd}t	|t| |jdd}	t	|	t| |jdd}
t	|
t| qW qW d S )Nz
2011-01-01z
2011-01-02rv   z
2011-01-03z
2011-01-04z
2011-01-06z1 daysz2 daysz3 daysz4 daysz6 daysc             S   s   g | ]}t |qS r.   )r   )rd   r   r.   r.   r/   rf   ;  s    z6TestDuplicated.test_datetime_likes.<locals>.<listcomp>c             S   s   g | ]}t |d dqS )z
US/Eastern)r   )r   )rd   r   r.   r.   r/   rf   <  s    c             S   s   g | ]}t j|d dqS )r   )rP   )rQ   rR   )rd   r   r.   r.   r/   rf   =  s    c             S   s   g | ]}t |qS r.   )r   Z
datetime64)rd   r   r.   r.   r/   rf   >  s    c             S   s   g | ]}t |qS r.   )rQ   Z	Timedelta)rd   r   r.   r.   r/   rf   ?  s    FTr   )r   r   r   )r   )
r   r    r   r   r#   r$   r   r?   r   r%   )r(   r   r   casesr   r  r  r   r  r  r  r  r-   r.   r.   r/   test_datetime_likes4  sJ    

z"TestDuplicated.test_datetime_likesc          	   C   sV   t dddgtddg}x6|D ].}|jdks2tt| t	dddg q W d S )Nr   r   r   r   TF)
r   rQ   Z
RangeIndexZ	is_uniquer[   r#   r$   r   r   r    )r(   r  r   r.   r.   r/   test_unique_indexi  s
    

z TestDuplicated.test_unique_indexzarr, unique)r   r   )r   r   )r   r   )r   r   )r;   r<   )r:   r;   )r:   r   )r;   r   )r:   r   c             C   s8   t jt|td}||d d < t|}t|| d S )N)r   )r   r   rY   r?   rQ   r   r#   r$   )r(   r   r   r,   r+   r.   r.   r/   test_unique_tuplesp  s    

z!TestDuplicated.test_unique_tuplesN)r6   r7   r8   r   rh   r   r   r   r    r   r?   rr   r  r	  r
  r  r.   r.   r.   r/   r     s*   &(5

r   c               @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )GroupVarTestMixinc             C   s   t d}tjtd | j}tjddd}d|dd| j }tt	dd	d}t
|jd
ddjdddd d d tjf }|d }| |||| t||| jstt|| d S )Ni  )r   r   r   r"   )r   r      r   )r   )r   r   F)rx   )axisddofr   r   )r   r   r   onesr   r   r   randr   r&   ZsqueezereshapestdZnewaxisalgoallclosertolr[   r#   r$   )r(   prngoutcountsr)   rD   expected_outexpected_countsr.   r.   r/   test_group_var_generic_1d  s    

z+GroupVarTestMixin.test_group_var_generic_1dc             C   s   t d}tjtd | j}tjddd}d|dd| j }tjddd}t|j	ddd	 gg}|d }| 
|||| t||| jstt|| d S )
Ni  )r   r   r   r"   )r   r   r   )r  r   )r   r   r   r  r   r   r   r  r    r  r  r  r  r[   r#   r$   )r(   r  r  r  r)   rD   r  r  r.   r.   r/   %test_group_var_generic_1d_flat_labels  s    z7GroupVarTestMixin.test_group_var_generic_1d_flat_labelsc             C   s   t d}tjtd | j}tjddd}d|dd| j }tt	ddd}tj
|dddd	d
dd }|d }| |||| t||| jstt|| d S )Ni  )r   r   r   r"   )r   r   r   )r   r   r   )r  r  )r   r   r   r  r   r   r   r  r   r&   r  r  r  r  r  r[   r#   r$   )r(   r  r  r  r)   rD   r  r  r.   r.   r/   $test_group_var_generic_2d_all_finite  s    z6GroupVarTestMixin.test_group_var_generic_2d_all_finitec             C   s   t d}tjtd | j}tjddd}d|dd| j }tj|d d df< tt	dd	d}t
|d d d
f jddddjdddd tjtd gj| j}|d }| |||| tj||dd t|| d S )Ni  )r   r   r   r"   )r   r   r   r   )r   r   r  )rx   )r  r  r   )check_less_precise)r   r   r   r  r   r   r   r  r   r&   Zvstackr  r  Tr  r#   r   r$   )r(   r  r  r  r)   rD   r  r  r.   r.   r/   "test_group_var_generic_2d_some_nan  s    z4GroupVarTestMixin.test_group_var_generic_2d_some_nanc             C   s   t jt jgg| jd}t jdgdd}dt jd| jd }t jddd}| |||| |d dksht|d dksxtt	|d d d S )	N)r   r   r"   gUUUժ?)r   r   r   )r   r   g        )
r   r    r   r   r  r   r  r[   r#   r   )r(   r  r  r)   rD   r.   r.   r/   test_group_var_constant  s    z)GroupVarTestMixin.test_group_var_constantN)r6   r7   r8   r  r  r  r"  r#  r.   r.   r.   r/   r    s
   r  c               @   s(   e Zd ZdZejZejZ	dZ
dd ZdS )TestGroupVarFloat64Tgh㈵>c             C   s   t d}tjtjgg| jd}tjdgdd}|dd | j}d|_tjddd}| 	|||| |d dksxt
tj|d d	d
d d S )Ni  )r   r   r"   i@B l    J))i@B r   )r   r   gUUUUUU?T)r   )r   r   r    r   r   r  r   shaper   r  r[   r#   r   )r(   r  r  r  r)   rD   r.   r.   r/   test_group_var_large_inputs  s    z/TestGroupVarFloat64.test_group_var_large_inputsN)r6   r7   r8   __test__
libgroupbyZgroup_var_float64r  r   rC   r   r  r&  r.   r.   r.   r/   r$    s
   r$  c               @   s    e Zd ZdZejZejZ	dZ
dS )TestGroupVarFloat32Tg{Gz?N)r6   r7   r8   r'  r(  Zgroup_var_float32r  r   r'   r   r  r.   r.   r.   r/   r)    s   r)  c               @   sH  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zej	
dddgej	
dejejddfejejddfejejddfejejddfejejddfgdd Zej	
dejdfejdfejdfejdfejdfgdd Zej	
dejdfejdfejdfejdfejdfgdd Zej	
d ejejejejejgd!d" Zd#S )$TestHashTablec          	   C   s^   t ddt jddddg}|j|d t }|| t|	|t j
t|t jd d S )	NgX9v@gQ	@ir   r   r   )rl   )r   )r   r    r   rm   rX   Float64HashTablemap_locationsr#   r$   lookupr&   rY   r"   )r(   rn   xsmr.   r.   r/   test_lookup_nan  s    
zTestHashTable.test_lookup_nanc             C   s:   d}t |}|dd |dd t|dks6td S )Nr   g        r   g       r   )rX   r+  set_itemrY   r[   )r(   Nr/  r.   r.   r/   test_add_signed_zeros  s
    
z#TestHashTable.test_add_signed_zerosc             C   s|   t dt ddd }t dt ddd }||ks<t||ksHtt }||d ||d t|dksxtd S )Nr   z=Ql          r   l         r   )r   r   r   r[   rX   r+  r1  rY   )r(   r   r   r/  r.   r.   r/   test_add_different_nans
  s    z%TestHashTable.test_add_different_nansc             C   sZ   t jdddgt jd}|j|d t }|| t|	|t j
t|t jd d S )Nr   r   l            )r   )rl   )r   r    rr   rm   rX   UInt64HashTabler,  r#   r$   r-  r&   rY   r"   )r(   rn   r.  r/  r.   r.   r/   test_lookup_overflow  s    
z"TestHashTable.test_lookup_overflowc             C   s@   t ddddgtjd}tjdddgtjd}t| | d S )Nr   r   l            )r   )r   r   rr   r    r#   r$   r   )r(   r-   rF   r.   r.   r/   test_get_unique!  s    zTestHashTable.test_get_uniquenvalsr   r   z&htable, uniques, dtype, safely_resizesr?   FTrC   r"   rr   c       
   	   C   s   t jt jd|d}|j|d | }| }||d | |dd | }|j}	|rj|||dd n*tj	t
dd |||dd W d Q R X |  |j|	kstd S )Ni  )r   )rl   r   r   zexternal reference.*)r!   )r   r    r   r   rm   Z
get_labelsZto_arrayr%  rh   ri   
ValueErrorr[   )
r(   rn   htablerE   r   Zsafely_resizesr8  r   ZtmpZoldshaper.   r.   r/   test_vector_resize&  s    z TestHashTable.test_vector_resizezhtable, tm_dtypeStringFloatZIntZUIntc             C   s   t td| d }t|d}|tjkr6tj|jd< n"|tjkrXtjd t	j
g|jdd< |jdddjdd	}|jj|d
 |jddj}| |j}t|| | j|jdd\}}	t|| ||	 }
t|
|j d S )Nmaker   i  i  i  r   T)fracreplace)drop)rl   r   )r   )Zreturn_inverse)getattrr#   r   rX   r+  r   r   locPyObjectHashTablerQ   rv   samplereset_indexr)   rm   drop_duplicatesr   r$   )r(   r:  tm_dtypern   makerr-   s_duplicatedexpected_uniqueresult_uniqueresult_inverseZreconstrr.   r.   r/   test_hashtable_uniqueM  s     


z#TestHashTable.test_hashtable_uniquec             C   s   t td| d }t|d}|tjkr6tj|jd< n"|tjkrXtjd t	j
g|jdd< |jdddjdd	}|jj|d
 | j}| |j\}}	|  j}
t||
 ||	|   }| j}t|| d S )Nr>  r   i  i  i  r   T)r?  r@  )rA  )rl   )rB  r#   r   rX   r+  r   r   rC  rD  rQ   rv   rE  rF  r)   rm   r\   r>   r   rG  r$   )r(   r:  rH  rn   rI  r-   rJ  Zna_maskrL  rM  rK  Zresult_reconstructZexpected_reconstructr.   r.   r/   test_hashtable_factorizep  s    



z&TestHashTable.test_hashtable_factorizer   c             C   s    t t jjd }||d}d S )Nr   )	size_hint)r   iinfoZuint32max)r(   r   rP  Ztblr.   r.   r/   test_hashtable_large_sizehint  s    z+TestHashTable.test_hashtable_large_sizehintN)r6   r7   r8   r0  r3  r4  r6  r7  rh   r   r   rX   rD  ZObjectVectorZStringHashTabler+  ZFloat64VectorZInt64HashTableZInt64Vectorr5  ZUInt64Vectorr;  rN  rO  rS  r.   r.   r.   r/   r*    s6   		!r*  c              C   sN   t tjd} t| dddddg}t| jdddddg}t|| d S )Nr   r   g      ?g      ?g      ?g      ?)	r   r   r   r   r   Zquantiler)   r#   r   )r-   r+   r,   r.   r.   r/   test_quantile  s    rT  c              C   s   t jdddd} t| }t j| ddd }tj||dd d	| t j	t
| d
< t| }t j| ddd dd  }tj||dd d S )Nr   i   i   r}   T)Zreturn_indexF)Zcheck_dtyper   r   )r   r   r   r   rX   Zunique_label_indicesr   r#   r$   ZchoicerY   )r:   leftrightr.   r.   r/   test_unique_label_indices  s    

rW  c               @   sp   e Zd Zejdd Zdd Zdd Zdd Ze	j
je	j
jd	ed
edd
dgddgddd ZdS )TestRankc                s`   ddl m   fdd}|tttdddtdddtg
 |td	tdddtddd	tg
 d S )
Nr   )rankdatac                sF   t |  }|  } t| }t j| |<  | }t||< t|| d S )N)r   ZisfinitecopylibalgosZrank_1d_float64rJ   r   r   )r   maskr+   rF   )rY  r.   r/   _check  s    

z*TestRank.test_scipy_compat.<locals>._checkg      @r   r   r   g      @)Zscipy.statsrY  r   r    r   )r(   r]  r.   )rY  r/   test_scipy_compat  s    	"zTestRank.test_scipy_compatc             C   sN   t jddgt jd}x4t jd D ]&}tddg|d}tt|| q W d S )Nr   r   )r   
AllIntegerr   )	r   r    rC   	typecodesr   r#   r$   r   rank)r(   rF   r   r-   r.   r.   r/   rG     s    zTestRank.test_basicc             C   sP   t jddgt jd}x6t jt jgD ]&}tddg|d}tt|| q"W d S )Nr   r   )r   l            )	r   r    rC   rr   r   r#   r$   r   ra  )r(   rF   r   r-   r.   r.   r/   r     s    zTestRank.test_uint64_overflowc          	   C   sP   t dddgdddgddd	ggg}d
}tjt|d t| W d Q R X d S )Nr   r   r   r   r   r   r   r   	   z%Array with ndim > 2 are not supported)r!   )r   r    rh   ri   rj   r   ra  )r(   r   msgr.   r.   r/   test_too_many_ndims  s    $zTestRank.test_too_many_ndimsr)   i  i  r   Z1dZ2d)r^   c             C   s"   t j|dd }|dkstd S )NT)Zpctr   )r   ra  rR  r[   )r(   r)   r+   r.   r.   r/   test_pct_max_many_rows  s    zTestRank.test_pct_max_many_rowsN)r6   r7   r8   r   Zskip_if_no_scipyr^  rG   r   rd  rh   r   Zsingler   r   r&   r  re  r.   r.   r.   r/   rX    s   rX  c              C   s   t jg dd} t jtdddgdd}tjd | |}t jdgt jd}t|| tjd || }t jg t jd}t|| tjd | |}t jdgt jd}t|| tjd || }t jg t jd}t|| d S )NrU   )r   i        r?   r   )	r   r    r   r[  padr"   r#   r$   backfill)oldnewr+   r,   r.   r.   r/   !test_pad_backfill_object_segfault  s    rl  c              C   s>   t jddddddgdd} t| dd }|jt jks:td S )	Nr1   r2   r3   r4   rU   )r   c             S   s   | dkS )N)r1   r2   r.   )rL   r.   r.   r/   r      s    ztest_arrmap.<locals>.<lambda>)r   r    r[  Zarrmap_objectr   Zbool_r[   )r)   r+   r.   r.   r/   test_arrmap  s    rm  c               @   sD   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S )TestTseriesUtilc             C   s   d S )Nr.   )r(   r.   r.   r/   test_combineFunc  s    z TestTseriesUtil.test_combineFuncc             C   s   d S )Nr.   )r(   r.   r.   r/   test_reindex	  s    zTestTseriesUtil.test_reindexc             C   s   d S )Nr.   )r(   r.   r.   r/   	test_isna  s    zTestTseriesUtil.test_isnac             C   s   d S )Nr.   )r(   r.   r.   r/   test_groupby  s    zTestTseriesUtil.test_groupbyc             C   s   d S )Nr.   )r(   r.   r.   r/   test_groupby_withnull  s    z%TestTseriesUtil.test_groupby_withnullc             C   s   t dddg}t td}tjd |j|j}tjddddddddddddgtjd	}t	|| t dd
g}t tdd}tjd |j|j}tjdddddgtjd	}t	|| d S )Nr   r   r   rf  int64_tr   r   r   )r   r   )
r   r	   r[  ri  r)   r   r    r"   r#   r$   )r(   rj  rk  fillerexpect_fillerr.   r.   r/   test_backfill  s    zTestTseriesUtil.test_backfillc             C   s   t dddg}t td}tjd |j|j}tjddddddddddddgtjd	}t	|| t ddg}t td}tjd |j|j}tjdddddgtjd	}t	|| d S )
Nr   r   r   rf  rt  r   r   r   )r   )
r   r	   r[  rh  r)   r   r    r"   r#   r$   )r(   rj  rk  ru  rv  r.   r.   r/   test_pad'  s    zTestTseriesUtil.test_padN)
r6   r7   r8   ro  rp  rq  rr  rs  rw  rx  r.   r.   r.   r/   rn    s   rn  c           ~   C   s   t jddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddg|ddt jddd	d
dddddddddddddddddddddd d!ddddddd	d
dddddddddddddddddddddd d!ddddddd	d
dddddddddddddddddddddd d!ddddddd	d
dddddddddddddddddddddd d!ddddg|ddg} t| rtd S )"Nr   r   r   r   r"   )r                                 rV         rg      r        rf     r   rb  r   r   r   r   r   )r   r    r[  Zis_lexsortedr[   )Zfailurer.   r.   r/   test_is_lexsorted9  s2    *    """"r  c              C   s   t jdddt j} t jdddt j}t| dd }t j| dd}|t j}t	|| | d | }t|dd }t 
|| f}|t j}t	|| d S )Nr   i  r   Z	mergesort)Zkindi@B )r   r   r   r   r"   r[  Zgroupsort_indexerargsortr#   r$   Zlexsort)r:   r;   r+   r,   r]   r.   r.   r/   test_groupsort_indexerW  s    r  c                 s  t   t  tddddtd g} t fdd| D sDtt fdd| D s^t  krn  ksrt  k s  krtt  t  kstt  t  krttfd	d| D sttfd
d| D stkrkstk s
krtt  t  ks$tt  t  kr:tx$t| D ]}t|| ksDtqDW t	t  gd 
  t	t  gd 
  d S )Nz-infg}Ô%Ir   g}Ô%ITrJ   c             3   s   | ]} |kV  qd S )Nr.   )rd   rL   )Infr.   r/   	<genexpr>{  s    z%test_infinity_sort.<locals>.<genexpr>c             3   s   | ]} |kp| kV  qd S )Nr.   )rd   rL   )r  r.   r/   r  |  s    c             3   s   | ]} |kV  qd S )Nr.   )rd   rL   )NegInfr.   r/   r    s    c             3   s   | ]} |k p| kV  qd S )Nr.   )rd   rL   )r  r.   r/   r    s        )r[  InfinityNegInfinityr   allr[   r   sortedr   r    r  )Zref_numsZpermr.   )r  r  r/   test_infinity_sortp  s&    r  c              C   s   t  } t  }| tjkrt| tjkr,t| tjk r:t| tjkrHt| tjkrVt| tjksdt|tjkrrt|tjkrt|tjk rt|tjkrt|tjkrt|tjkstd S )N)r[  r  r  r   r   r[   )r  r  r.   r.   r/   test_infinity_against_nan  s    r  c              C   s*   t jdt jd} t| }|| ks&td S )Nr   )r   )r   r&   r@   r[  Zensure_platform_intr[   )r   r+   r.   r.   r/   test_ensure_platform_int  s    
r  c           
   C   s  d} t t jj}t t jj}tjt| d t	t 
||g| W d Q R X tjt| d& t	t 
||gt 
||g W d Q R X tjt| d t	t 
||g| W d Q R X tjt| d& t	t 
||gt 
||g W d Q R X tjt| d& t	t 
||gt 
||g W d Q R X tjt| d4 tj	t 
||gt 
||gt 
ddgd W d Q R X tjt| d4 tj	t 
||gt 
||gt 
ddgd W d Q R X tjt| d@ tj	t 
||gt 
||gt 
ddgt 
ddgd W d Q R X tjt| d> tt( t	t 
||gt 
t j|g W d Q R X W d Q R X tj	t 
||gt 
||gt 
ddgd tj	t 
||gt 
||gt 
ddgd tj	t 
||gt 
||gt 
ddgt 
ddgd d S )NzOverflow in int64 addition)r!   FT)arr_mask)b_mask)r  r  )r   rQ  r"   rR  minrh   ri   OverflowErrorr   Zchecked_add_with_arrr    r#   ry   RuntimeWarningr   )rc  r/  nr.   r.   r/   test_int64_add_overflow  sD     * **&r  c               @   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
dd Zdd ZdS )TestModec             C   s$   t g tjd}ttg | d S )N)r   )r   r   rC   r#   r%   r   mode)r(   rF   r.   r.   r/   test_no_mode  s    zTestMode.test_no_modec             C   s   dg}dg}dg}ddg}xpt jd t jd  D ]X}t||d}t||d}tt|| t||d}t||d}tt|| q0W tdgt jd}ttdg| tdddgt jd}ttdddg| d S )Nr   r_  r=  )r   r:   r;   r<   )	r   r`  r   r#   r%   r   r  intr?   )r(   
exp_singledata_single	exp_multi
data_multir   r-   rF   r.   r.   r/   test_mode_single  s    zTestMode.test_mode_singlec             C   s   dg}dgd dgd  }ddg}dgd dgd  dgd  }xpt jd t jd  D ]X}t||d}t||d}tt|| t||d}t||d}tt|| qVW d S )Nr   r   r   r   r_  r=  )r   )r   r`  r   r#   r%   r   r  )r(   r  r  r  r  r   r-   rF   r.   r.   r/   test_number_mode  s    zTestMode.test_number_modec             C   s   dg}dgd dgd  }t |dd}t |dd}tt|| dg}dgd dgd  }x:ttgD ].}t ||d}t ||d}tt|| qhW d S )	Nr;   r:   r   r   r<   )r   r2   r1   )r   r#   r%   r   r  strr?   )r(   rF   ra   r-   r   r.   r.   r/   test_strobj_mode  s    zTestMode.test_strobj_modec             C   sr   t dddgdd}t dddgdd}tt|| t ddgdd}t dddddgdd}tt|| d S )Nz
1900-05-03z
2011-01-03z
2013-01-02zM8[ns])r   )r   r#   r%   r   r  )r(   rF   r-   r.   r.   r/   test_datelike_mode  s    zTestMode.test_datelike_modec             C   st   t dddgdd}t dddgdd}tt|| t ddgdd}t dddd	ddgdd}tt|| d S )
Nz-1 daysz0 daysz1 daysztimedelta64[ns])r   z2 minz1 dayz-1 dayz-1 day 2 min)r   r#   r%   r   r  )r(   rF   r-   r.   r.   r/   test_timedelta_mode  s    


zTestMode.test_timedelta_modec             C   s.   t dg}t dddg}tt|| d S )Nr1   r   )r   r#   r%   r   r  )r(   rF   r-   r.   r.   r/   test_mixed_dtype+  s    
zTestMode.test_mixed_dtypec             C   sp   t dgtjd}t dddgtjd}tt|| t ddgtjd}t ddgtjd}tt|| d S )Nl            )r   r   )r   r   rr   r#   r%   r   r  )r(   rF   r-   r.   r.   r/   r   0  s    zTestMode.test_uint64_overflowc             C   s   t ddg}|}tt|| t| | t dddg}t dgddgd}tt|| t| | t dddddg}t ddgdddgd}tt|| t| | d S )Nr   r   r:   )r   r   )r   r#   r   r   r  )r(   r<   rF   r.   r.   r/   r   9  s    zTestMode.test_categoricalc             C   s   t dddg}tdddgtjd}tt|| t dddg}tdgtd}tt|| t dddddg}tddgtjd}tt|| tddgdd}t ddd	d
ddgdd}tt|| d S )Nr   r   r   )r   r:   z2 minz1 dayztimedelta64[ns]z-1 dayz-1 day 2 min)	r   r   r   r"   r#   r%   r   r  r?   )r(   r  rF   r.   r.   r/   
test_indexI  s    
zTestMode.test_indexN)r6   r7   r8   r  r  r  r  r  r  r  r   r   r  r.   r.   r.   r/   r    s   	r  )Kr   	itertoolsr   r   Znumpyr   r   Znumpy.randomr   rh   Zpandas._libsr   r[  r   r(  r   rX   Zpandas.compatr	   r
   Zpandas.compat.numpyr   Zpandas.util._test_decoratorsutilZ_test_decoratorsr   Zpandas.core.dtypes.dtypesr   r   ZpandasrQ   r   r   r   r   r   r   r   r   Zpandas.core.algorithmsZcoreZ
algorithmsZpandas.core.arraysr   Zpandas.core.commoncommonr`   Zpandas.util.testingZtestingr#   r   r?   r   r9   r   r   r   r   r  r$  r)  r*  rT  rW  rX  rl  rm  rn  r  r  r  r  r  r  r  r.   r.   r.   r/   <module>   sb   ($    	 D = (T *25!+