U
    c>                      @   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ejdddddgdd	 Zej	d
d Z
ej	ejddddddgddddgdddfdddddgddddgdddfgd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serresultexpected r   L/tmp/pip-unpacked-wheel-g7fro6k3/pandas/tests/arrays/sparse/test_accessor.pytest_to_dense   s    
z TestSeriesAccessor.test_to_denseattrZnpointsdensity
fill_valueZ	sp_valuesc                 C   s<   t ddg}t|}t|j|}t||}||ks8td S )Nr   r   )r   r	   r
   getattrr   AssertionError)r   r   Zarrr   r   r   r   r   r   test_get_attributes   s
    

z&TestSeriesAccessor.test_get_attributesc           	      C   s   dd l }ddddg}ddddg}ddddg}|jj|||ffd	d
}tjj|}tjddddgddddgg}tjddddg|dd}t	|| d S )Nr      r               	   intr   zSparse[int])indexr   )
scipy.sparser   
coo_matrixr	   r
   from_coo
MultiIndexZfrom_arraysr   r   )	r   scipyrowcoldataZsp_arrayr   r#   r   r   r   r   test_from_coo    s     z TestSeriesAccessor.test_from_cooz>sort_labels, expected_rows, expected_cols, expected_values_posF)br   )ar   )r-   r   )r.   r   )zr   )r/   r   )xr   )r/   r   )r   r   )r   r   )r   r   Tr   r   r   r   c                 C   s   dd l }tdtjddd dgdd}tjddddd	d
g}tj||d}td}	|	 D ]\}
\}}|
|	||f< qZ|j
jdd|d\}}}t||j
jstt| |	 ||kst||kstd S )Nr   r   r   r   )r-   r   r/   r   )r.   r   r/   r   )r.   r   r/   r   )r.   r   r0   r   )r-   r   r/   r   )r.   r   r/   r   r#   )r   r   r2   )r   r   )Z
row_levelsZcolumn_levelssort_labels)r$   r   npnanr	   r'   from_tuplesr
   zerositemsr   to_coo
isinstancer%   r   r   Zassert_numpy_array_equaltoarray)r   r5   Zexpected_rowsZexpected_colsZexpected_values_posr(   valuesr#   ssZ
expected_Avaluer)   r*   AZrowscolsr   r   r   test_to_coo0   s0    

  zTestSeriesAccessor.test_to_cooc              	   C   s6   t dddg}tjtdd |jj W 5 Q R X d S )Nr   r   r   z.sparsematch)r	   r
   pytestraisesAttributeErrorr   r   )r   r   r   r   r   test_non_sparse_raises`   s    z)TestSeriesAccessor.test_non_sparse_raisesN)__name__
__module____qualname__r   rF   markparametrizer   tdskip_if_no_scipyr,   rC   rI   r   r   r   r   r      s,   





r   c                	   @   sn  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ddge
jdd Zejd dej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 )0TestFrameAccessorc              	   C   s6   t dddgi}tjtdd |j W 5 Q R X d S )NrA   r   r   r   rD   )r	   	DataFramerF   rG   rH   r   r   dfr   r   r   test_accessor_raisesg   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   rV   r   )r#   columns)r$   r   r6   arrayitemr   eyer	   rR   from_spmatrixastyper   assert_frame_equal)	r   rV   rX   r   r(   Zsp_dtypematr   r   r   r   r   test_from_spmatrixl   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   r         ?)r   rV   rY           )r$   r   randomr+   r	   rR   r`   r   Ztodensera   r   rb   )r   rV   r(   rc   r   r   r   r   r   r   *test_from_spmatrix_including_explicit_zero|   s    

z<TestFrameAccessor.test_from_spmatrix_including_explicit_zeror\   r.   r-   rA   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   rY   rf   r   r   re   )r   )r\   )r$   r   r   rg   r	   rR   r`   r=   ra   r   rb   )r   r\   r(   r   rc   r   r   r   r   r   test_from_spmatrix_columns   s    
z,TestFrameAccessor.test_from_spmatrix_columnscolnamesrA   Br1   r   )g?g?)r0   r0   r   r   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	   rR   r   r;   r%   r6   ZasarrayZnnzr   )r   rj   r(   rT   r   r   r   r   r   rC      s     
zTestFrameAccessor.test_to_coor   c              	   C   sX   t t|||dg|dt|d||g|dd}tjtdd |j  W 5 Q R X d S )Nr   r3   rk   zfill value must be 0rD   )r	   rR   r   rF   rG   
ValueErrorr   r;   )r   r   rT   r   r   r   #test_to_coo_nonzero_fill_val_raises   s    
 
 
z5TestFrameAccessor.test_to_coo_nonzero_fill_val_raisesc                 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   rZ   r   g      ?rf   rY   )rA   rl   Cr-   r.   r4   )r	   rR   r   r   r   r   r   rb   )r   rT   r   r   r   r   r   r      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   r   r3   rk   g      ?)r	   rR   r   r   r   r   )r   rT   resr   r   r   r   test_density   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   rW   r[   )rs   rm   )r   r   )r   r   r   r   r4   )r$   r   r_   r	   r
   r&   r'   r8   r   r6   r]   Zreindexfrom_productlevelsr   r   )r   r   rs   r(   rA   r   r#   r   r   r   r   test_series_from_coo   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.rD   )r$   r   Z
csr_matrixr6   r]   rF   rG   	TypeErrorr	   r
   r&   )r   r(   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   r   )
r	   rR   Zarraysr   r<   r   coreaccessorZSparseFrameAccessorr   rS   r   r   r   test_with_column_named_sparse   s    z/TestFrameAccessor.test_with_column_named_sparse)rJ   rK   rL   rU   rF   rM   rN   liststringascii_lettersrO   rP   rd   rh   r	   r'   rt   ri   ZNArC   r6   r7   ro   r   rr   rv   ry   r|   r   r   r   r   rQ   f   sB   
"
 


rQ   )r~   Znumpyr6   rF   Zpandas.util._test_decoratorsutilZ_test_decoratorsrO   Zpandasr	   Zpandas._testingZ_testingr   Zpandas.core.arrays.sparser   r   r   rQ   r   r   r   r   <module>   s   V