U
    f/e                     @   sn   d dl Z d dlZd dlZd dlm  mZ d dlZ	d dl
mZ d dlmZmZ G dd dZG dd dZdS )    N)SparseArraySparseDtypec                   @   s   e Zd Zdd ZdS )TestSeriesAccessorc                 C   sB   t jddddgdd}|j }t ddddg}t|| d S )Nr      
   zSparse[int64]dtype)pdSeriessparseto_densetmassert_series_equal)selfsresultexpected r   L/tmp/pip-unpacked-wheel-tiezk1ph/pandas/tests/arrays/sparse/test_accessor.pytest_to_dense   s    
z TestSeriesAccessor.test_to_denseN)__name__
__module____qualname__r   r   r   r   r   r      s   r   c                	   @   sH  e Zd Zdd Zejddddgejddeej	dd	 gejd
ddge
jdd Zejddddge
jdd Zejdddgejdgddggddgge
jdd Zejddddejfdge
jdd Zdd Zd d! Zejd
ddgejd"d#d$ge
jd%d& Ze
jd'd( Zd)d* ZdS )+TestFrameAccessorc              	   C   s6   t dddgi}tjtdd |j W 5 Q R X d S )NAr   r   r   match)r	   	DataFramepytestraisesAttributeErrorr   r   dfr   r   r   test_accessor_raises   s    z&TestFrameAccessor.test_accessor_raisesformatZcscZcsrcoolabelsNr   r   float64int64c           	      C   sv   dd l }t|tjd|d }|jjd||d}tjjj	|||d}tjtjd|d||d
|}t|| d S )Nr   r   r   r$   r   )indexcolumns)scipy.sparser   nparrayitemr   eyer	   r   from_spmatrixastyper   assert_frame_equal)	r   r$   r&   r   scipyZsp_dtypematr   r   r   r   r   test_from_spmatrix   s      z$TestFrameAccessor.test_from_spmatrixc                 C   sb   dd l }|jjddd|d}d|jd< tjj|}tdd}t| 	|}t
|| d S )Nr   r            ?)densityr$   r'           )r,   r   randomdatar	   r   r1   r   Ztodenser2   r   r3   )r   r$   r4   r5   r   r   r   r   r   r   *test_from_spmatrix_including_explicit_zero/   s    

z<TestFrameAccessor.test_from_spmatrix_including_explicit_zeror+   abr   c                 C   s^   dd l }tdd}|jjdddd}tjjj||d}tj| |d|}t	
|| d S )	Nr   r'   r:   r   r7   r8   )r9   )r+   )r,   r   r   r;   r	   r   r1   Ztoarrayr2   r   r3   )r   r+   r4   r   r5   r   r   r   r   r   test_from_spmatrix_columns;   s    
z,TestFrameAccessor.test_from_spmatrix_columnscolnamesr   B)r   r7   r   )g?g?c                 C   sd   dd l }tj|d dddg|d dddgidd}|j }|jt|}||kjdks`t	d S )Nr   r   zSparse[int64, 0]r   )
r,   r	   r   r   Zto_cooZ
coo_matrixr-   ZasarrayZnnzAssertionError)r   rA   r4   r"   r   r   r   r   r   test_to_cooJ   s     
zTestFrameAccessor.test_to_cooc                 C   s   t jtddgtdddtddgtdddtddgtddddd	d
gd}|j }t jddgddgddgdd	d
gd}t|| d S )Nr   r   r(   r   g      ?r:   r'   )r   rC   Cr?   r>   r*   )r	   r   r   r   r   r   r   r3   )r   r"   r   r   r   r   r   r   V   s    
 zTestFrameAccessor.test_to_densec                 C   sL   t tddddgddtddddgddd}|jj}d}||ksHtd S )Nr   r   r7   )Z
fill_valuerB   g      ?)r	   r   r   r   r9   rD   )r   r"   resr   r   r   r   test_densitye   s    zTestFrameAccessor.test_densitydense_indexTFc                 C   s   dd l }|jjdd|d}tjjj||d}tjdddg}tjtt	j
d	d	d	g|d
|d}|rx|tj|j}t|| d S )Nr      r%   r)   )rJ   )r   r   )r   r   )r7   r7   r   r   rG   )r,   r   r0   r	   r
   from_coo
MultiIndexfrom_tuplesr   r-   r.   Zreindexfrom_productlevelsr   r   )r   r   rJ   r4   r   r   r*   r   r   r   r   test_series_from_coop   s    "z&TestFrameAccessor.test_series_from_cooc              	   C   sR   dd l }|jtddgddgg}tjtdd tj	j
| W 5 Q R X d S )Nr   r   z,Expected coo_matrix. Got csr_matrix instead.r   )r,   r   Z
csr_matrixr-   r.   r   r   	TypeErrorr	   r
   rL   )r   r4   mr   r   r   ,test_series_from_coo_incorrect_format_raises   s     z>TestFrameAccessor.test_series_from_coo_incorrect_format_raisesc                 C   s8   t dt jddgi}t|jt jjjjjs4t	d S )Nr   r   r7   )
r	   r   Zarraysr   
isinstancer   coreaccessorZSparseFrameAccessorrD   r!   r   r   r   test_with_column_named_sparse   s    z/TestFrameAccessor.test_with_column_named_sparse)r   r   r   r#   r   markZparametrizeliststringascii_letterstdZskip_if_no_scipyr6   r=   r	   rM   rO   r@   ZNArE   r   rI   rQ   rT   rX   r   r   r   r   r      s6   
"



r   )r[   Znumpyr-   r   Zpandas.util._test_decoratorsutilZ_test_decoratorsr]   Zpandasr	   Zpandas._testingZ_testingr   Zpandas.core.arrays.sparser   r   r   r   r   r   r   r   <module>   s   	