U
    MZf,                     @   s^   d dl Zd dlZd dlmZmZ d dlmZ G dd dZ	G dd de	Z
G dd de	ZdS )	    N)	DataFrameSeriesc                   @   s\   e Zd Zejdd Zdd Zdd Zdd Zej	
d	d
dgdd Zdd Zdd ZdS )SharedSetAxisTestsc                 C   s   t dd S )NzImplemented by subclasses)NotImplementedError)self r   L/tmp/pip-unpacked-wheel-nbcvw55c/pandas/tests/frame/methods/test_set_axis.pyobj   s    zSharedSetAxisTests.objc                 C   s@   t dd t| }| }||_|j|dd}t|| d S )Nabcdr   axislistlencopyindexset_axistmassert_equalr   r	   	new_indexexpectedresultr   r   r   test_set_axis   s
    z SharedSetAxisTests.test_set_axisc                    s0  t dd t  } jd d    }||_ j|dddt|  k	sXt|s j	dkrxt
 rtn&t fddt jd D rt j|dddt|  k	st j	dkrt
 stn(t fd	dt jd D s
t j|dd
t|  k	s2t|r j	dkrXt
 stn(t fddt jd D stnH j	dkrt
 rtn(t fddt jd D rt j|ddt| j	dkrt
s,tn(tfddtjd D s,td S )Nr
   r   T)r   r      c                 3   s6   | ].}t jd d |f  jd d |f V  qd S Nr   shares_memoryiloc.0ir	   r   r   r   	<genexpr>(   s   z8SharedSetAxisTests.test_set_axis_copy.<locals>.<genexpr>Fc                 3   s6   | ].}t jd d |f  jd d |f V  qd S r   r   r   r"   r   r   r#   4   s   r   c                 3   s6   | ].}t jd d |f  jd d |f V  qd S r   r   r   r"   r   r   r#   B   s   c                 3   s6   | ].}t jd d |f  jd d |f V  qd S r   r   r   r"   r   r   r#   K   s   )r   c                 3   s6   | ].}t jd d |f  jd d |f V  qd S r   r   r   )origresr   r   r#   V   s   )r   r   r   r   r   r   r   r   AssertionErrorndimr   anyrangeshapeall)r   r	   Zusing_copy_on_writer   r   r   )r	   r$   r%   r   r   test_set_axis_copy   sT    

z%SharedSetAxisTests.test_set_axis_copyc                 C   s<   t dd t| }| }||_||}t|| d S )Nr
   r   r   r   r   r   !test_set_axis_unnamed_kwarg_warns[   s
    
z4SharedSetAxisTests.test_set_axis_unnamed_kwarg_warnsr      Zfooc              	   C   s0   t jtdd |jtd|d W 5 Q R X d S )NzNo axis namedmatchabcr   )pytestraises
ValueErrorr   r   )r   r   r	   r   r   r   test_set_axis_invalid_axis_namee   s    z2SharedSetAxisTests.test_set_axis_invalid_axis_namec              	   C   s(   d}t jt|d d |_W 5 Q R X d S )NzNIndex\(\.\.\.\) must be called with a collection of some kind, None was passedr/   )r2   r3   	TypeErrorr   r   r	   msgr   r   r   *test_set_axis_setattr_index_not_collectionk   s    z=SharedSetAxisTests.test_set_axis_setattr_index_not_collectionc              	   C   s   dt | dt |d  d}tjt|d tt |d |_W 5 Q R X |jdkrtjtdd |jd d d |_W 5 Q R X d S )Nz#Length mismatch: Expected axis has z elements, new values have r   z	 elementsr/      zLength mismatch)	r   r2   r3   r4   nparanger   r'   columnsr7   r   r   r   (test_set_axis_setattr_index_wrong_lengtht   s    
z;SharedSetAxisTests.test_set_axis_setattr_index_wrong_lengthN)__name__
__module____qualname__r2   fixturer	   r   r,   r-   markZparametrizer5   r9   r>   r   r   r   r   r      s   
C

	r   c                   @   s   e Zd Zejdd ZdS )TestDataFrameSetAxisc                 C   s0   t dddgdddgddd	gd
dddgd}|S )Ng?g@gffffff
@g      @gffffff@g@g@g      @gffffff@)ABCi  i  i  )r   )r   )r   Zdfr   r   r   r	      s
    zTestDataFrameSetAxis.objNr?   r@   rA   r2   rB   r	   r   r   r   r   rD      s   rD   c                   @   s   e Zd Zejdd ZdS )TestSeriesSetAxisc                 C   s    t tdddddgdd}|S )N   r   r.         Zint64)r   Zdtype)r   r;   r<   )r   Zserr   r   r   r	      s    zTestSeriesSetAxis.objNrH   r   r   r   r   rI      s   rI   )Znumpyr;   r2   Zpandasr   r   Zpandas._testingZ_testingr   r   rD   rI   r   r   r   r   <module>   s   w
