3
Ud,3                 @   s8   d dl Zd dlZd dlZddlmZ G dd deZdS )    N   )BaseExtensionTestsc               @   s  e Zd 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d Zdd Zejjddddgejdddgd d!ejdddggd"d#d$gd%d&d' Zejjddddejgejdddejgd d!gd"d#gd%d(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Z d8d9 Z!ejjd:d;d<gd=d> Z"d?d@ Z#dAdB Z$dCdD Z%dEdF Z&dGdH Z'dIS )JBaseGetitemTestsz%Tests for ExtensionArray.__getitem__.c             C   sX   t j|}|jd d }t j|d d }| j|| |jddddg }| j|| d S )N   r   r         )pdSeriesilocassert_series_equal)selfdataserresultexpected r   W/var/www/html/virt/lib64/python3.6/site-packages/pandas/tests/extension/base/getitem.pytest_iloc_series   s    
z!BaseGetitemTests.test_iloc_seriesc             C   s*  t j|tjt|ddd}t jd|d d i}|jd ddgf }| j|| |jdddd	gdgf }| j|| t j|d d dd
}|jd ddf }| j|| |jd ddf }| j|| |jd d d d df }| j||dg  |ddg jd d d d df }| j||dg  d S )Nint64)dtype)ABr   r   r   r   r   r   )namer   )	r   	DataFramenparangelenr
   assert_frame_equalr	   r   )r   r   dfr   r   r   r   r   test_iloc_frame   s     z BaseGetitemTests.test_iloc_framec             C   s   t jd|i}|jd d d d f }| j|| |jd d d df }| j|| |jd d d df }| j|| |jd d d d df }| j|| |jd d ddf }| j||jd d d df  |jd d dd f }| j|| d S )Nr   r   r   r   )r   r   r
   r   )r   r   r   r   r   r   r   test_iloc_frame_single_block1   s    z-BaseGetitemTests.test_iloc_frame_single_blockc             C   sX   t j|}|jd d }t j|d d }| j|| |jddddg }| j|| d S )Nr   r   r   r   r   )r   r	   locr   )r   r   r   r   r   r   r   r   test_loc_seriesG   s    
z BaseGetitemTests.test_loc_seriesc             C   s   t j|tjt|ddd}t jd|d d i}|jd ddgf }| j|| |jddd	dgdgf }| j|| t j|d d dd
}|jd ddf }| j|| |jd ddf }| j|| d S )Nr   )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   test_loc_frameP   s    zBaseGetitemTests.test_loc_framec             C   s~   t jd|i}t j|d gdgd|jd}|jd }| j|| t j|d gdgt|d |jd}|jd }| j|| d S )Nr   r   )indexr   r   r   r    r    )r   r   r	   r   r"   r   r   r
   )r   r   r   r   r   r   r   r    test_loc_iloc_frame_single_dtypef   s    
 
z1BaseGetitemTests.test_loc_iloc_frame_single_dtypec             C   s>   |d }t ||jjsttj|d }t ||jjs:td S )Nr   )
isinstancer   typeAssertionErrorr   r	   )r   r   r   r   r   r   test_getitem_scalaru   s    z$BaseGetitemTests.test_getitem_scalarc             C   s   |d }|||st d S )Nr   )r)   )r   data_missingna_cmpna_valuer   r   r   r   test_getitem_scalar_na|   s    z'BaseGetitemTests.test_getitem_scalar_nac             C   sL   |g  }t |dkstt|t|s*t|tjg dd }| j|| d S )Nr   r   )r   )r   r)   r'   r(   r   arrayassert_extension_array_equal)r   r   r   r   r   r   r   test_getitem_empty   s
    z#BaseGetitemTests.test_getitem_emptyc             C   s   t jt|td}|| }t|dks*tt|t|s<tt jt|td}tj|| }t|dkslt|j	|j	ks|td|d< || }t|dkstt|t|sttj|| }t|dkst|j	|j	kstd S )N)r   r   Tr   )
r   zerosr   boolr)   r'   r(   r   r	   r   )r   r   maskr   r   r   r   test_getitem_mask   s    z"BaseGetitemTests.test_getitem_maskc             C   s\   t jddg}tjt ||  W d Q R X tj|dd}tjt ||  W d Q R X d S )NTFboolean)r   )r   r/   pytestraises
IndexErrorr   )r   r   r4   r   r   r   test_getitem_mask_raises   s    z)BaseGetitemTests.test_getitem_mask_raisesc             C   s   t jtj|jdddd}|| }t|dks2tt|t|sDtt j	|| }t|dksbt|j
|j
ksrtd|d d< |jdddd	d
g}|| }| j|| t j	|}t j	|| }| j|| d S )Nr3   )r   r6   r   T   r   r   r   r   )r   r/   r   r2   shaper   r)   r'   r(   r	   r   taker0   r   )r   r   r4   r   r   r   r   r   test_getitem_boolean_array_mask   s    
z0BaseGetitemTests.test_getitem_boolean_array_maskc             C   s   t jtj|jdddd}t j|d d< d|dd< || }||jd }| j|| t j|}|| }||jd }| j	|| d S )Nr3   )r   r6   r   Tr   F)
r   r/   r   r2   r<   NAZfillnar0   r	   r   )r   r   r4   r   r   sr   r   r   (test_getitem_boolean_na_treated_as_false   s    
z9BaseGetitemTests.test_getitem_boolean_na_treated_as_falseidxr   r   r   ZInt64)r   listzinteger-arrayznumpy-array)idsc             C   sn   || }t |dkstt|t|s*t|jdddg}| j|| tj|}tj|| }| j|| d S )Nr   r   r   r   )	r   r)   r'   r(   r=   r0   r   r	   r   )r   r   rB   r   r   r   r   r   test_getitem_integer_array   s    
z+BaseGetitemTests.test_getitem_integer_arrayc          	   C   s*   d}t jt|d ||  W d Q R X d S )Nz9Cannot index with an integer indexer containing NA values)match)r7   r8   
ValueError)r   r   rB   msgr   r   r   (test_getitem_integer_with_missing_raises   s    z9BaseGetitemTests.test_getitem_integer_with_missing_raisesc             C   s@   |t d }t|t|st|t d }t|t|s<td S )Nr   r   )slicer'   r(   r)   )r   r   r   r   r   r   test_getitem_slice   s    z#BaseGetitemTests.test_getitem_slicec             C   s  t j|dd tt|D d}|jd|jd ks8t|jddg}|jddg }| j|| |jtd}|jdd	g }| j|| |jdd kst|j|j	j
 d	 d kstt j|d d td
d}|jd|jd kst|jtdd}|jd	ddg }| j|| |jd}|d ks,t|jd|jd ksFt|jd|jd ks`t|jt|d ksxtt j|}|d d d }|jd	d kstd S )Nc             S   s   g | ]}d | qS )r   r   ).0ir   r   r   
<listcomp>   s    z-BaseGetitemTests.test_get.<locals>.<listcomp>)r%   r   r      r   r   r   ZabcdefcbdZr    r    r    )r   r	   ranger   getr
   r)   r   rJ   r%   maxrC   )r   r   r@   r   r   s2r   r   r   test_get   s.     

zBaseGetitemTests.test_getc             C   sZ   t j|dddg }|jd |d ks*t|jd |d ks@t|jd |d ksVtd S )Nr   r   r   r   )r   r	   r
   r)   )r   r   r   r   r   r   test_take_sequence  s    z#BaseGetitemTests.test_take_sequencec          
   C   s   |j ddg}|j|jkst|d |d ks2t|d |d ksFt|j dd	gd|d}|d |d ksnt||d |sttjtdd |j t|d g W d Q R X d S )
Nr   r   T)
allow_fill
fill_valuezout of bounds)rF   r    r    r    )r=   r   r)   r7   r8   r9   r   )r   r   r-   r,   r   r   r   r   	test_take!  s    zBaseGetitemTests.test_takec             C   s|   |d d }|j dgdd}||d |s.ttjt |j dg W d Q R X tjtdd |j ddg W d Q R X d S )	Nr   r   T)rZ   zcannot do a non-empty take)rF   r    r    )r=   r)   r7   r8   r9   )r   r   r-   r,   emptyr   r   r   r   test_take_empty.  s    z BaseGetitemTests.test_take_emptyc             C   sJ   t |}|jd| |d dg}|jdd|d |d g}| j|| d S )Nr   r   r    )r   r=   r0   )r   r   nr   r   r   r   r   test_take_negative:  s    z#BaseGetitemTests.test_take_negativec             C   sX   |d }|d }|j |||g|jd}|jddg|dd}|jddg}| j|| d S )Nr   r   )r   T)r[   rZ   r    )_from_sequencer   r=   r0   )r   r+   r[   nar/   r   r   r   r   r   test_take_non_na_fill_valueA  s    z,BaseGetitemTests.test_take_non_na_fill_valuec             C   s.   t jt |jddg|dd W d Q R X d S )Nr   r   T)r[   rZ   )r7   r8   rG   r=   )r   r   r-   r   r   r   &test_take_pandas_style_negative_raisesL  s    z7BaseGetitemTests.test_take_pandas_style_negative_raisesrZ   TFc             C   s>   |d d }t jt |jtjddg|d W d Q R X d S )Nr   r   )rZ   )r7   r8   r9   r=   r   Zasarray)r   r   rZ   Zarrr   r   r   test_take_out_of_bounds_raisesP  s    z/BaseGetitemTests.test_take_out_of_bounds_raisesc             C   sb   t j|}|jddg}t j|j|d |t|d  g|jddt|d gd}| j|| d S )Nr   r   )r   )r%   r    )r   r	   r=   ra   r   r   r   )r   r   r@   r   r   r   r   r   test_take_seriesV  s    
"z!BaseGetitemTests.test_take_seriesc             C   s   t j|}|jdddg}t j|jdddgdddgd}| j|| t|}|jdd|g}t j|j||d |g|jddd|gd}| j|| |j||d g}t j|j||g|jd||d gd}| j|| d S )Nr   r   r   )r%   )r   r    r    )r   r	   reindexr=   r   r   ra   r   )r   r   r-   r@   r   r   r_   r   r   r   test_reindex_  s    
 "zBaseGetitemTests.test_reindexc             C   sn   |d }|d }|j ||g|jd}tj|}|jdddg|d}tj|j |||g|jd}| j|| d S )Nr   r   )r   r   )r[   )ra   r   r   r	   rh   r   )r   r+   Zvalidrb   r/   r   r   r   r   r   r   test_reindex_non_na_fill_values  s    
z/BaseGetitemTests.test_reindex_non_na_fill_valuec             C   s4   t jd|i}|jdgdf }|jjjdks0td S )Nr   r   r   )r   r   r"   Z_mgr_blockndimr)   )r   r   r   resr   r   r   test_loc_len1  s    zBaseGetitemTests.test_loc_len1c             C   s~   t j|}|d d j }||d ks*td}tjt|d |d d j  W d Q R X tjt|d |j  W d Q R X d S )Nr   r   z6can only convert an array of size 1 to a Python scalar)rF   )r   r	   itemr)   r7   r8   rG   )r   r   r@   r   rH   r   r   r   	test_item  s    
zBaseGetitemTests.test_itemN)(__name__
__module____qualname____doc__r   r   r!   r#   r$   r&   r*   r.   r1   r5   r:   r>   rA   r7   markZparametrizer   r/   r   rE   r?   rI   rK   rX   rY   r\   r^   r`   rc   re   rf   rg   ri   rj   rn   rp   r   r   r   r   r   	   sH   				*$#	r   )Znumpyr   r7   Zpandasr   baser   r   r   r   r   r   <module>   s   