U
    f/eA                     @   sx   d dl Zd dlZd dlmZ d dlZd dlmZmZm	Z	m
Z
 d dl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                   @   s  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ejdFdGdHgdIdJ ZdKdL Z dMdN Z!dOdP Z"dQdR Z#dSdT Z$dUdV Z%dWdX Z&dYdZ Z'd[d\ Z(ejd]e)e*d^d_dh d`da Z+eje,d$dbd#ge,d$dbd#fe,dd_dcge,dd_dcfe,d$dde,dddege,d$defe,d$d#de,d#d_ge,d$d_dfe,d$ddde,dcdeddge,d$deddfe,dfddde,dcdedge,dfdedfe,dfdge,dgdhge,ddfe,dfdge,dddfge,ddfe,dfdge,ddd#ge,ddd#fe,dfde,ddd#ge-dfdidddcgfe,de,ddd#ge,ddd#fe,de,dge-dd$dd$gfe,de,dd#e,d#djdcge,dd_fe,de,ddd#e,d#djdcge-dd$dddcd#gfe,dde,dd#e,d#djdcge,dd_fe,dde-ddddkgge-dd$dddddkgfe,dde.ddldmgge.dd$dddldmgfe,dde/dndodpgge/dd$ddndodpgfe,ddd$e/dndodpgge/dndodpgfgddqdr Z0dsdt Z1dudv Z2dwdx Z3ejdyedddedd$d$ed$dddedddedid^dgdzd{ Z4ejd|edde	dd$ggd}d~ Z5doS )TestRangeIndexc                 C   s   t jS N)npint64self r   J/tmp/pip-unpacked-wheel-tiezk1ph/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|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   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   s   t ddd}|dd  t}|d}t|| |j|jksDt|d d t}|d}t|| |j|jks|td}tj	t
tf|d |t|}W 5 Q R X d S )	Nr?   rG   rH   r)   r   r$   z/index 5 is out of bounds for axis 0 with size 5r7   )r   astypeintdeleter-   rS   r"   r3   r9   r:   
IndexErrorr;   len)r   r4   r1   r0   msgr   r   r   test_delete   s    

zTestRangeIndex.test_deletec                 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   Z   [   a)r(   2   Z51r7   3   r?   r)   r   r+   r/   )r   _cacher3   rQ   strget_locallanyformatrX   Z	DataFramerL   locr9   r:   KeyErrorZilocr/   
isinstancer
   Zndarrayr_   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_monotonicr3   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 ]$\}}||srt||s\tq\d S )Nr   	   r   rh   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	   )rq   rd   r3   rr   )r   r    r4   r   r   r   test_logical_compat  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   rv   r   r   rename)r   r    r(   rM   Zsame_values_different_typeZsame_valuesr   r   r   test_identical  s    

zTestRangeIndex.test_identicalc                 C   s>   t dd}|j|jjd k s tt dd}|j|jks:td S )Nr   i  rh   )r   nbytesZ_int64indexr3   )r   rM   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   r`   r   r   r   test_cant_or_shouldnt_cast5  s    
z)TestRangeIndex.test_cant_or_shouldnt_castc                 C   s   |}| t d S r	   )rc   r   r=   r   r   r   test_view_indexC  s    zTestRangeIndex.test_view_indexc                 C   s"   |}| d}|jtjkstd S )NO)r[   r   r
   Zobject_r3   r   r    r(   r0   r   r   r   test_prevent_castingG  s    
z#TestRangeIndex.test_prevent_castingc                 C   s   |}t tt|| d S r	   )r-   rS   rR   rQ   r=   r   r   r   test_repr_roundtripL  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_nameP  s    z#TestRangeIndex.test_slice_keep_namec                 C   s   |j s
t|jrtd S r	   )Z	is_uniquer3   Zhas_duplicatesrz   r   r   r   test_has_duplicatesT  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 )N   rh   r   r)   r   )Z_extended_gcdr3   r   r   r   r   test_extended_gcdX  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)   r   r#   r%   r?   r$   l      !;o )r   Z_min_fitting_elementr3   )r   r0   Zbig_numr   r   r   test_min_fitting_elementb  s    z'TestRangeIndex.test_min_fitting_elementc                 C   s   d S r	   r   r   r   r   r   test_pickle_compat_constructiont  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|| |dd
d }ttddgdd	}t|| |ddd }ttddgdd	}t|| |d d d }t|jd d d dd	}t|| |dd d }ttdddgdd	}t|| |dd d }ttjg tjddd	}t|| |dd d }t|jdd d dd	}t|| |dd d }t|jd d d dd	}t|| d S )Nr!   r)   r   r$   r#      rh      rH   r%   rg   rU      r   ir+   (   )	r"   r3   r-   rS   r   r
   r,   rd   r   )r   r    r(   resr1   Zindex_slicer   r   r   test_slice_specialisedx  sF    z%TestRangeIndex.test_slice_specialisedr   r   r   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
   rw   r   r_   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      .@rk   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   r_   )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   rh   r*   r?   r)   r   r   3r7   Z_enginez'a'rk   )r   rp   r3   r-   r.   Zget_indexerr   r
   r,   r9   r:   ru   rn   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   TrH    )r   rs   r3   )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 )NTrO   )r   r-   rS   )r   r   r0   r   r   r   test_append_len_one  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   rd   r0   r1   r   r   r   test_isin_range  s    

zTestRangeIndex.test_isin_range)6__name__
__module____qualname__r   r   r9   Zfixturer   r   r   r    r(   r2   r6   r>   markZparametrizer@   rF   rN   rT   rZ   ra   re   rf   ry   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      s   


	

?#
	

7
 """$,&((($







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