U
    >vf                     @   s   d Z ddlZddlZddlZddlmZ ddlm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G dd dZG dd dZG dd dZG dd dZG dd dZdS )z9
Tests that can be parametrized over _any_ Index object.
    N)InvalidIndexErrorc              	   C   sD   t jtdd
 | rW 5 Q R X t jtdd t|  W 5 Q R X d S )NzThe truth value of amatch)pytestraises
ValueErrorboolindex r   G/tmp/pip-unpacked-wheel-vdrwu74i/pandas/tests/indexes/test_any_index.pytest_boolean_context_compat   s
    
r   c              	   C   s*   d}t jt|d |   W 5 Q R X d S )Nz=cannot sort an Index object in-place, use sort_values insteadr   )r   r   	TypeErrorsortr
   msgr   r   r   	test_sort   s    r   c              	   C   s4   t jtdt| j dd t|  W 5 Q R X d S )Nzunhashable type: ''r   )r   r   r   type__name__hashr	   r   r   r   test_hash_error   s    r   c              	   C   s:   t | sd S d}tjt|d | d | d< W 5 Q R X d S )Nz)Index does not support mutable operationsr   r   )lenr   r   r   r   r   r   r   test_mutability#   s
    r   c                 C   sJ   |  dd }| jtkr6|jtkr6| |k s2td S tj|| dd d S )Nc                 S   s   | S Nr   )xr   r   r   <lambda>.       z+test_map_identity_mapping.<locals>.<lambda>equivexact)mapdtypeobjectr   allAssertionErrortmassert_index_equal)r
   requestresultr   r   r   test_map_identity_mapping+   s
    r*   c              	   C   s4   | j dddg }tjtdd || _W 5 Q R X d S )NZappleZbananaZcarrotz^Lengthr   )nlevelsr   r   r   names)r
   r,   r   r   r   test_wrong_number_names6   s    r-   c                 C   s   |   j| jkstd S r   )viewnamer%   r	   r   r   r   test_view_preserves_name<   s    r0   c                 C   s   |   }t||  d S r   )Zravelr&   r'   )r
   resr   r   r   
test_ravel@   s    r2   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestConversionc                 C   s:   |  }|j|jk	st|j|k	s&t|j|jks6td S r   Z	to_seriesvaluesr%   r
   r/   selfr
   Zserr   r   r   test_to_seriesG   s    zTestConversion.test_to_seriesc                 C   sx   |j |d}|j|jk	st|j|ks*t|j|jks:t|j dd}|j|jk	sVt|j|k	sdt|j|jksttd S )Nr	   Z__test)r/   r4   r6   r   r   r   test_to_series_with_argumentsO   s    z,TestConversion.test_to_series_with_argumentsc                 C   s   |  t|kstd S r   )tolistlistr%   r7   r
   r   r   r   test_tolist_matches_list`   s    z'TestConversion.test_tolist_matches_listN)r   
__module____qualname__r8   r9   r=   r   r   r   r   r3   F   s   r3   c                   @   s   e Zd Zdd Zdd ZdS )TestRoundTripsc                 C   s6   t |}t j||dd |jdkr2||s2td S )NTr      )r&   round_trip_pickler'   r+   Zequal_levelsr%   r7   r
   r)   r   r   r   test_pickle_roundtripe   s    

z$TestRoundTrips.test_pickle_roundtripc                 C   s0   |j d }|_ t|}||s&t||_ d S )Nfoo)r/   r&   rB   equalsr%   )r7   r
   original_nameZ	unpickledr   r   r   test_pickle_preserves_namel   s    
z)TestRoundTrips.test_pickle_preserves_nameN)r   r>   r?   rD   rH   r   r   r   r   r@   d   s   r@   c                   @   s@   e Zd Zdd Zdd Zdd Zejddd	d
gdd Z	dS )TestIndexingc              	   C   sf   t jddgt jd}tjtdd || W 5 Q R X tjtdd ||t W 5 Q R X d S )Nr   rA   )r"   z\[0 1\]r   z\[False  True\])	nparrayZintpr   r   r   Zget_locZastyper   )r7   r
   keyr   r   r   0test_get_loc_listlike_raises_invalid_index_errort   s
    z=TestIndexing.test_get_loc_listlike_raises_invalid_index_errorc                 C   s&   |d }| |st||k	s"td S )N.)rF   r%   rC   r   r   r   test_getitem_ellipsis~   s    z"TestIndexing.test_getitem_ellipsisc                 C   s   |j |dd  j kstd S )NrA   )r/   r%   r<   r   r   r   test_slice_keeps_name   s    z"TestIndexing.test_slice_keeps_nameiteme   Zno_intg      @c              	   C   s<   d dtddg}tjt|d ||  W 5 Q R X d S )N|z5index 101 is out of bounds for axis 0 with size [\d]+zuonly integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indiceszindex out of boundsr   )joinreescaper   r   
IndexError)r7   r
   rP   r   r   r   r   test_getitem_error   s    zTestIndexing.test_getitem_errorN)
r   r>   r?   rM   rN   rO   r   markZparametrizerW   r   r   r   r   rI   s   s
   
rI   c                   @   s   e Zd Zdd ZdS )TestRenderingc                 C   s0   d|_ dt|kstt|jt|ks,td S )NrE   z'foo')r/   strr%   r   r   r<   r   r   r   test_str   s    zTestRendering.test_strN)r   r>   r?   r[   r   r   r   r   rY      s   rY   c                   @   s   e Zd Zdd ZdS )TestReductionsc              	   C   s   d}t jt|d |jdd W 5 Q R X t jt|d |jdd W 5 Q R X t jt|d |jdd W 5 Q R X t jt|d |jdd W 5 Q R X d S )Nz8`axis` must be fewer than the number of dimensions \(1\)r   rA   )Zaxis   )r   r   r   ZargmaxZargminminmax)r7   r
   r   r   r   r   test_argmax_axis_invalid   s    z'TestReductions.test_argmax_axis_invalidN)r   r>   r?   rb   r   r   r   r   r\      s   r\   )__doc__rT   ZnumpyrJ   r   Zpandas.errorsr   Zpandas._testingZ_testingr&   r   r   r   r   r*   r-   r0   r2   r3   r@   rI   rY   r\   r   r   r   r   <module>   s$   
%