U
    f/e                     @   s   d Z ddlZddl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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 )ze
Tests that can be parametrized over _any_ Index object.

TODO: consider using hypothesis for these.
    Nc              	   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-tiezk1ph/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 t | jtd W 5 Q R X d S )N)Zdtype)tmassert_produces_warningFutureWarningcopyobjectr   r
   r
   r   test_copy_dtype_deprecated"   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   s   t | | dd  d S )Nc                 S   s   | S Nr
   )xr
   r
   r   <lambda>2       z+test_map_identity_mapping.<locals>.<lambda>)r   assert_index_equalmapr   r
   r
   r   test_map_identity_mapping0   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_names5   s    r(   c                 C   s   |   j| jkstd S r   )viewnameAssertionErrorr   r
   r
   r   test_view_preserves_name;   s    r,   c              	   C   s"   t t |   W 5 Q R X d S r   )r   r   r   Zravelr   r
   r
   r   test_ravel_deprecation?   s    r-   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_seriesF   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*   r/   r1   r
   r
   r   test_to_series_with_argumentsN   s    z,TestConversion.test_to_series_with_argumentsc                 C   s   |  t|kstd S r   )tolistlistr+   r2   r	   r
   r
   r   test_tolist_matches_list_   s    z'TestConversion.test_tolist_matches_listN)r   
__module____qualname__r3   r4   r8   r
   r
   r
   r   r.   E   s   r.   c                   @   s   e Zd Zdd Zdd ZdS )TestRoundTripsc                 C   s2   t |}t || |jdkr.||s.td S N   )r   round_trip_pickler#   r&   Zequal_levelsr+   )r2   r	   resultr
   r
   r   test_pickle_roundtripd   s    

z$TestRoundTrips.test_pickle_roundtripc                 C   s0   |j d }|_ t|}||s&t||_ d S )Nfoo)r*   r   r>   equalsr+   )r2   r	   original_nameZ	unpickledr
   r
   r   test_pickle_preserves_namek   s    
z)TestRoundTrips.test_pickle_preserves_nameN)r   r9   r:   r@   rD   r
   r
   r
   r   r;   c   s   r;   c                   @   s:   e Zd Zdd Zejdddgejddd Zd	S )
TestIndexingc                 C   s   |j |dd  j kstd S r<   )r*   r+   r7   r
   r
   r   test_slice_keeps_names   s    z"TestIndexing.test_slice_keeps_nameiteme   Zno_intzignore::FutureWarningc              	   C   s4   dt d }tjt|d ||  W 5 Q R X d S )Nz6index 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 indicesr   )reescaper   r   
IndexError)r2   r	   rG   r   r
   r
   r   test_getitem_errorv   s
    zTestIndexing.test_getitem_errorN)	r   r9   r:   rF   r   markZparametrizefilterwarningsrL   r
   r
   r
   r   rE   r   s   
rE   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 )NrA   z'foo')r*   strr+   r   r   r7   r
   r
   r   test_str   s    zTestRendering.test_strN)r   r9   r:   rQ   r
   r
   r
   r   rO      s   rO   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   r=   )Zaxis   )r   r   r   ZargmaxZargminminmax)r2   r	   r   r
   r
   r   test_argmax_axis_invalid   s    z'TestReductions.test_argmax_axis_invalidN)r   r9   r:   rX   r
   r
   r
   r   rR      s   rR   )__doc__rI   r   Zpandas._testingZ_testingr   r   r   r   r   r   r%   r(   r,   r-   r.   r;   rE   rO   rR   r
   r
   r
   r   <module>   s"   
