a
    ضaG!                     @   s  d dl Z d dlZd dlZd dlZd dlmZ d dlm	Z	 dd Z
ejje  dkddd	d
 Zejje  dkdddd Zdd Zdd Zdd Zdd Ze	dgdd Ze	dgdd Ze	dgdddd Zd d! Ze	d"gddd#d$ Ze	d%gddd&d' Ze	d(gddd)d* Ze	d+gddd,d- Ze	d.gddd/d0 Zd1d2 Zd3d4 Zd5d6 Ze	d7gddd8d9 Z d:d; Z!d<d= Z"dS )>    N)pyplot)image_comparisonc                 K   s\   t t ddt j dt ddt j d\}}t |}t |}| j||fi |}|S )Nr         )npmeshgridarangepicossinquiver)axkwXYUVQ r   l/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/site-packages/matplotlib/tests/test_quiver.pydraw_quiver   s    

r   CPythonzRequires CPython)reasonc                  C   s:   t  \} }t|}|j}|  ~t|dks6J d S )Nr   )pltsubplotsr   r   removesysgetrefcount)figr   r   ZttXr   r   r   test_quiver_memory_leak   s    r   c               	   C   s`   t  \} }t|}|j|dddddddid}t|d	ksBJ |  t|dks\J d S )
N      ?q=
ףp?r   $2 \frac{m}{s}$Wweightboldlabelposfontproperties   )r   r   r   	quiverkeyr   r   r   )r   r   r   qkr   r   r   test_quiver_key_memory_leak#   s    r,   c               	   C   s   ddg} t jtdd t|  W d    n1 s60    Y  t jtdd$ t| | | | | |  W d    n1 sx0    Y  d S )Nr   r   z/takes 2-5 positional arguments but 1 were givenmatchz/takes 2-5 positional arguments but 6 were given)pytestraises	TypeErrorr   r   )r   r   r   r   test_quiver_number_of_args2   s    (r2   c                  C   s  ddg} g d}t jtdd  t| || |  W d    n1 sD0    Y  t jtdd  t| | ||  W d    n1 s0    Y  t jtdd  t| | | | W d    n1 s0    Y  t jtdd" t| | | | | W d    n1 s0    Y  d S )	Nr   r   )r   r   r)   z?X and Y must be the same size, but X.size is 2 and Y.size is 3.r-   zMArgument U has a size 3 which does not match 2, the number of arrow positionszMArgument V has a size 3 which does not match 2, the number of arrow positionszMArgument C has a size 3 which does not match 2, the number of arrow positions)r/   r0   
ValueErrorr   r   )ZX2ZX3r   r   r   test_quiver_arg_sizes>   s$    ...r4   c                  C   sn   t  \} }ttdtd\}}t| }}tjddd d }|j|||||d | j	
  d S )N   
   r       angles)r   r   r   r   r   	ones_likerandomrandr   canvasdrawr   r   r   r   r   r   phir   r   r   test_no_warningsS   s    rA   c                  C   s^   t  \} }ttdtd\}}t|t| }}|j||ddd | j	  d S )Nr6   r   )Z
headlengthZheadaxislength)
r   r   r   r   r   r
   r   r   r=   r>   )r   r   r   r   r   r   r   r   r   test_zero_headlength\   s
    rB   zquiver_animated_test_image.pngc               	   C   s8   t  \} }t|dd}|j|ddddddd	id
 d S )NT)Zanimatedr    r!   r   r"   r#   r$   r%   r&   )r   r   r   r*   r   r   r   r   r   r   test_quiver_animatef   s
    rD   zquiver_with_key_test_image.pngc                  C   sD   t  \} }|d t|}|j|dddddddd	d
dd	 d S )N皙?r    gffffff?r   z"$2\, \mathrm{m}\, \mathrm{s}^{-1}$ifigurer#   r%   Zlarge)r$   size)angleZcoordinatesr'   r(   )r   r   marginsr   r*   rC   r   r   r   test_quiver_with_keyo   s    
rJ   zquiver_single_test_image.pngT)Zremove_textc                  C   s2   t  \} }|d |dgdgdgdg d S )NrE   r   r   )r   r   rI   r   r   r   r   r   r   test_quiver_single|   s    
rL   c                  C   sf   t  \} }ttdgtdgd}|dgdg|d |d }d|d d< |jd dksbJ d S )N皙?g       @)uvr   rN   rO   r   )r   r   dictr   arrayr   r   )r   r   uvZq0r   r   r   test_quiver_copy   s
    rS   zquiver_key_pivot.pngc                  C   s   t  \} }tjddtj dddtj df \}}|t|t|}|dd |	dd |j
|dddddd	 |j
|dddd
d
d	 |j
|dddddd	 |j
|dddddd	 d S )Nr   r   y              $@   r    r   N)r'   ESr#   )r   r   r   Zmgridr	   r   r   r
   set_xlimset_ylimr*   )r   r   rN   rO   qr   r   r   test_quiver_key_pivot   s    *r\   zquiver_key_xy.pngc                  C   s   t d} t d}| t jd  }t d| }|j}|j}td\}}t	|dD ]j\}}	|
dd |dd |j| |||d	d
ddd
|	d
}
t	ddD ] \}}|j|
|dd|ddd qqTd S )N      y              ?r   )rR   xygɿ皙?Zmiddler_   g?)pivotZunitswidthscalescale_unitsr9   )ra   r    皙?)r   -   Z   rf   r    b)r   r   r   rH   labelcolor)r   r   Zzerosr	   exprealimagr   r   ziprY   rZ   r   r*   )r   r   r9   rR   r   r   r   Zaxsr   Z	angle_strr[   xrH   r   r   r   test_quiver_key_xy   s"    

rr   zbarbs_test_image.pngc                  C   sn   t ddd} t | | \}}d| d|  }}t \}}|j||||t ||ddtdddd	d
d	 d S )N      TF      ?ra   333333?Z	emptybarbspacingheightZviridis)
fill_emptyroundingsizesZcmap)r   linspacer   r   r   barbshypotrP   rq   r   r   r   r   r   r   r   r   r   
test_barbs   s    r   zbarbs_pivot_test_image.pngc                  C   sv   t ddd} t | | \}}d| d|  }}t \}}|j||||dddtddd	d
d |j||ddd d S )Nrs   rt   ru   TF333333?rv   ra   rw   rx   )r{   r|   rb   r}   1   black)sc)r   r~   r   r   r   r   rP   Zscatterr   r   r   r   test_barbs_pivot   s    r   zbarbs_test_flip.pngc                  C   sj   t ddd} t | | \}}d| d|  }}t \}}|j||||dddtddd	d
|dk d	 dS )z'Test barbs with an array for flip_barb.rs   rt   ru   TFr   rv   ra   rw   rx   r   )r{   r|   rb   r}   Z	flip_barbN)r   r~   r   r   r   r   rP   r   r   r   r   test_barbs_flip   s    r   c                  C   sp   t  \} }tdg}tdg}|dgdg||}d|d< |jd dksRJ d|d< |jd dkslJ d S )NrM   g@r   r   )r   r   r   rQ   r   rN   rO   )r   r   rN   rO   Zb0r   r   r   test_barb_copy   s    r   c                  C   s   t d} t d}t jdt d }t jdt | }t jj|d< t jj|d< t \}}t	
t  || ||| W d   n1 s0    Y  dS )z=Test error handling when given differing sized masked arrays.r)   g      .@)r^   r   N)r   r   marQ   Zonesr:   Zmaskedr   r   r/   r0   r3   r   )rq   yrN   rO   r   r   r   r   r   test_bad_masked_sizes   s    

r   c                  C   sf   t  \} }ttdtd\}}t| }}tjddd d }|j|||||dd d S )Nr5   r6   r    r7   r_   )r9   re   )	r   r   r   r   r   r:   r;   r<   r   r?   r   r   r   test_angles_and_scale   s
    r   zquiver_xy.pngc               	   C   sR   t jtddd\} }|jdddddddd |dd |dd |  d S )	Nequal)Zaspect)Z
subplot_kwr   r   r_   )r9   re   rd   rM   )r   r   rP   r   rY   rZ   ZgridrK   r   r   r   test_quiver_xy   s
    r   c            	      C   s   t  \} }ttdtd\}}t| } }}|j|||||d}||dddd}| j	  t
|jdks|J d S )Nr   r8   r   ZLabel)r   r   r   r   r   r:   r   r*   r=   r>   lenZverts)	r   r   r   r   r   r   r9   r[   r+   r   r   r   test_quiverkey_angles   s    
r   c                  C   sV   t  \} }ttdtd\}}t| }}|||||}|dd dS )zBCheck that it is possible to set all arrow UVC to the same numbersr   r   r   N)r   r   r   r   r   r:   r   Zset_UVC)r   r   r   r   r   r   r[   r   r   r   test_quiver_setuvc_numbers  s
    r   )#platformr   Znumpyr   r/   Z
matplotlibr   r   Zmatplotlib.testing.decoratorsr   r   markZskipifpython_implementationr   r,   r2   r4   rA   rB   rD   rJ   rL   rS   r\   rr   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   sT   


	










	
	