o
    _~#g]K                     @   s  d dl Z d dlZd dlZd dlm  mZ d dlm	  m
Z d dlmZ d dlmZ d dlmZmZmZ ejdd Zejg dg dg dg d	g d
g dgd dgddgdgdgdgdggd gdgd dgddgd dgddggdgdgd dgddgdgdggd dgddgddgddgg g gd gdgg g g g ggg dd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G d$d% d%ZdS )&    N)Series)
BlockIndexIntIndexmake_sparse_indexc                   C   s   dS )N    r   r   r   /var/www/static.ux5.de/https/Moving-Object-Detection-with-OpenCV/env/lib/python3.10/site-packages/pandas/tests/arrays/sparse/test_libsparse.pytest_length   s   r	   )r         )      r   )   	      )r   r   r   )r   r   r   )   r      r   r   r   r   
   r
            r   )
plain_casedelete_blockssplit_blocks
skip_blockno_intersect	one_empty)paramsidsc                 C   s   | j S N)param)requestr   r   r   cases   s   =r"   c                   @   s&  e Zd Zejddgdgdgdgdgdggddgddgddgddgg d	g d
gdgdgdgdgdgdggddgddgdgdgdgdggddgddgdgdgdgdggddgddgddgddgdgdggdgdgg dg ddgdggddgddgddgddgg dg dggdd Zdd ZdS )TestSparseIndexUnionz"xloc, xlen, yloc, ylen, eloc, elenr   r   r   r   r   r   r   )r   r   r   )r
   r   r   r   r   r
      r      r   )r   r   r   )r   r   r   )r   r   r   r   )r   r   r   r   c                 C   s   t |||}t |||}	||	}
t|
t sJ t|
jtj|tjd t|
j	tj|tjd |
 }|	
 }||}t|tsFJ t|j|

 j d S )Ndtype)r   
make_union
isinstancetmassert_numpy_array_equalblocsnparrayint32blengthsto_int_indexr   indices)selfxlocxlenylocylenelocelenr	   xindexyindexbresultixindexiyindexiresultr   r   r   test_index_make_unionX   s   ,

z*TestSparseIndexUnion.test_index_make_unionc                 C   s  t dtjg dtjd}t dtjddgtjd}||}t dtg dtj}||s2J t dtjg tjd}t dtjddgtjd}||}t dtddgtj}||sbJ t dtjg tjd}t dtjg tjd}||}t dtg tj}||sJ t dtjg dtjd}t dtjg dtjd}||}t dtg dtj}||sJ t dtjddgtjd}t d	tjddgtjd}d
}tjt|d || W d    d S 1 sw   Y  d S )Nr   )r   r   r   r&   r   r   )r   r   r   r   r   r   r   r   r   r   r   -Indices must reference same underlying lengthmatch)	r   r-   r.   r/   r(   equalspytestraises
ValueError)r3   abresexpmsgr   r   r   test_int_index_make_union   s4   



"z.TestSparseIndexUnion.test_int_index_make_unionN)__name__
__module____qualname__rF   markparametrizer@   rN   r   r   r   r   r#   W   s    &"&
,r#   c                   @   s   e Zd Zejdd Zdd Zej	de
dejddgejd	e
dejg d
ejd	e
dejg ejd	e
dejg ejd	gdd ZdS )TestSparseIndexIntersectc                 C   s  |\}}}}}}t |||}	t |||}
t |||}t |d ||}|	|
}||s.J |	 |
 }|| s@J d}tjt|d |	| W d    n1 sYw   Y  tjt|d |	 |  W d    d S 1 szw   Y  d S )Nr   rB   rC   )r   	intersectrE   r1   rF   rG   	Exception)r3   r"   r	   r4   r5   r6   r7   r8   r9   r:   r;   expectedlonger_indexresultrM   r   r   r   test_intersect   s    
"z'TestSparseIndexIntersect.test_intersectc                 C   s   t dtjg tjd}t dtjddgtjd}|||s"J |||s,J | }| }|||s>J |||sHJ d S )Nr   r&   r   r   )r   r-   r.   r/   rU   rE   to_block_index)r3   r:   r;   r   r   r   test_intersect_empty   s   z-TestSparseIndexIntersect.test_intersect_emptycaser   r   r   r&   )r   r   r   r   c                 C   s4   | ||s
J | }| ||sJ d S r   )rU   rE   r[   )r3   r]   r   r   r   test_intersect_identical   s   z1TestSparseIndexIntersect.test_intersect_identicalN)rO   rP   rQ   tdskip_if_windowsrZ   r\   rF   rR   rS   r   r-   r.   r/   r^   r   r   r   r   rT      s    
rT   c                   @   s   e Zd Zdd Zdd Zejdddgdd	 Zejdddgd
d Z	ejdddgddgddgddgddgddgddgddgddgddgg
dd Z
dS )TestSparseIndexCommonc                 C     t dtjddgtjddd}t|tsJ |jdksJ t|j	tjddgtjd t dtjg tjddd}t|ts@J |jdksGJ t|j	tjg tjd t dtjg dtjddd}t|tsjJ |jdksqJ t|j	tjg dtjd d S 	Nr   r   r   r&   integerkindr   r   r   r   r   
r   r-   r.   r/   r)   r   npointsr*   r+   r2   r3   idxr   r   r   test_int_internal      "z'TestSparseIndexCommon.test_int_internalc                 C     t dtjddgtjddd}t|tsJ |jdksJ t|j	tjdgtjd t|j
tjdgtjd t dtjg tjddd}t|tsMJ |jdksTJ t|j	tjg tjd t|j
tjg tjd t dtjg dtjddd}t|tsJ |jdksJ t|j	tjdgtjd t|j
tjdgtjd t dtjg d	tjddd}t|tsJ |jdksJ t|j	tjddgtjd t|j
tjd
dgtjd d S Nr   r   r   r&   blockre   r   rg   r   r   r   r   r   r-   r.   r/   r)   r   ri   r*   r+   r,   r0   rj   r   r   r   test_block_internal   (   "z)TestSparseIndexCommon.test_block_internalrf   rd   rp   c                 C   s  t dtjddgtjd|d}|ddksJ |ddks!J |ddks*J |ddks3J |ddks<J |ddksEJ t dtjg tjd|d}tdd	D ]}||dksbJ qWt dtjg d
tjd|d}|ddks{J |ddksJ |ddksJ |ddksJ |ddksJ |ddksJ t dtjg dtjd|d}|ddksJ |ddksJ |ddksJ |ddksJ |ddksJ |ddksJ d S )Nr   r   r   r&   re   r   r   r   rg   rq   )r   r-   r.   r/   lookuprange)r3   rf   rk   ir   r   r   test_lookup  s0   z!TestSparseIndexCommon.test_lookupc                 C   s  t dtjddgtjd|d}|tjg dtjd}tjg dtjd}t|| |tjg dtjd}tjg d	tjd}t|| t dtjg tjd|d}|tjg d
tjd}tjg dtjd}t|| t dtjg dtjd|d}|tjg dtjd}tjg dtjd}t|| |tjg dtjd}tjg dtjd}t|| t dtjg dtjd|d}|tjg dtjd}tjg dtjd}t|| |tjg dtjd}tjg dtjd}t|| d S )Nr   r   r   r&   re   )ru   r   r   )ru   ru   r   )r   r   r   r   )ru   r   ru   r   )ru   r   r   r   )ru   ru   ru   ru   rg   )ru   r   r   r   rq   )r   r   r   r   )r   ru   r   r   )r   r   r   r   )ru   ru   r   ru   )r   r-   r.   r/   lookup_arrayr*   r+   )r3   rf   rk   rK   rL   r   r   r   test_lookup_array-  s2   z'TestSparseIndexCommon.test_lookup_arrayzidx, expectedr   ru   r   r
   r   r$   r   r      r   r   r      c                 C   sD   t dddgddg}|||ksJ | }|||ks J d S )Nr   r   r   r   r   )r   rv   r1   )r3   rk   rW   bindexiindexr   r   r   test_lookup_basicsP  s   z(TestSparseIndexCommon.test_lookup_basicsN)rO   rP   rQ   rl   rs   rF   rR   rS   ry   r{   r   r   r   r   r   ra      s,    

"ra   c                   @   sN   e Zd Zdd Zejdg ddd Zdd Zd	d
 Z	dd Z
dd ZdS )TestBlockIndexc                 C   rn   ro   rr   rj   r   r   r   rs   h  rt   z"TestBlockIndex.test_block_internalrx   )r   r   d   e   c                 C   sb   t |tjd|dtjddd}tjd|dtjd}t|j| t|jtjt	|tjd d S )Nr   r   r&   rp   re   )
r   r-   aranger/   r*   r+   r,   r0   oneslen)r3   rx   rk   rL   r   r   r   test_make_block_boundary  s   "z'TestBlockIndex.test_make_block_boundaryc                 C   sD   t dddgddg}||sJ |t dddgddgr J d S )Nr   r   r   r   r   r   )r   rE   r3   indexr   r   r   test_equals  s   "zTestBlockIndex.test_equalsc                 C   s   g }g }t d|| t d|| d}tjt|d t ddgdg W d    n1 s,w   Y  d}tjt|d t dddgdd	g W d    d S 1 sPw   Y  d S )
Nr   r   zBlock 0 extends beyond endrC   r   r   zBlock 0 overlapsr   r   )r   rF   rG   rH   )r3   locslengthsrM   r   r   r   test_check_integrity  s   "z#TestBlockIndex.test_check_integrityc                 C   sJ   ddg}ddg}g d}t d||}| }t|jtj|tjd d S )Nr   r   r   r   )
r   r   r   r   r   r|   r   r%   r   r   r   r&   )r   r1   r*   r+   r2   r-   r.   r/   )r3   r   r   exp_indsrp   denser   r   r   test_to_int_index  s   z TestBlockIndex.test_to_int_indexc                 C   s(   t dddgddg}| |u sJ d S )Nr   r   r   r   )r   r[   r   r   r   r   test_to_block_index  s   z"TestBlockIndex.test_to_block_indexN)rO   rP   rQ   rs   rF   rR   rS   r   r   r   r   r   r   r   r   r   r   g  s    

r   c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestIntIndexc                 C   s  d}t jt|d tdg dd W d    n1 sw   Y  d}t jt|d tdg dd W d    n1 s=w   Y  d}t jt|d tdg dd W d    n1 s^w   Y  d	}t jt|d tdg d
d W d    n1 sw   Y  t jt|d tdg dd W d    n1 sw   Y  d}t jt|d tdg dd W d    n1 sw   Y  t jt|d tdg dd W d    d S 1 sw   Y  d S )NzToo many indicesrC   r   )r   r   r   )lengthr2   zNo index can be less than zeror   )r   r   z(All indices must be less than the length)r   r   r   )r   r   r   z#Indices must be strictly increasing)r   r   r   )r   r   r   )rF   rG   rH   r   )r3   rM   r   r   r   r     s4   "z!TestIntIndex.test_check_integrityc                 C   rb   rc   rh   rj   r   r   r   rl     rm   zTestIntIndex.test_int_internalc                 C   s8   t dg d}||sJ |t dg drJ d S )Nr   rA   rg   )r   rE   r   r   r   r   r     s   zTestIntIndex.test_equalsc                 C   sn   |\}}}}}}t |||}t |||}	|  }
|	  }t|
t s'J |
|s.J ||	s5J d S r   )r   r1   r[   r)   rE   )r3   r"   r	   r4   r5   r6   r7   _r:   r;   xbindexybindexr   r   r   r     s   z TestIntIndex.test_to_block_indexc                 C   s"   t dg d}| |u sJ d S )Nr   )r   r   r   r   r   )r   r1   r   r   r   r   r     s   zTestIntIndex.test_to_int_indexN)rO   rP   rQ   r   rl   r   r   r   r   r   r   r   r     s    %r   c                   @   s&   e Zd Zejdg ddd ZdS )TestSparseOperatorsopname)addsubmultruedivfloordivc                 C   sX  |\}}}}}}t td| d}	t t|}
t|||}t|||}| }| }t|jd d }t|jd d }d}d}|	||||||\}}}|	||||||\}}}| |scJ t	
|| ||ksoJ t||j}|t||}t||j}|t||}|
||}||j}t	
||j t	
||j d S )Nsparse__float64g      $@r   g      Y@r   r   )getattrspliboperatorr   r1   r-   r   ri   rE   r*   r+   r   r2   reindexfillnavalues)r3   r   r"   r	   r4   r5   r6   r7   r   	sparse_op	python_opr:   r;   xdindexydindexxyxfillyfillresult_block_valsrb_indexbfillresult_int_valsri_indexifillxseriesyseriesseries_resultr   r   r   test_op  s8   



zTestSparseOperators.test_opN)rO   rP   rQ   rF   rR   rS   r   r   r   r   r   r     s    r   )r   numpyr-   rF   pandas._libs.sparse_libssparser   pandas.util._test_decoratorsutil_test_decoratorsr_   pandasr   pandas._testing_testingr*   pandas.core.arrays.sparser   r   r   fixturer	   r"   r#   rT   ra   r   r   r   r   r   r   r   <module>   s    
					2
<[0 IN