U
    f/eH                     @   sN   d Z ddlZddlZddlmZ ddlmZmZ ddl	m
Z G dd dZdS )z
test_insert is specifically for the DataFrame.insert method; not to be
confused with tests with "insert" in their names that are really testing
__setitem__.
    N)PerformanceWarning)	DataFrameIndexc                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestDataFrameInsertc              	   C   s:  t tjddtddddgd}|dd|d  t|jt	ddddg tj
|d |d d	d
 |dd|d  t|jt	dddddg tj|d |d d	d
 tjtdd |dd|d  W 5 Q R X d}tjt|d |dd|d  W 5 Q R X d|j_|dd|d  |jjdks6td S )N      cba)indexcolumnsr   ZfooF)Zcheck_names   barzalready exists)match   zcannot insert c, already existsZ	some_nameZbaz)r   nprandomrandnZarangeinserttmZassert_index_equalr   r   Zassert_series_equalZassert_almost_equalpytestZraises
ValueErrornameAssertionError)selfdfmsg r   K/tmp/pip-unpacked-wheel-tiezk1ph/pandas/tests/frame/indexing/test_insert.pytest_insert   s&      zTestDataFrameInsert.test_insertc                 C   s   t dddgi}|ji d}|ddddg |ji d}t| t ddgddggddgd}t|| |dd	d
dg |ji d}t| t d
ddgdddggd	ddgd}t|| d S )Nr	   g?g@r   r   r
   r   r   r   g?gffffff@)r   renamer   strr   assert_frame_equal)r   r   resultexpectedr   r   r   test_insert_column_bug_4032,   s    "z/TestDataFrameInsert.test_insert_column_bug_4032c                 C   s   t  }|jdddddgdd |jdddd	d
gdd |jdddddgdd t dddgdd	dgdd
dggdddgd}t|| d S )Nr   AghiT)Zallow_duplicatesdefr
   r	   r   r    )r   r   r   r#   )r   r   expr   r   r   test_insert_with_columns_dups@   s     z1TestDataFrameInsert.test_insert_with_columns_dupsc              	   C   s   t tjdd}|d }|r$d }nt}t|( tdD ]}|d | ||d < q<W 5 Q R X d|jd< |j	d |d d kst
d S )N   r   r   d   r   c   )r   r   )r   r   r   r   r   r   Zassert_produces_warningrangevaluesZilocr   )r   Zusing_array_managerr   ZserZexpected_warningnr   r   r   test_insert_item_cacheK   s     
z*TestDataFrameInsert.test_insert_item_cacheN)__name__
__module____qualname__r   r&   r/   r6   r   r   r   r   r      s   r   )__doc__Znumpyr   r   Zpandas.errorsr   Zpandasr   r   Zpandas._testingZ_testingr   r   r   r   r   r   <module>   s   