o
    dM                     @   sd   d dl Zd dlZd dlmZ d dlZd dlmZmZ d dl	m
Z d dlmZ eZG dd deZdS )    N)ensure_platform_int)Index
RangeIndex)NumericBasec                   @   s  e Zd ZeZejdd Zejg dddd Zej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d#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Zd;d< Zd=d> Zd?d@ ZdAdB Z dCdD Z!dEdF Z"dGdH Z#dIdJ Z$ejdKdLdMgdNdO Z%dPdQ Z&dRdS Z'dTdU Z(dVdW Z)dXdY Z*dZd[ Z+d\d] Z,d^d_ Z-d`da Z.ejdbe/e0dcddd	h dedf Z1eje2ddgdge2ddgdfe2d	dddhge2d	dddhfe2ddie2didjge2ddjfe2ddde2dddge2ddddfe2ddide2dhdjdige2ddjdife2dkdide2dhdjdge2dkdjdfe2dkdle2dldmge2d	d	fe2dkdle2didkge2d	d	fe2dkdle2didge2didfe2dkde2didge3g dnfe2de2didge2didfe2de2dge3g dofe2de2dde2ddpdhge2d	ddfe2de2dide2ddpdhge3g dqfe2dde2dde2ddpdhge2dddfe2die3g drge3g dsfe2die3g dtge3g dufe2die3g dvge3g dwfe2dide3g dvge3g dvfgddxdy Z4dzd{ Z5d|d} Z6d~d Z7ejded	dded	ddeddided	ddeddcdgdd Z8ejded	de3d	dggdd Z9dd Z:dd Z;dS )TestRangeIndexc                 C   s   t jS N)npint64self r   Z/app/.heroku/python/lib/python3.10/site-packages/pandas/tests/indexes/ranges/test_range.pydtype   s   zTestRangeIndex.dtype)Zuint64float64categoryZ
datetime64object)paramsc                 C      |j S r   paramr   requestr   r   r   invalid_dtype   s   zTestRangeIndex.invalid_dtypec                 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   Zidsc                 C   r   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_index-   s   z-TestRangeIndex.test_constructor_unwraps_indexc                 C   s"   |}|d }| |du sJ d S )Nr   F)Z$_can_hold_identifiers_and_holds_name)r   r    idxkeyr   r   r   test_can_hold_identifiers2   s   z(TestRangeIndex.test_can_hold_identifiersc                 C   sB   |}t jtdd ddg|_W d    d S 1 sw   Y  d S )Nz^LengthmatchZrogerZharold)pytestraises
ValueErrornamesr   r    r'   r   r   r   test_too_many_names7   s   "z"TestRangeIndex.test_too_many_nameszindex, start, stop, step   r(   )r   c                 C   s.   |j |ksJ |j|ksJ |j|ksJ d S r   r   )r   r'   r   r   r   r   r   r   test_start_stop_step_attrs<   s   z)TestRangeIndex.test_start_stop_step_attrsc                 C   sV   t ddd}| }||usJ ||sJ |jtdddks"J |jdks)J d S )Nr=   Foor"   r   r(   )r   copy	identical_rangeranger"   )r   iZi_copyr   r   r   	test_copyK   s   zTestRangeIndex.test_copyc                 C   s|   t ddd}t|}d}||ksJ t|}tj||dd t ddd}t|}d	}||ks0J t|}tj||dd d S )
Nr=   r?   r@   z/RangeIndex(start=0, stop=5, step=1, name='Foo')Texactr   r$   z$RangeIndex(start=5, stop=0, step=-1))r   reprevalr,   assert_index_equal)r   rE   r/   r0   r   r   r   	test_reprS   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d tj	fD ]}t dd|}t|| q3t ddtj
}tdtj
dd	d
dgtd}t|| d S )Nr=   r?   r@   r(      r   equivrG   r   r)   r*   )r   r,   rK   insertr   r   nanr   pdZNAZNaTr   )r   r2   r/   r0   nar   r   r   test_insertd   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 )
NrM   	   r   r   TrG   r)   
      r   rD   rO   r,   rK   r   r2   r/   r0   r   r   r   &test_insert_edges_preserves_rangeindexu   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(   TrG   rW   rX   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s!J |d d }|d}tj||dd |j|jks<J d	}tjttf|d
 |t	|}W d    d S 1 sZw   Y  d S )Nr=   r?   r@   r(   r   TrG   r$   z/index 5 is out of bounds for axis 0 with size 5r5   )
r   deleter,   rK   r"   r7   r8   
IndexErrorr9   len)r   r2   r0   r/   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!   r@   r(   TrG   r   rD   r[   r,   rK   rX   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!   r@   r(   r   TrG   r%   r`   rX   r   r   r   'test_delete_preserves_rangeindex_middle   s   

z6TestRangeIndex.test_delete_preserves_rangeindex_middlec                 C   sb   t ddd}g d}||}|d d }tj||dd ||d d d }tj||dd d S )	Nr      r(   )r   r)   rM   r=   r   TrG   r$   r   r[   r,   rK   r   r2   locr/   r0   r   r   r   ,test_delete_preserves_rangeindex_list_at_end      
z;TestRangeIndex.test_delete_preserves_rangeindex_list_at_endc                 C   sb   t ddd}g d}||}t ddd}tj||dd ||d d d }tj||dd d S )	Nr   rc   r(   )r(   r   r)   rM   r=   TrG   r$   rd   re   r   r   r   ,test_delete_preserves_rangeindex_list_middle   rh   z;TestRangeIndex.test_delete_preserves_rangeindex_list_middlec                 C   sb   t ddd}g d}||}|d d }tj||dd ||d d d }tj||dd d S )Nr   rc   r(   )r   r(   r   r)   rM   r=   TrG   r$   rd   re   r   r   r   $test_delete_all_preserves_rangeindex   rh   z3TestRangeIndex.test_delete_all_preserves_rangeindexc                 C   sb   t ddd}g d}||}tg d}tj||dd ||d d d }tj||dd d S )	Nr   rc   r(   )r   r)   r=   )r(   r   rM   TrG   r$   )r   r[   r   r,   rK   re   r   r   r   %test_delete_not_preserving_rangeindex   rh   z4TestRangeIndex.test_delete_not_preserving_rangeindexc                 C   sT   t ddd}| }|jdksJ |d}t|j| |t }t|| d S )Nr   r?   r@   i8)r   viewr"   r,   r-   valuesrK   )r   rE   Zi_viewr   r   r   	test_view   s   

zTestRangeIndex.test_viewc                 C   s   |}|j tjks
J d S r   )r   r   r	   r;   r   r   r   
test_dtype   s   zTestRangeIndex.test_dtypec                 C   s  t ddd}|ji ksJ t| |ji ksJ t| |ji ks#J |d |ji ks/J d|v  |ji ks:J d|v  |ji ksEJ |  |ji ksPJ |  |ji ks[J |D ]}q]|ji ksgJ |  |ji ksrJ tj	dt
di|d}t| |ji ksJ |jd	  |ji ksJ tjtd
d |jd  W d    n1 sw   Y  |ji ksJ |jdd	  |ji ksJ |jdd  |ji ksJ |j t|jtjsJ |j|ju sJ t|jdksJ tjddddd}t|jd | d S )Nr   d   rU   r   Z   [   a)r'   2   51r5   3   r=   r(   r	   r*   r.   )r   _cacherI   strget_locallanyformatrQ   Z	DataFramerD   rf   r7   r8   KeyErrorZilocr.   
isinstancer   Zndarrayr]   aranger,   r-   )r   r2   _Zdfr0   r   r   r   
test_cache   sP   

zTestRangeIndex.test_cachec                 C   s  t ddd}|jdu sJ |jdu sJ |jdu sJ |jdu s"J |jdu s)J t ddd}|jdu s6J |jdu s=J |jdu sDJ |jdu sKJ t dd}|jdu sWJ |jdu s^J |jdu seJ |jdu slJ |jdu ssJ t dd}|jdu sJ |jdu sJ |jdu sJ |jdu sJ |jdu sJ t dd}|jdu sJ |jdu sJ |jdu sJ |jdu sJ |jdu sJ d S )	Nr   r   r   TFrM   r$   r(   )r   Zis_monotonic_increasingZis_monotonic_decreasingZ!_is_strictly_monotonic_increasingZ!_is_strictly_monotonic_decreasingr   r'   r   r   r   test_is_monotonic*  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 ]\}}||s9J ||s@J q.d S )Nr   rT   r   rU   r(   r$   r)   rM   ir%   i)r   equals)r   Zequiv_pairsleftrightr   r   r   test_equals_rangeM  s   z TestRangeIndex.test_equals_rangec                 C   s4   |}|  |j  ksJ | |j ksJ d S r   )r{   rn   r|   )r   r    r2   r   r   r   test_logical_compatX  s   z"TestRangeIndex.test_logical_compatc                 C   s   |}t | }||sJ t|trd S t |td}||r#J |jtd}|d}t |td}||jtds?J ||rFJ t |dtd|sRJ |jtd|jddraJ d S )Nr*   r!   )r"   r   r	   )r   rA   rB   r   r   r   rename)r   r    r'   rE   Zsame_values_different_typeZsame_valuesr   r   r   test_identical]  s   

"zTestRangeIndex.test_identicalc                 C   sB   t dd}|jt|jjd k sJ t dd}|j|jksJ d S )Nr   i  rU   )r   nbytesr   Z_values)r   r2   i2r   r   r   test_nbytess  s   

zTestRangeIndex.test_nbyteszstart,stop,step)r!   r&   Zbaz)012c                 C   sT   dt | d| }tjt|d t||| W d    d S 1 s#w   Y  d S )NzWrong type z for value r5   )typer7   r8   	TypeErrorr   )r   r   r   r   r^   r   r   r   test_cant_or_shouldnt_cast|  s   
"z)TestRangeIndex.test_cant_or_shouldnt_castc                 C   s   |}| t d S r   )rm   r   r;   r   r   r   test_view_index  s   zTestRangeIndex.test_view_indexc                 C   s"   |}| d}|jtjksJ d S )NO)Zastyper   r   Zobject_r   r    r'   r/   r   r   r   test_prevent_casting  s   
z#TestRangeIndex.test_prevent_castingc                 C   s   |}t tt|| d S r   )r,   rK   rJ   rI   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J d S )Nr(   r   Zasdfr@   )r   r"   r   r2   r   r   r   test_slice_keep_name  s   z#TestRangeIndex.test_slice_keep_namec                 C   s   |j sJ |jr
J d S r   )Z	is_uniqueZhas_duplicatesr   r   r   r   test_has_duplicates  s   
z"TestRangeIndex.test_has_duplicatesc                 C   s   |}| dd}|d |d d |d d  ksJ d|d ks"J | dd}d|d d |d d  ks8J d|d ks@J d S )Nrc   rU   r   r(   r   )Z_extended_gcdr   r   r   r   test_extended_gcd  s   $ z TestRangeIndex.test_extended_gcdc                 C   s   t dddd}d|ksJ t ddd}d|ksJ t dddd}d|ks,J t ddd	d}d|ks;J d
}t d|d d|}||ksNJ d S )Nr   r   r   r(   rc   r#   r%   r=   r$   l      !;o )r   Z_min_fitting_element)r   r/   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J |d }d}||ksJ |d d  }|}t|| |ddd }tddgdd	}tj||d
d |ddd }tddgdd	}tj||d
d |ddd }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g d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#      rU      r@   rN   rG   r%   rq   rM      )rM   r   r   ir*   (   )r"   r,   rK   r   rn   r   r+   r	   )r   r    r'   resr0   Zindex_slicer   r   r   test_slice_specialised  sF   z%TestRangeIndex.test_slice_specialisedr   r   rc   c                 C   sb   |dkrdnd\}}t |||}t|||}t|t|ks!J t|||}t|dks/J d S )Nr   )r   r=   )r=   r   )r   r   r   r]   )r   r   r   r   Zarrr'   r   r   r   test_len_specialised  s   z#TestRangeIndex.test_len_specialisedr   rM   r)   r   r   i)r   r)   rM   )r   r(   r   r(      )r   r(   r)   rM   r=   )r$   r)      )r   r(   r   r$   r)   r   )r$   @      .@)r   r(   r   r$   r   r   )rt   Nr   )r   r(   r   rt   Nr   c                 C   r   )z6Inputs and expected outputs for RangeIndex.append testr   r   r   r   r   appends  s   zTestRangeIndex.appendsc                 C   sd   |\}}|d  |dd  }tj||dd t|dkr0|d  |d }tj||dd d S d S )Nr   r(   TrG   r   )appendr,   rK   r]   )r   r   indicesr0   r/   Zresult2r   r   r   test_append  s   zTestRangeIndex.test_appendc                 C   s   t ddd}|ddksJ t|ddgttddg tj	t
dd	 |d W d    n1 s8w   Y  d
|jvsDJ tj	t
dd	 |d W d    n1 s[w   Y  d
|jvsgJ d S )Nr   rU   r)   r=   r(   r   r   3r5   Z_enginez'a'rt   )r   rz   r,   r-   Zget_indexerr   r   r+   r7   r8   r~   rx   r   r   r   r   test_engineless_lookup*  s   z%TestRangeIndex.test_engineless_lookupc                 C   s4   |  d}| g ksJ |jdddgksJ d S )Nr   Tr@    )r   r}   )r   Z	empty_idxr   r   r   test_format_empty@  s   
z TestRangeIndex.test_format_emptyRIr   c                 C   s   | g }tj||dd d S )NTrG   )r   r,   rK   )r   r   r/   r   r   r   test_append_len_oneF  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   rn   r/   r0   r   r   r   test_isin_rangeU  s   

zTestRangeIndex.test_isin_rangec                    sT   dddddd t ddd}|j fddd	}tg d
dd}tj||dd d S )Nr   r   r   rU   r   )r   rc   rM   r   r   c                    s
   |   S r   )map)xZ
sort_orderr   r   <lambda>a  s   
 z5TestRangeIndex.test_sort_values_key.<locals>.<lambda>)r3   )rM   r   rc   r   r   r	   r*   T)Zcheck_exact)r   Zsort_valuesr   r,   rK   )r   rn   r/   r0   r   r   r   test_sort_values_key]  s
   z#TestRangeIndex.test_sort_values_keyc                 C   s   t d d S )Nz.casting of strings not relevant for RangeIndex)r7   skip)r   r   r   r   r   test_cast_stringe  s   zTestRangeIndex.test_cast_stringN)<__name__
__module____qualname__r   r   r7   Zfixturer   r   r    r'   r1   r4   r<   markZparametrizer>   rF   rL   rS   rY   rZ   r_   ra   rb   rg   ri   rj   rk   ro   rp   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   setrD   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      s    




	
	?#	
	
7
 ""$&& 








r   )numpyr   r7   Zpandas.core.dtypes.commonr   ZpandasrQ   r   r   Zpandas._testingZ_testingr,   Zpandas.tests.indexes.commonr   r   r   r   r   r   r   <module>   s    