U
    >vfM                     @   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                   @   s4  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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/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"dKdL Z#dMdN Z$ejdOdPdQgdRdS Z%dTdU Z&dVdW Z'dXdY Z(dZd[ Z)d\d] Z*d^d_ Z+d`da Z,dbdc Z-ddde Z.ejdfe/e0dgdhdh didj Z1eje2d#dkd"ge2d#dkd"fe2ddhdlge2ddhdlfe2d#dme2dmdnge2d#dnfe2d#d"de2d"dhge2d#dhdfe2d#dmde2dldndmge2d#dndmfe2dodmde2dldndge2dodndfe2dodpe2dpdqge2ddfe2dodpe2dmdoge2ddfe2dodpe2dmd"ge2dmd"fe2dode2dmd"ge3dodrdmdlgfe2de2dmd"ge2dmd"fe2de2dge3dd#dd#gfe2de2dd"e2d"dsdlge2ddhfe2de2dmd"e2d"dsdlge3dd#dmdld"gfe2dde2dd"e2d"dsdlge2ddhfe2dme3ddmdtgge3dd#dddmdtgfe2dme3ddudvgge3dd#dddudvgfe2dme3dwdxdygge3dd#ddwdxdygfe2dmd#e3dwdxdygge3dwdxdygfgddzd{ Z4d|d} Z5d~d Z6dd Z7ejdedddedd#d#ed#dmdedddedrdgdgdd Z8ejdedde3dd#ggdd Z9dd Z:dd Z;dxS )TestRangeIndexc                 C   s   t jS N)npint64self r   J/tmp/pip-unpacked-wheel-vdrwu74i/pandas/tests/indexes/ranges/test_range.pydtype   s    zTestRangeIndex.dtypeZuint64float64categoryZ
datetime64object)paramsc                 C   s   |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   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_index-   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_identifiers2   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_names7   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   r1   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}| }||k	s t||s.t|jtdddksDt|jdksRtd S )Nr=   Foor    r   r'   )r   copyr1   	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$tt|}tj||dd t ddd}t|}d	}||ks`t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   reprr1   evalr+   assert_index_equal)r   rE   r.   r/   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|| qft 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.   r/   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.   r/   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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=   r?   r@   r'   r   TrG   r"   z/index 5 is out of bounds for axis 0 with size 5r5   )r   deleter+   rK   r    r1   r7   r8   
IndexErrorr9   len)r   r2   r/   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   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(   rM   r=   TrG   r"   r   r[   r+   rK   r   r2   locr.   r/   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 rc   re   rf   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 rc   re   rf   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   rd   r'   r(   r=   r   rM   TrG   r"   )r   r[   r   r+   rK   rf   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   r?   r@   i8)r   viewr    r1   r+   r,   valuesrK   )r   rE   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	   r1   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   rU   r   Z   [   a)r&   2   Z51r5   3   r=   r'   r	   r)   r-   )r   _cacher1   rI   strget_locallanyformatrQ   Z	DataFramerD   rg   r7   r8   KeyErrorZilocr-   
isinstancer   Zndarrayr]   aranger+   r,   )r   r2   _Zdfr/   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   TFrM   r"   r'   )r   Zis_monotonic_increasingr1   Z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 ]$\}}||srt||s\tq\d S )Nr   rT   r   rU   r'   r"   r(   rM   ir#   i)r   equalsr1   )r   Zequiv_pairsleftrightr   r   r   test_equals_rangeM  s    z TestRangeIndex.test_equals_rangec                 C   s4   |}|  |j  kst| |j ks0td S r   )rz   rn   r1   r{   )r   r   r2   r   r   r   test_logical_compatX  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   rA   rB   r1   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$tt dd}|j|jks>td S )Nr   i  rU   )r   nbytesr   Z_valuesr1   )r   r2   i2r   r   r   test_nbytess  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 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td S )NO)Zastyper   r   Zobject_r1   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&td S )Nr'   r   Zasdfr@   )r   r    r1   r   r2   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_uniquer1   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 )Nrd   rU   r   r'   r   )Z_extended_gcdr1   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'   rd   r!   r#   r=   r"   l      !;o )r   Z_min_fitting_elementr1   )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"t|d }d}||ks:t|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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!      rU      r@   rN   rG   r#   rq   rM      r   ir)   (   )	r    r1   r+   rK   r   rn   r   r*   r	   )r   r   r&   resr/   Zindex_slicer   r   r   test_slice_specialised  sF    z%TestRangeIndex.test_slice_specialisedr   r   rd   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   r]   r1   )r   r   r   r   Zarrr&   r   r   r   test_len_specialised  s    z#TestRangeIndex.test_len_specialisedr   rM   r(   r   r   i      g@g      .@rt   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'   TrG   r   )appendr+   rK   r]   )r   r   indicesr/   r.   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   rU   r(   r=   r'   r   r   3r5   Z_enginez'a'rt   )r   ry   r1   r+   r,   Zget_indexerr   r   r*   r7   r8   r}   rw   r   r   r   r   test_engineless_lookup*  s     z%TestRangeIndex.test_engineless_lookupc                 C   s4   |  d}| g kst|jdddgks0td S )Nr   Tr@    )r   r|   r1   )r   Z	empty_idxr   r   r   test_format_empty@  s    
z TestRangeIndex.test_format_emptyRIc                 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.   r/   r   r   r   test_isin_rangeU  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   rU   r   )r   rd   rM   r   r   c                    s
   |   S r   )map)xZ
sort_orderr   r   <lambda>a      z5TestRangeIndex.test_sort_values_key.<locals>.<lambda>)r3   rM   rd   r	   r)   T)Zcheck_exact)r   Zsort_valuesr   r+   rK   )r   rn   r.   r/   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_string)<__name__
__module____qualname__r   r   r7   Zfixturer   r   r   r&   r0   r4   r<   markZparametrizer>   rF   rL   rS   rY   rZ   r_   ra   rb   rh   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   )Z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   