U
    sVcN                     @   sx   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mZmZmZ d dlmZ eZeZeZeZG dd deZdS )    N)ensure_platform_int)Float64IndexIndex
Int64Index
RangeIndex)NumericBasec                   @   sN  e Zd ZeZejdd Zejdddddgdd	d
 Zeje	dddZ
ejedddddedddddgddgddd Zdd Zdd Zd d! Zejd"ed#dd#d$fedd#dd#d$fed#dd%dd#dfed$d#dd$d#dfgd&d' Zejd(d)d*d+gd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Zd<d= Zd>d? Zd@dA ZdBdC ZdDdE ZdFdG ZdHdI Z dJdK Z!dLdM Z"dNdO Z#dPdQ Z$dRdS Z%dTdU Z&ejdVdWdXgdYdZ Z'd[d\ Z(d]d^ Z)d_d` Z*dadb Z+dcdd Z,dedf Z-dgdh Z.didj Z/dkdl Z0ejdme1e2dndodh dpdq Z3eje4d$drd#ge4d$drd#fe4ddodsge4ddodsfe4d$dte4dtduge4d$dufe4d$d#de4d#doge4d$dodfe4d$dtde4dsdudtge4d$dudtfe4dvdtde4dsdudge4dvdudfe4dvdwe4dwdxge4ddfe4dvdwe4dtdvge4ddfe4dvdwe4dtd#ge4dtd#fe4dvde4dtd#ge5dvdydtdsgfe4de4dtd#ge4dtd#fe4de4dge5dd$dd$gfe4de4dd#e4d#dzdsge4ddofe4de4dtd#e4d#dzdsge5dd$dtdsd#gfe4dde4dd#e4d#dzdsge4ddofe4dte5ddtd{gge5dd$dddtd{gfe4dte6dd|d}gge6dd$ddd|d}gfe4dte7d~ddgge7dd$dd~ddgfe4dtd$e7d~ddgge7d~ddgfgddd Z8dd Z9dd Z:dd Z;ejdedddedd$d$ed$dtdedddedydndgdd Z<ejdedde	dd$ggdd Z=dd Z>dS )TestRangeIndexc                 C   s   t jS N)npint64self r   J/tmp/pip-unpacked-wheel-xj8nt62q/pandas/tests/indexes/ranges/test_range.pydtype   s    zTestRangeIndex.dtypeZuint64Zfloat64categoryZ
datetime64object)paramsc                 C   s   |j S r	   paramr   requestr   r   r   invalid_dtype   s    zTestRangeIndex.invalid_dtype)returnc                 C   s   | j ddddS )Nr         )startstopstep)
_index_clsr   r   r   r   simple_index$   s    zTestRangeIndex.simple_indexr   r   r   foo)r   r   r   name   barZ	index_incZ	index_dec)r   idsc                 C   s   |j S r	   r   r   r   r   r   index(   s    zTestRangeIndex.indexc                 C   s0   |  dd}tjddg|d}t|j| d S )N      r   r   )r   r
   arraytmassert_numpy_array_equal_data)r   r   resultexpectedr   r   r   test_constructor_unwraps_index2   s    z-TestRangeIndex.test_constructor_unwraps_indexc                 C   s"   |}|d }| |dkstd S )Nr   F)Z$_can_hold_identifiers_and_holds_nameAssertionError)r   r    idxkeyr   r   r   test_can_hold_identifiers7   s    z(TestRangeIndex.test_can_hold_identifiersc              	   C   s,   |}t jtdd ddg|_W 5 Q R X d S )Nz^LengthmatchZrogerZharold)pytestraises
ValueErrornamesr   r    r(   r   r   r   test_too_many_names<   s    z"TestRangeIndex.test_too_many_nameszindex, start, stop, step   r)   )r   c                 C   s.   |j |kst|j|kst|j|ks*td S r	   )r   r3   r   r   )r   r(   r   r   r   r   r   r   test_start_stop_step_attrsA   s    z)TestRangeIndex.test_start_stop_step_attrs	attr_name_start_stopZ_stepc              	   C   s(   |}t t t|| W 5 Q R X d S r	   )r-   Zassert_produces_warningFutureWarninggetattr)r   rA   r    r4   r   r   r   %test_deprecated_start_stop_step_attrsP   s    z4TestRangeIndex.test_deprecated_start_stop_step_attrsc                 C   sV   t ddd}| }||k	s t||s.t|jtdddksDt|jdksRtd S )Nr?   Foor"   r   r)   )r   copyr3   	identical_rangeranger"   )r   iZi_copyr   r   r   	test_copyW   s    zTestRangeIndex.test_copyc                 C   s|   t ddd}t|}d}||ks$tt|}tj||dd t ddd}t|}d	}||ks`tt|}tj||dd d S )
Nr?   rG   rH   z/RangeIndex(start=0, stop=5, step=1, name='Foo')Texactr   r$   z$RangeIndex(start=5, stop=0, step=-1))r   reprr3   evalr-   assert_index_equal)r   rM   r0   r1   r   r   r   	test_repr_   s    zTestRangeIndex.test_reprc                 C   s   t ddd}|dd }tj|dd |d|d dd tdtjdd	d
dg}tjd tjfD ] }t dd|}t|| q`t ddtj	}t
dtj	dd	d
dgtd}t|| d S )Nr?   rG   rH   r)      r   equivrO   r   r*   r+   )r   r-   rS   insertr   r
   nanpdZNAZNaTr   r   )r   r4   r0   r1   nar   r   r   test_insertp   s    $zTestRangeIndex.test_insertc                 C   sl   t tddd}|dd}t tddd}tj||dd |dd}t tdd	d}tj||dd d S )
NrU   	   r   r   TrO   r*   
      r   rL   rW   r-   rS   r   r4   r0   r1   r   r   r   &test_insert_edges_preserves_rangeindex   s    z5TestRangeIndex.test_insert_edges_preserves_rangeindexc                 C   sh   t tddd}|dd}t td}tj||dd |d }|dd}|d }tj||dd d S )Nr   r*   r   r)   TrO   r_   r`   r   r   r   'test_insert_middle_preserves_rangeindex   s    z6TestRangeIndex.test_insert_middle_preserves_rangeindexc              	   C   s   t ddd}|dd  }|d}tj||dd |j|jksBt|d d }|d}tj||dd |j|jksxtd	}tjtt	f|d
 |t
|}W 5 Q R X d S )Nr?   rG   rH   r)   r   TrO   r$   z/index 5 is out of bounds for axis 0 with size 5r7   )r   deleter-   rS   r"   r3   r9   r:   
IndexErrorr;   len)r   r4   r1   r0   msgr   r   r   test_delete   s    

zTestRangeIndex.test_deletec                 C   sZ   t tddd}|dg}t tddd}tj||dd |d}tj||dd d S )Nr   r!   rH   r)   TrO   r   rL   rc   r-   rS   r`   r   r   r    test_delete_preserves_rangeindex   s    
z/TestRangeIndex.test_delete_preserves_rangeindexc                 C   sV   t tddd}|d}|d d d }tj||dd |d}tj||dd d S )	Nr*   r!   rH   r)   r   TrO   r%   rh   r`   r   r   r   'test_delete_preserves_rangeindex_middle   s    

z6TestRangeIndex.test_delete_preserves_rangeindex_middlec                 C   sf   t ddd}ddddg}||}|d d }tj||dd	 ||d d d
 }tj||dd	 d S Nr      r)   r   r*   rU   r?   TrO   r$   r   rc   r-   rS   r   r4   locr0   r1   r   r   r   ,test_delete_preserves_rangeindex_list_at_end   s    
z;TestRangeIndex.test_delete_preserves_rangeindex_list_at_endc                 C   sf   t ddd}ddddg}||}t ddd}tj||dd	 ||d d d
 }tj||dd	 d S rk   rm   rn   r   r   r   ,test_delete_preserves_rangeindex_list_middle   s    
z;TestRangeIndex.test_delete_preserves_rangeindex_list_middlec                 C   sj   t ddd}ddddddg}||}|d d }tj||dd	 ||d d d
 }tj||dd	 d S rk   rm   rn   r   r   r   $test_delete_all_preserves_rangeindex   s    
z3TestRangeIndex.test_delete_all_preserves_rangeindexc                 C   sf   t ddd}dddg}||}tdddg}tj||dd	 ||d d d
 }tj||dd	 d S )Nr   rl   r)   r*   r?   r   rU   TrO   r$   )r   rc   r   r-   rS   rn   r   r   r   %test_delete_not_preserving_rangeindex   s    

z4TestRangeIndex.test_delete_not_preserving_rangeindexc                 C   sT   t ddd}| }|jdks"t|d}t|j| |t }t|| d S )Nr   rG   rH   i8)r   viewr"   r3   r-   r.   valuesrS   )r   rM   Zi_viewr   r   r   	test_view   s    

zTestRangeIndex.test_viewc                 C   s   |}|j tjkstd S r	   )r   r
   r   r3   r=   r   r   r   
test_dtype   s    zTestRangeIndex.test_dtypec              	   C   s  t ddd}|ji kstt| |ji ks0tt| |ji ksFt|d |ji ks^td|k |ji ksttd|k |ji kst|  |ji kst|  |ji kst|D ]}q|ji kst|  |ji kstt	j
dtdi|d}t| |ji kst|jd	  |ji ks,ttjtd
d |jd  W 5 Q R X |ji ks`t|jdd	  |ji ks~t|jdd  |ji kst|j t|jtjst|j|jkstt|jdksttjddddd}t|jd | d S )Nr   d   r]   r   Z   [   a)r(   2   Z51r7   3   r?   r)   r   r+   r/   )r   _cacher3   rQ   strget_locallanyformatrY   Z	DataFramerL   ro   r9   r:   KeyErrorZilocr/   
isinstancer
   Zndarrayre   aranger-   r.   )r   r4   _Zdfr1   r   r   r   
test_cache   sN    

zTestRangeIndex.test_cachec                 C   s  t ddd}|jdkst|jdks(t|jdks6t|jdksDt|jdksRtt ddd}|jdkslt|jdkszt|jdkst|jdkstt dd}|jdkst|jdkst|jdkst|jdkst|jdkstt dd}|jdkst|jdkst|jdkst|jdks.t|jdks>tt dd}|jdksXt|jdksht|jdksxt|jdkst|jdkstd S )	Nr   r   r   TFrU   r$   r)   )r   Zis_monotonic_increasingr3   Zis_monotonic_decreasingZ!_is_strictly_monotonic_increasingZ!_is_strictly_monotonic_decreasingr   r(   r   r   r   test_is_monotonic8  s:    


z TestRangeIndex.test_is_monotonicc                 C   s   t dddt dddft dt dddft dddt dddft dd	d
t ddd
fg}|D ]$\}}||srt||s\tq\d S )Nr   r\   r   r]   r)   r$   r*   rU   ir%   i)r   equalsr3   )r   Zequiv_pairsleftrightr   r   r   test_equals_range[  s    z TestRangeIndex.test_equals_rangec                 C   s4   |}|  |j  kst| |j ks0td S r	   )r   rv   r3   r   )r   r    r4   r   r   r   test_logical_compatf  s    z"TestRangeIndex.test_logical_compatc                 C   s   |}t | }||stt|tr,d S t |td}||rFt|jtd}|d}t |td}||jtds~t||rtt |dtd|st|jtd|jddrtd S )Nr+   r!   )r"   r   r   )r   rI   rJ   r3   r   r   r   rename)r   r    r(   rM   Zsame_values_different_typeZsame_valuesr   r   r   test_identicalk  s    

zTestRangeIndex.test_identicalc                 C   sB   t dd}|jt|jjd k s$tt dd}|j|jks>td S )Nr   i  r]   )r   nbytesr   Z_valuesr3   )r   r4   i2r   r   r   test_nbytes  s    

zTestRangeIndex.test_nbyteszstart,stop,step)r!   r&   Zbaz)012c              	   C   s>   dt | d| }tjt|d t||| W 5 Q R X d S )NzWrong type z for value r7   )typer9   r:   	TypeErrorr   )r   r   r   r   rf   r   r   r   test_cant_or_shouldnt_cast  s    
z)TestRangeIndex.test_cant_or_shouldnt_castc                 C   s   |}| t d S r	   )ru   r   r=   r   r   r   test_view_index  s    zTestRangeIndex.test_view_indexc                 C   s"   |}| d}|jtjkstd S )NO)Zastyper   r
   Zobject_r3   r   r    r(   r0   r   r   r   test_prevent_casting  s    
z#TestRangeIndex.test_prevent_castingc                 C   s   |}t tt|| d S r	   )r-   rS   rR   rQ   r=   r   r   r   test_repr_roundtrip  s    z"TestRangeIndex.test_repr_roundtripc                 C   s*   t dddd}|j|dd  jks&td S )Nr)   r   ZasdfrH   )r   r"   r3   r   r4   r   r   r   test_slice_keep_name  s    z#TestRangeIndex.test_slice_keep_namec                 C   s   |j s
t|jrtd S r	   )Z	is_uniquer3   Zhas_duplicatesr   r   r   r   test_has_duplicates  s    
z"TestRangeIndex.test_has_duplicatesc                 C   s   |}| dd}|d |d d |d d  ks4td|d ksDt| dd}d|d d |d d  ksptd|d kstd S )Nrl   r]   r   r)   r   )Z_extended_gcdr3   r   r   r   r   test_extended_gcd  s    $ z TestRangeIndex.test_extended_gcdc                 C   s   t dddd}d|kstt ddd}d|ks:tt dddd}d|ksXtt ddd	d}d|ksvtd
}t d|d d|}||kstd S )Nr   r   r   r)   rl   r#   r%   r?   r$   l      !;o )r   Z_min_fitting_elementr3   )r   r0   Zbig_numr   r   r   test_min_fitting_element  s    z'TestRangeIndex.test_min_fitting_elementc                 C   s   d S r	   r   r   r   r   r   test_pickle_compat_construction  s    z.TestRangeIndex.test_pickle_compat_constructionc                 C   s  |}d|_ |d }d}||ks"t|d }d}||ks:t|d d  }|}t|| |ddd }ttddgdd	}tj||d
d |ddd }ttddgdd	}tj||d
d |ddd }ttddgdd	}tj||d
d |d d d }t|jd d d dd	}tj||d
d |dd d }ttdddgdd	}tj||d
d |dd d }ttjg tjddd	}tj||d
d |dd d }t|jdd d dd	}tj||d
d |dd d }t|jd d d dd	}tj||d
d d S )Nr!   r)   r   r$   r#      r]      rH   rV   rO   r%   ry   rU      r   ir+   (   )	r"   r3   r-   rS   r   r
   r,   rv   r   )r   r    r(   resr1   Zindex_slicer   r   r   test_slice_specialised  sF    z%TestRangeIndex.test_slice_specialisedr   r   rl   c                 C   sb   |dkrdnd\}}t |||}t|||}t|t|ksBtt|||}t|dks^td S )Nr   )r   r?   )r?   r   )r
   r   r   re   r3   )r   r   r   r   Zarrr(   r   r   r   test_len_specialised  s    z#TestRangeIndex.test_len_specialisedr   rU   r*   r   r   i      g@g      .@r|   Nr   c                 C   s   |j S )z6Inputs and expected outputs for RangeIndex.append testr   r   r   r   r   appends  s    zTestRangeIndex.appendsc                 C   s`   |\}}|d  |dd  }tj||dd t|dkr\|d  |d }tj||dd d S )Nr   r)   TrO   r   )appendr-   rS   re   )r   r   indicesr1   r0   Zresult2r   r   r   test_append,  s    zTestRangeIndex.test_appendc              	   C   s   t ddd}|ddkstt|ddgttddg t	j
tdd	 |d W 5 Q R X d
|jksttt	j
tdd	 |d W 5 Q R X d
|jkstd S )Nr   r]   r*   r?   r)   r   r   3r7   Z_enginez'a'r|   )r   r   r3   r-   r.   Zget_indexerr   r
   r,   r9   r:   r   r   r   r   r   r   test_engineless_lookup9  s     z%TestRangeIndex.test_engineless_lookupc                 C   s4   |  d}| g kst|jdddgks0td S )Nr   TrH    )r   r   r3   )r   Z	empty_idxr   r   r   test_format_emptyO  s    
z TestRangeIndex.test_format_emptyRIc                 C   s   | g }tj||dd d S )NTrO   )r   r-   rS   )r   r   r0   r   r   r   test_append_len_oneU  s    
z"TestRangeIndex.test_append_len_onebasec                 C   s2   t dd}||}tddg}t|| d S )Nr   r)   TF)r   isinr
   r,   r-   r.   )r   r   rv   r0   r1   r   r   r   test_isin_ranged  s    

zTestRangeIndex.test_isin_rangec                    sZ   dddddd t ddd}|j fddd	}td
ddddgdd}tj||dd d S )Nr   r   r   r]   r   )r   rl   rU   r   r   c                    s
   |   S r	   )map)xZ
sort_orderr   r   <lambda>p      z5TestRangeIndex.test_sort_values_key.<locals>.<lambda>)r5   rU   rl   r   r+   T)Zcheck_exact)r   Zsort_valuesr   r-   rS   )r   rv   r0   r1   r   r   r   test_sort_values_keyl  s
    z#TestRangeIndex.test_sort_values_key)?__name__
__module____qualname__r   r   r9   Zfixturer   r   r   r    r(   r2   r6   r>   markZparametrizer@   rF   rN   rT   r[   ra   rb   rg   ri   rj   rp   rq   rr   rs   rw   rx   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   setrL   r   r   I64F64OIr   r   r   r   r   r   r   r   r   r   r   r      s   


	


	?#
	

7
 """$,&((($








r   )Znumpyr
   r9   Zpandas.core.dtypes.commonr   ZpandasrY   Zpandas._testingZ_testingr-   Zpandas.core.indexes.apir   r   r   r   Zpandas.tests.indexes.commonr   r   r   r   r   r   r   r   r   r   <module>   s   