o
    Pj                     @   s   d dl Zd dlmZ d dlZd dlmZ d dl	m
Z
 d dlmZmZmZmZ ejdddddd	eg d
d
fgdd Zdd Zdd Zdd Zdd ZdS )    N)
MouseEvent)get_dir_vectorLine3DCollectionPoly3DCollection_all_points_on_planezzdir, expected)x   r   r   )yr   r	   r   )zr   r   r	   )Nr   r   r   )r	         r   )         c                 C   s(   t | }t|tjsJ t|| d S )N)r   
isinstancenpndarraynptestassert_array_equal)zdirexpectedres r   Z/home/thesage/.local/lib/python3.10/site-packages/mpl_toolkits/mplot3d/tests/test_art3d.pytest_get_dir_vector   s   	r   c                  C   s   t  } | jdd}d|_d|_d|_d|_g d}||||}| j	  |
 }|j|}dD ]E}||_d|_| j	  tdD ]3}td	| jg||d d f R  }||\}	}
|	du sbJ t|
d
 dkslJ |
d
 d |ksvJ qCq2d S )N3d
projectionr   iT)r   r	   r   r   r   )iir   button_press_eventindr	   )pltfigureadd_subplotrollelevazimstalescattercanvas	draw_idleget_offsets	transData	transformranger   containslen)figaxr   scatter_collectionscatter_offsetscatter_locationr*   ieventr3   r$   r   r   r   'test_scatter_3d_projection_conservation   s2   


r<   c                  C   s   t jg dddt jg dddfg} t jddgddt jddgddt jddgddg}t }|jdd}|t|  |j|d	d
i t  d S )N)        r=   r=   float)dtype)      ?r@   r@   r=   r@   r    r!   visibleF)	r   fromiterr%   r&   r'   add_collectionr   r,   draw)lcpcr5   r6   r   r   r   test_zordered_errorA   s   rG   c               	   C   sd  t g dg dg dg dg} t| j rJ t g dg dg dg dg} t| j s0J t g dg dg dddt jgg} t| j sJJ t g dg dg dg} t| j s_J t g dg dg dg dg} t| j swJ t g dg d	g d
g dg dg dg} t| j sJ t g dg dg dg dg dg} t| j sJ d S )Nr   r   r   r   r   )r   r   r   )r   r   r   )r   r   )r	   r   )r	   rI   r   )r   r   r   )r	   r	   r   )r	   r   r   )r   arrayr   Tnan)pointsr   r   r   test_all_points_on_planeP   s    ""&"(rN   c                  C   s>   d} t | gddd}t }|jdd}|| t  d S )N)r   )r   r   r   )r   r   r   )r   r   r   rT)
edgecolorsshader    r!   )r   r%   r&   r'   add_collection3drD   )verticesshaper5   r6   r   r   r   test_generate_normalso   s   
rU   )numpyr   numpy.testingtestingr   pytestmatplotlib.pyplotpyplotr%   matplotlib.backend_basesr   mpl_toolkits.mplot3d.art3dr   r   r   r   markparametrizerJ   r   r<   rG   rN   rU   r   r   r   r   <module>   s&    
#