U
    \	¸aQ   ã                   @   sZ  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	dd„ Z
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,d-„ ƒZd.d/„ Zd0d1„ Zd2d3„ Zed4gddd5d6„ ƒZd7d8„ Zd9d:„ ZdS );é    N)Úpyplot)Úimage_comparisonc                 K   sX   t  t  ddt j d¡t  ddt j d¡¡\}}t  |¡}t  |¡}| j||f|Ž}|S )Nr   é   é   )ÚnpÚmeshgridÚarangeÚpiÚcosÚsinÚquiver)ÚaxÚkwÚXÚYÚUÚVÚQ© r   ú@/tmp/pip-unpacked-wheel-wjyw_3jo/matplotlib/tests/test_quiver.pyÚdraw_quiver   s    ÿ

r   c                  C   s:   t  ¡ \} }t|ƒ}|j}| ¡  ~t |¡dks6t‚d S )Nr   )ÚpltÚsubplotsr   r   ÚremoveÚsysÚgetrefcountÚAssertionError)Ú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sBt‚| ¡  t |¡dks\t‚d S )
Nç      à?çq=
×£pí?r   ú$2 \frac{m}{s}$ÚWÚweightÚbold©ÚlabelposÚfontpropertiesé   )r   r   r   Ú	quiverkeyr   r   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 5 Q R X t jtdd t | | | | | | ¡ W 5 Q R X 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_args+   s    þþr1   c               	   C   sÀ   ddg} dddg}t jtdd t | || | ¡ W 5 Q R X t jtdd t | | || ¡ W 5 Q R X t jtdd t | | | |¡ W 5 Q R X t jtdd t | | | | |¡ W 5 Q R X d S )	Nr   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.   r/   Ú
ValueErrorr   r   )ZX2ZX3r   r   r   Útest_quiver_arg_sizes7   s,    
 ÿ ÿ ÿ ÿr3   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_warningsL   s    r@   c                  C   s^   t  ¡ \} }t t d¡t d¡¡\}}t |¡t |¡ }}|j||ddd | j 	¡  d S )Nr5   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_headlengthU   s
    rA   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_animate_   s     ÿrC   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)   rB   r   r   r   Útest_quiver_with_keyh   s    
ûrI   zquiver_single_test_image.pngT)Zremove_textc                  C   s2   t  ¡ \} }| d¡ | dgdgdgdg¡ d S )NrD   r   r   )r   r   rH   r   ©r   r   r   r   r   Útest_quiver_singleu   s    
rK   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sbt‚d S )Nçš™™™™™ñ?g       @)ÚuÚvr   rM   rN   r   )r   r   Údictr   Úarrayr   r   r   )r   r   ÚuvZq0r   r   r   Útest_quiver_copy|   s
    rR   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   rM   rN   Ú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 qœqTd S )Né   é   y              ð?r   )rQ   Úxyéÿÿÿÿgš™™™™™É¿çš™™™™™É?Zmiddler^   gš™™™™™©?)ÚpivotZunitsÚwidthÚscaleÚscale_unitsr8   )r`   r   çš™™™™™é?)r   é-   éZ   re   r   Ú Úb)r   r   r   rG   ÚlabelÚcolor)r   r   Úzerosr	   ÚexpÚrealÚimagr   r   ÚziprX   rY   r   r)   )r   r   r8   rQ   r   r   r   Zaxsr   Z	angle_strrZ   ÚxrG   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ç      Ð?r`   ç333333Ó?©Z	emptybarbÚspacingÚheightZviridis)Ú
fill_emptyÚroundingÚsizesZcmap)r   Úlinspacer   r   r   ÚbarbsÚhypotrO   ©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   TFç333333û?rv   r`   rw   rx   )r{   r|   ra   r}   é1   Zblack)ÚsÚc)r   r~   r   r   r   r   rO   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   r`   rw   rx   r   )r{   r|   ra   r}   Z	flip_barbN)r   r~   r   r   r   r   rO   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sRt‚d|d< |jd dkslt‚d S )NrL   gš™™™™™@r   r   )r   r   r   rP   r   rM   r   rN   )r   r   rM   rN   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 5 Q R X dS )z=Test error handling when given differing sized masked arrays.r(   g      .@)r]   r   N)r   r   ÚmarP   Zonesr9   Zmaskedr   r   r.   r/   r2   r   )rq   ÚyrM   rN   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 )Nr4   r5   r   r6   r^   )r8   rd   )	r   r   r   r   r   r9   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^   )r8   rd   rc   rL   )r   r   rO   r   rX   rY   ZgridrJ   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|t‚d S )Nr   r7   r   ZLabel)r   r   r   r   r   r9   r   r)   r<   r=   ÚlenZvertsr   )	r   r   r   r   r   r   r8   rZ   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   r9   r   Zset_UVC)r   r   r   r   r   r   rZ   r   r   r   Útest_quiver_setuvc_numbers  s
    r’   )Znumpyr   r.   r   Z
matplotlibr   r   Zmatplotlib.testing.decoratorsr   r   r   r+   r1   r3   r@   rA   rC   rI   rK   rR   r[   rr   r‚   r‡   rˆ   r‰   rŒ   r   r   r‘   r’   r   r   r   r   Ú<module>   sF   
	










	
	