U
    Âmœd  ã                   @   s   d dl Z d dlZd dlmZ d dlmZ d dlmZ d dlm	Z
 d dlmZ d dlmZ d dlmZ d dlmZ d dlmZmZ d dlmZmZmZmZmZ d dlZd d	lm Z  d dl!Z!e!j"d
d„ ƒZ#dd„ Z$e!j% &de'ƒ e'ddd�e'dddd�e'e'dd�d�g¡dd„ ƒZ(e!j% &dddg¡e!j% &dd dgddgddgg¡e!j% &dd dgddgddgg¡dd „ ƒƒƒZ)d!d"„ Z*e!j% &d#dd$gd%d&gg¡d'd(„ ƒZ+d)d*„ Z,d+d,„ Z-d-d.„ Z.e!j% &d/dd%g¡d0d1„ ƒZ/e!j% &d/dd%g¡d2d3„ ƒZ0d4d5„ Z1e!j% &d6ej2ej3g¡d7d8„ ƒZ4d9d:„ Z5e!j% &d;d%dg¡d<d=„ ƒZ6d>d?„ Z7d@dA„ Z8e!j% &dBdd%g¡dCdD„ ƒZ9e!j% &dEdd%g¡dFdG„ ƒZ:e!j% &dHdId%e'dddJ�fdKde'ddL�fdId%e'e'dd�d�fdId%e'ddM�fg¡dNdO„ ƒZ;e!j% &dBdd%g¡dPdQ„ ƒZ<e!j% &dEdd%g¡dRdS„ ƒZ=e!j% &dTdd%g¡dUdV„ ƒZ>dWdX„ Z?dYdZ„ Z@e!j% &d[d\d]g¡d^d_„ ƒZAe!j% &d[d\d]g¡d`da„ ƒZBdbdc„ ZCddde„ ZDe!j% &dfdg¡dhdi„ ƒZEe!j%jFdjddk�dldm„ ƒZGdndo„ ZHdpdq„ ZIe!j% &de'ƒ e'd%e'drds�dt�e'ddd�g¡dudv„ ƒZJdwdx„ ZKe!j% &dydzd{d|g¡d}d~„ ƒZLedgd€dd��d‚dƒ„ ƒZMed„gd…�d†d‡„ ƒZNed„gd…�dˆd‰„ ƒZOdŠd‹„ ZPed„gd…�dŒd�„ ƒZQed„gd…�dŽd�„ ƒZRed„gd…�d�d‘„ ƒZSed„gd…�d’d“„ ƒZTed„gd…�d”d•„ ƒZUd–d—„ ZVd˜d™„ ZWdšd›„ ZXdœd�„ ZYdždŸ„ ZZd d¡„ Z[e!j% &d¢dIdKg¡d£d¤„ ƒZ\e!j% &d¢dIdKg¡d¥d¦„ ƒZ]d§d¨„ Z^d©dª„ Z_d«d¬„ Z`e!j% &d­d%dg¡d®d¯„ ƒZae!j% &d­d%dg¡d°d±„ ƒZbeƒ d²d³„ ƒZce!j% &d´ddµd¶g¡e!j% &d­d%dg¡d·d¸„ ƒƒZde!j% &d­d%dg¡d¹dº„ ƒZee!j% &d­d%dg¡d»d¼„ ƒZfe!j% &d­d%dg¡ed„gd…�d½d¾„ ƒƒZgd¿dÀ„ Zhe!j% &dÁd%dg¡e!j% &dÂd%dg¡dÃdÄ„ ƒƒZidS )Åé    N)Úmock)ÚMatplotlibDeprecationWarning)Ú
MouseEvent)Ú	Rectangle)ÚLine2D)Úcheck_figures_equalÚimage_comparison)Úclick_and_dragÚdo_eventÚget_axÚ
mock_eventÚnoop)Úassert_allclosec                   C   s   t ƒ S ©N)r   © r   r   úV/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/matplotlib/tests/test_widgets.pyÚax   s    r   c            
   	   C   s:  ddl m} m} ddlm} |ƒ dkr0t d¡ tjdddddgd	�\}}||d
 ddgƒ}||d ddgddgddgdœddgddgdœd�}| |d ddgddgd�}| |d ddgddgddgddgdœddgddgdœdddgid�}|d
  	d¡ |d  	d ¡ |j
 ¡  t ¡ �}	|j|	d!d"� W 5 Q R X d S )#Nr   )ÚCheckButtonsÚRadioButtons)Ú"_get_running_interactive_framework)ZheadlessNz-Callback exceptions are not raised otherwise.é   )é   r   é   )ZnrowsZncolsZfigsizeZwidth_ratios)r   r   ZApplesZOranges©r   r   ÚredZorangeé   é   ©ÚcolorÚfontsizeÚ	mistyroseZ	peachpuff©Ú	edgecolorÚ	facecolor©Úlabel_propsÚradio_props)r   r   T)Úactives)r   r   r   ZdarkredZ
darkorange)r'   r%   Úframe_propsÚcheck_propsZDefaultZStylizedZpdf)Úformat)Úmatplotlib.widgetsr   r   Zmatplotlib.cbookr   ÚpytestZxfailÚpltÚsubplotsÚ	set_titleÚcanvasÚdrawÚioÚBytesIOZsavefig)
r   r   r   Úfigr   Z
default_rbZ	styled_rbZ
default_cbZ	styled_cbZresult_afterr   r   r   Útest_save_blitted_widget_as_pdf   sR    

   ÿ
 ÿÿüÿ ÿÿ
ù


r5   ÚkwargsTr   )ÚuseblitÚbuttoné
   Úpixels)ÚminspanxÚminspanyÚ
spancoords)Úfill)Úpropsc                 C   sì   t jtd d�}tj| |f|Ž}t|ddddd� t|ddddd� t|dd	d	dd� | d
d ¡dkrŽt|jdddddgdddddgg|jd� | 	¡  |j
\\}}}|jdks²t‚|jdksÀt‚|jdksÎt‚|jdksÜt‚|i ksèt‚d S )N©ÚspecZreturn_valueÚpresséd   r   ©ÚxdataÚydatar8   ÚonmoveéÇ   Úreleaseéú   Zdrawtype)ÚlineÚnoneç      Y@)Úerr_msg)r   ÚMockr   ÚwidgetsÚRectangleSelectorr
   Úgetr   ÚgeometryÚassert_called_onceÚ	call_argsrE   ÚAssertionErrorrF   )r   r6   ÚonselectÚtoolÚepressÚereleaser   r   r   Útest_rectangle_selectorB   s&    ÿýr[   r=   Údatazminspanx, x1ç      %@é   zminspany, y1c                 C   s,  t jtd d�}d\}}|dkrB| j ||f¡| j ||f¡ \}}tj| |d|||d�}	t|	||f||fd� |	jrxt	‚| 
¡  t|	ddd� |	js˜t	‚| ¡  | ¡  t|	||f||fd� |	jrÈt	‚| ¡  |j\\}
}}|
j|ksìt	‚|
j|ksút	‚|j|k�s
t	‚|j|k�st	‚|i k�s(t	‚d S )	Nr@   ©r9   r9   r:   T)Úinteractiver=   r;   r<   ©ÚstartÚend©r   r   ©é   rf   )r   rO   r   Ú	transDataÚ	transformrP   rQ   r	   Ú_selection_completedrV   Úassert_not_calledrT   Ú
reset_mockrU   rE   rF   )r   r=   r;   Úx1r<   Úy1rW   Zx0Zy0rX   rY   rZ   r6   r   r   r   Útest_rectangle_minspana   s6    ÿ
 þ


rn   c              	   C   sL   t  | dd„ ¡}| ¡ st‚tjtdd�� d|_W 5 Q R X | ¡ rHt‚d S )Nc                  W   s   d S r   r   ©Úargsr   r   r   Ú<lambda>ˆ   ó    z=test_deprecation_selector_visible_attribute.<locals>.<lambda>z was deprecated in Matplotlib 3.6©ÚmatchF)rP   rQ   Úget_visiblerV   r,   Úwarnsr   Úvisible©r   rX   r   r   r   Ú+test_deprecation_selector_visible_attribute‡   s    þry   zdrag_from_anywhere, new_center)é<   éK   F©rf   r   c                 C   sj   t j| td|d�}t|ddd� |jdks.t‚t|ddd� |j|ksJt‚t|d	d
d� |jdksft‚d S )NT)rW   r`   Údrag_from_anywhere©r   r9   ©rC   éx   ra   )é2   éA   ©é   é   ©é#   r„   ©é¯   é¹   ©rŠ   éÃ   )é´   é¾   )rP   rQ   r   r	   ÚcenterrV   )r   r}   Z
new_centerrX   r   r   r   Útest_rectangle_drag“   s    
ÿr�   c                 C   sâ   t j| tdtddd�tdd�d�}t|dd	d
� |j}| ¡ tjddd�ksPt	‚|j
ddd� | ¡ tjddd�ksxt	‚|jD ]$}| ¡ dks’t	‚| ¡ dks~t	‚q~|jddd� |jD ]$}| ¡ dksÌt	‚| ¡ dks¸t	‚q¸d S )NTÚbçš™™™™™É?©r#   Úalphaç      à?©r”   )rW   r`   r?   Úhandle_propsr~   r   ra   Úrç333333Ó?Úblack)Úmarkeredgecolorr”   )rP   rQ   r   Údictr	   Ú_selection_artistÚget_facecolorÚmcolorsÚto_rgbarV   Ú	set_propsÚ_handles_artistsÚget_markeredgecolorÚ	get_alphaÚset_handle_props©r   rX   Úartistr   r   r   Ú.test_rectangle_selector_set_props_handle_props«   s     

þ

r¨   c                 C   sÖ  t j| tdd�}t|ddd� |jdks,t‚|j}|d |d  }}|d	 |d
  }}t|||f||fd� |j|d ||d |fksŠt‚|j}|d |d |d |d  d   }}|d	 | }}t|||f||fd� |j|d ||d |d fk� sþt‚|j}|d |d |d |d  d   }}|d | }}t|||f||fd� |j||d |d |d fk�srt‚|j}|d |d  }}|d |d  }}t|||f||fd� |j||d ||d fk�sÒt‚d S )NT©rW   r`   r~   r   ra   )ç        rM   ç      $@ç      ^@r   é   r9   r   r   r   r…   r   r„   )rP   rQ   r   r	   ÚextentsrV   )r   rX   r®   rE   rF   Ú	xdata_newÚ	ydata_newr   r   r   Útest_rectangle_resizeÀ   s.    &$&$r±   c              	   C   s€   t j| tdd�}t|ddd� t t¡� | d¡ W 5 Q R X t t¡� | d¡ W 5 Q R X | d¡ | d	¡ | d
¡ d S )NTr©   ©éF   r‚   ©é}   é‚   ra   Úunsupported_stateÚclearÚmoveÚsquarer�   )rP   rQ   r   r	   r,   ÚraisesÚ
ValueErrorÚ	add_staterx   r   r   r   Útest_rectangle_add_stateã   s    

r¾   r½   c                 C   s"  t j| tdd�}t|ddd� |jdks,t‚|r@| d¡ d }nd}|j}|d	 |d
  }}d\}}|| ||  }	}
t|||f|	|
f|d� |j|d | |	|d | |
fks´t‚|j}|d	 |d |d
 |d  d   }}d}|| | }	}
t|||f|	|
f|d� |j|d | |	|d |d
 fk�s2t‚|j}|d	 |d |d
 |d  d   }}d}|| | }	}
t|||f|	|
f|d� |j|d | |	|d |d
 fk�s°t‚|j}|d |d |d
 |d  d   }}d}|| | }	}
t|||f|	|
f|d� |j|	|d	 | |d |d
 fk�s.t‚|j}|d |d |d
 |d  d   }}d}|| | }	}
t|||f|	|
f|d� |j|	|d	 | |d |d
 fk�s¬t‚|j}|d |d  }}d\}}|| ||  }	}
t|||f|	|
f|d� |j|	|d	 | |
|d
 | fk�st‚d S )NTr©   r²   r´   ra   )ç     €Q@ç     @_@ç     @P@g     @`@r�   Úcontrolr   r­   ©r9   r   ©rb   rc   Úkeyr   r   r9   éìÿÿÿr…   éçÿÿÿ©r   r„   ©rP   rQ   r   r	   r®   rV   r½   ©r   r½   rX   Zuse_keyr®   rE   rF   ÚxdiffÚydiffr¯   r°   r   r   r   Útest_rectangle_resize_centerò   s’    
ÿ
 ÿ
&ÿ ÿ&ÿ ÿ&ÿ ÿ&ÿ ÿÿ 
ÿrÍ   c                 C   s"  t j| tdd�}t|ddd� |jdks,t‚|r@| d¡ d }nd}|j}|d	 |d
  }}d\}}|| ||  }	}
t|||f|	|
f|d� |j|d |	|d |d
 | fks´t‚|j}|d	 |d |d
 |d  d   }}d}|| | }	}
t|||f|	|
f|d� |j|d |	|d |d
 | fk�s2t‚|j}|d	 |d |d
 |d  d   }}d}|| | }	}
t|||f|	|
f|d� |j|d |	|d |d
 | fk�s°t‚|j}|d |d |d
 |d  d   }}d}|| | }	}
t|||f|	|
f|d� |j|	|d	 |d |d
 | fk�s.t‚|j}|d |d |d
 |d  d   }}d}|| | }	}
t|||f|	|
f|d� |j|	|d	 |d |d
 | fk�s¬t‚|j}|d |d  }}d\}}|| ||  }	}
t|||f|	|
f|d� |j|d | |d	 |
|d
 fk�st‚d S )NTr©   r²   ©r€   és   ra   ©r¿   r¬   rÁ   g     À\@rº   Úshiftr   r­   rÃ   rÄ   r   r   r9   rÆ   r…   rÇ   rÈ   rÉ   rÊ   r   r   r   Útest_rectangle_resize_square<  s’    
ÿ 
ÿ
&ÿ 
ÿ&ÿ 
ÿ&ÿ 
ÿ&ÿ 
ÿÿ ÿrÒ   c           	      C   s*  t j| tdd�}t|ddd� | d¡ | d¡ t|jdƒ |j}|d	 |d
  }}d\}}|| ||  }}t|||f||fd� t|j|d | ||d | |d
 | fƒ |j}|d	 |d |d
 |d  d   }}d}|| | }}t|||f||fd� t|j|d | ||d | |d
 | fƒ |j}|d	 |d |d
 |d  d   }}d}|| | }}t|||f||fd� t|j|d | ||d | |d
 | fƒ |j}|d |d |d
 |d  d   }}d}|| | }}t|||f||fd� t|j||d	 | |d | |d
 | fƒ |j}|d |d |d
 |d  d   }}d}|| | }}t|||f||fd� t|j||d	 | |d | |d
 | fƒ |j}|d |d  }}d\}}|| ||  }}t|||f||fd� t|j|d | |d	 | ||d
 | fƒ d S )NTr©   r²   rÎ   ra   rº   r�   rÐ   r   r­   rÃ   r   r   r9   rÆ   r   rÇ   rÈ   )rP   rQ   r   r	   r½   r   r®   )	r   rX   r®   rE   rF   rË   rÌ   r¯   r°   r   r   r   Ú#test_rectangle_resize_square_center†  sv    


 
ÿ&
 
ÿ&
 
ÿ&
 
ÿ&
 
ÿ 
ÿrÓ   Úselector_classc              	   C   sF  || t dd�}t|ddd� |jdks*t‚t|jƒdks<t‚t|dd	d
� |jtdgƒks^t‚t|jƒdkspt‚t|ddd� t|dd	d
� t|jƒdksžt‚|jdks¬t‚t|j	ddd� d|_	|j	dksÐt‚t|j
t ddddgddddgg¡dd� t|ddd� t|jddd� |tjk�rBt t¡� d|j_W 5 Q R X d S )NTr©   ©rC   rC   ©r¶   éŒ   ra   ©rC   r¶   rC   r×   r   Úon_key_pressr˜   ©rÅ   Úrotater   )r€   é‘   g�Âõ(\�9@g{®Gáz„?)Zatolé-   gR¸…ë¡]@ç     xa@g=
×£pÝ[@g     �V@g     ÐW@g=
×£p]@g     b@gÃõ(\�â^@)én   rÜ   )rß   é    )rC   rÞ   rC   g
×£p=úb@Zunvalid_value)r   r	   r®   rV   ÚlenÚ_stater
   Úsetr   ZrotationÚcornersÚnpÚarrayrP   rQ   r,   r»   r¼   r�   Zrotation_point)r   rÔ   rX   r   r   r   Útest_rectangle_rotateÅ  s2    
ÿþrç   c                 C   s„   t j| tdd�}t|ddd� |jdks,t‚t|jƒdks>t‚dD ]<}| |¡ t|jƒd	ksbt‚| 	|¡ t|jƒdksBt‚qBd S )
NTr©   rÕ   rÖ   ra   rØ   r   )rÛ   rº   r�   r   )
rP   rQ   r   r	   r®   rV   rá   râ   r½   Zremove_state)r   rX   Ústater   r   r   Útest_rectangle_add_remove_setè  s    

ré   Úuse_data_coordinatesc                 C   s`  |   d¡ tj| td|d�}t|ddd� |jdks8t‚| d¡ | d	¡ |rò|j}|d
 |d |d
 |d    }}}d|d |d |d  d   }}|| | }	}
|d | }t|||f|	|
fd� t|j|d | |	|| || gƒ nj|j}|d
 |d  }}d}|| | }	}
|d
 |j	 }t|||f|	|
fd� t|j|d | |	ddgƒ d S )Nçš™™™™™é?T)rW   r`   rê   r²   rÎ   ra   rÐ   rº   r�   r   r­   r   r9   r   g      G@g     ¸`@)
Z
set_aspectrP   rQ   r   r	   r®   rV   r½   r   Z_aspect_ratio_correction)r   rê   rX   r®   rE   rF   ÚwidthrË   Zycenterr¯   r°   Zychanger   r   r   Ú*test_rectangle_resize_square_center_aspectõ  s:    

ÿ

$" ÿ ÿrí   c                 C   sê   t j| tddd�}d|_t|ddd� |jdks4t‚t|d	dd
d� |jdksRt‚t|dddd� dd„ |jD ƒ}|ddddgks†t‚t|d	ddd� dd„ |jD ƒ}|ddddgksºt‚|jjdksÊt‚t|jdd…df ddgƒ dS )z'For ellipse, test out the key modifiersr9   T)rW   Ú
grab_ranger`   ©rC   é–   rC   rð   ©rµ   rµ   )rÜ   rÜ   ra   )r€   éª   r€   rò   rÕ   rÂ   rÄ   )r{   rµ   r{   rµ   r_   )r‡   rf   rÑ   c                 S   s   g | ]}t |ƒ‘qS r   ©Úint©Ú.0Úer   r   r   Ú
<listcomp>'  s     z test_ellipse.<locals>.<listcomp>r‡   r´   z
ctrl+shiftc                 S   s   g | ]}t |ƒ‘qS r   ró   rõ   r   r   r   rø   ,  s     r³   r¶   )r   éI   Nr   r¿   rC   )	rP   ÚEllipseSelectorr   r®   r	   rV   rS   Úshaper   )r   rX   r®   r   r   r   Útest_ellipse  s"     ÿrü   c                 C   sä   t j| tdddddœd�}d|_t|jdƒ |jdks:t‚t|jd	ƒ |jdksTt‚t|d
dd� |jdkspt‚t|ddd� |jdksŒt‚t|dd
d� |jdks¨t‚t	 
|jjd  ¡ d¡sÄt‚t	 
|jjd  ¡ d¡sàt‚d S )Nr9   Tr˜   r‘   )Zmarkerfacecolorr›   )rW   rî   r`   r—   rï   ))rC   rð   rð   rC   )rC   rC   rð   rð   ))rC   rÀ   rð   rÀ   )rÀ   rC   rÀ   rð   rÕ   )r€   r€   ra   )r€   rð   r€   rð   )é„   rý   )él   éŠ   rþ   rÿ   r_   )r9   rC   r9   rC   r   )rP   rQ   r   r®   r   rä   rV   Zedge_centersr	   rŸ   Ú
same_colorZ_corner_handlesÚartistsZget_markerfacecolorr£   rx   r   r   r   Útest_rectangle_handles3  s8    ÿýÿ ÿ ÿr  r`   c                 C   sd   t jtd d�}tj| ||d�}t|ddd� | ¡  |jdksBt‚| 	¡  t|ddd� | ¡  d S )Nr@   ©r`   ©rC   rß   ©rð   r€   ra   ©rM   ç     Àb@g     €[@r¬   ©r9   rC   )
r   rO   r   rP   rQ   r	   rT   r®   rV   rk   ©r   r`   rW   rX   r   r   r   Ú test_rectangle_selector_onselectT  s    r
  Úignore_event_outsidec                 C   sŽ   t jtd d�}tj| ||d�}t|ddd� | ¡  |jdksBt‚| 	¡  t|ddd� |rt| 
¡  |jdksŠt‚n| ¡  |jd	ksŠt‚d S )
Nr@   )r  r  r  ra   r  ©rð   rð   ©rà   rà   )r  ç      d@r  r  )r   rO   r   rP   rQ   r	   rT   r®   rV   rk   rj   )r   r  rW   rX   r   r   r   Ú&test_rectangle_selector_ignore_outsidee  s    ÿr  z$orientation, onmove_callback, kwargsÚ
horizontal)Zminspanr7   Úvertical)r8   r  c                 C   s�   t jtd d�}t jtd d�}|r(||d< tj| ||f|Ž}t|ddddd� t|ddddd� t|d	d
d
dd� | dd¡ |rŒ| dd¡ d S )Nr@   Úonmove_callbackrB   rC   r   rD   rG   rH   rI   rJ   )r   rO   r   rP   ÚSpanSelectorr
   Úassert_called_once_with)r   Úorientationr  r6   rW   rG   rX   r   r   r   Útest_span_selector|  s    r  c                 C   sf   t jtd d�}tj| |d|d�}t|ddd� | ¡  |jdksDt‚| 	¡  t|ddd� | ¡  d S )	Nr@   r  r  rÕ   )rð   rC   ra   )rC   rð   r  )
r   rO   r   rP   r  r	   rT   r®   rV   rk   r	  r   r   r   Útest_span_selector_onselect“  s    
ÿr  c                 C   sÀ   t jtd d�}t jtd d�}tj| |d||d�}t|ddd� | ¡  | ¡  |jdks\t‚| 	¡  | 	¡  t|dd	d� |rž| 
¡  | 
¡  |jdks¼t‚n| ¡  | ¡  |jd
ks¼t‚d S )Nr@   r  )r  r  rÕ   rñ   ra   )rC   rµ   r  r  )rð   rà   )r   rO   r   rP   r  r	   rT   r®   rV   rk   rj   )r   r  rW   rG   rX   r   r   r   Ú!test_span_selector_ignore_outside£  s(    
þr  r}   c                 C   s€   t j| tdd|d�}t|ddd� |jdks0t‚t|dd	d� |rR|jd
ks`t‚n|jdks`t‚t|ddd� |jdks|t‚d S )Nr  T)rW   Ú	directionr`   r}   r_   r   ra   r  rƒ   r†   )r   rß   )r„   r‡   rˆ   r‹   )rP   r  r   r	   r®   rV   )r   r}   rX   r   r   r   Útest_span_selector_dragÀ  s    
þr  c              	   C   sš   t j| tddd�}|jdks t‚|jjdks0t‚t t¡� t j| tdd�}W 5 Q R X d|_|jdksjt‚|jjdkszt‚t t¡� d|_W 5 Q R X d S )Nr  T)rW   r  r`   Zinvalid_direction)rW   r  r  Zinvalid_string)	rP   r  r   r  rV   Ú_edge_handlesr,   r»   r¼   rx   r   r   r   Útest_span_selector_directionÚ  s    
ÿÿr  c              	   C   sä   t j| tddtddd�tdd�d�}t|d	d
d� |j}| ¡ tjddd�ksRt	‚|j
ddd� | ¡ tjddd�kszt	‚|jD ]$}| ¡ dks”t	‚| ¡ dks€t	‚q€|jddd� |jD ]$}| ¡ dksÎt	‚| ¡ dksºt	‚qºd S )Nr  Tr‘   r’   r“   r•   r–   )rW   r  r`   r?   r—   r~   r   ra   r˜   r™   ©r   r”   )rP   r  r   rœ   r	   r�   rž   rŸ   r    rV   r¡   r¢   Ú	get_colorr¤   r¥   r¦   r   r   r   Ú)test_span_selector_set_props_handle_propsì  s"    

ý

r  ÚselectorÚspanÚ	rectanglec                 C   sº   t | tdd�}|dkr&tj}d|d< ntj}|f |Ž}t|ddd� t|d	d	d� |jr\t‚d|d
< |f |Ž}|jsxt‚t|ddd� t|d	d	d� |jsžt‚t	|ddd� |jr¶t‚d S )NT)r   rW   r`   r!  r  r  r_   r   ra   )r¶   r¶   r  rÙ   ÚescaperÚ   )
rœ   r   rP   r  rQ   r	   ri   rV   r  r
   )r   r   r6   ZSelectorrX   r   r   r   Útest_selector_clear  s"    





r$  c                 C   sÄ   |dkrt j| tdddd�}nt j| tdd�}t|ddd� |jsFt‚| ¡ sRt‚|dkrh|jd	ksht‚| 	¡  |jrzt‚| ¡ r†t‚t|dd
d� |jsžt‚| ¡ sªt‚|dkrÀ|jdksÀt‚d S )Nr!  r  T)rW   r  r`   r  r©   r_   r   ra   r  )r�   r€   )r9   r�   )
rP   r  r   rQ   r	   ri   rV   ru   r®   r¸   )r   r   rX   r   r   r   Útest_selector_clear_method  s&    
þ


r%  c              	   C   s€   t j| tddd�}t t¡� | d¡ W 5 Q R X t t¡� | d¡ W 5 Q R X t t¡� | d¡ W 5 Q R X | d¡ d S )Nr  Tr  r·   r�   rº   r¹   )rP   r  r   r,   r»   r¼   r½   rx   r   r   r   Útest_span_selector_add_state9  s    
ÿr&  c                 C   sŠ   dddg}t j| |ddd�}|jD ]}| ¡ r2t‚| ¡ r"t‚q"| d¡ | d¡ |jD ]}| ¡ sjt‚| ¡ sZt‚qZ|j|ks†t‚d S )Nr   rf   r�   r  F)r7   T)	rP   ZToolLineHandlesr  Zget_animatedrV   ru   Úset_visibleZset_animatedÚ	positions)r   r(  Ztool_line_handler§   r   r   r   Útest_tool_line_handleG  s    

ÿ



r)  r  )r  r  c                 C   s  t  dd¡\}}| ddgddg¡ |jj ¡  | ¡ }| ¡ }tj	|t
| dd�}| ¡ |ksbt‚| ¡ |ksrt‚| dkr~|n|}|jjt|ƒks–t‚dd	g}d
dg}|}	t|||d� | ¡ |ksÈt‚| ¡ |ksØt‚| dkrädnd}
||
 |	|
 g}|jj|k�s
t‚d S )Nr   r9   r   rf   Tr  r  r]   g      '@r^   é   ra   r   )r-   r.   ÚplotÚfigurer0   r1   Z
get_xboundZ
get_yboundrP   r  ÚprintrV   r  r(  Úlistr	   )r  r4   r   Zx_boundZy_boundrX   ÚboundÚ
press_dataÚ	move_dataÚrelease_dataÚindexÚhandle_positionsr   r   r   Útest_span_selector_boundZ  s&    r5  ZQtAgg)Zskip_on_importerrorc               	      sÒ  t  ddt j d¡‰t  ˆ¡‰t ¡ \} }|jˆˆdd�\}|jg dd�\‰ t d¡ | |¡ | j	 
| j¡ ‡ ‡‡fdd„}tj||d	|dddd
�}ddg}ddg}t|d|d |d dd� t|d|d |d dd� | ¡ |ˆ fksît‚|jdksüt‚ˆ j�st‚tˆ  ¡ dƒ | ¡  ˆ jdk�s.t‚ddg}ddg}ddg}t|d|d |d dd� t|d|d |d dd� |jdk�sŠt‚ˆ j�s–t‚tˆ  ¡ dƒ t|d|d |d dd� ˆ jdk�sÎt‚dS )zACheck that the animated artists changed in callbacks are updated.r   r   rC   T)Zanimatedçš™™™™™¹?c                    s<   t  ˆ| |f¡\}}ˆ||…  ¡ }ˆ  ˆt  ˆ|¡¡ d S r   )rå   ZsearchsortedÚmeanÚset_dataZ	full_like)ÚvminÚvmaxZindminZindmaxÚv©Zln2ÚvaluesÚxr   r   r7  ‡  s    z:test_span_selector_animated_artists_callback.<locals>.meanr  )r  r  r`   r}   r7   r   rB   rD   rG   FgˆSG-�î?é   r   gÈ„¦C(î¿rI   N)rå   ÚlinspaceÚpiÚsinr-   r.   r+  ÚpauseZdraw_artistr0   ZblitZbboxrP   r  r
   Z_get_animated_artistsrV   Ústaler   Ú	get_ydataÚupdate)r4   r   Úlnr7  r!  r0  r1  r2  r   r<  r   Ú,test_span_selector_animated_artists_callbackv  sL    



ü ÿrH  c                 C   s€   dd„ }t j| |dd�}|j}t ddd¡}t dd	d
dddddddg
¡}t ddddddddddg
¡}|||ƒ}t||ƒ d S )Nc                  W   s   d S r   r   ro   r   r   r   rW   °  s    z4test_snapping_values_span_selector.<locals>.onselectr  )r  r   r   r^   gš™™™™™¹¿r6  r’   r•   ç333333ã?çffffffæ?çÍÌÌÌÌÌì?g
×£p=
@ç      @ç      @rª   ç      ð?)rP   r  Z_snaprå   r@  ræ   r   )r   rW   rX   Zsnap_functionÚsnap_valuesr=  Úexpectr   r   r   Ú"test_snapping_values_span_selector¯  s    
rQ  c                    sl   ‡ fdd„}t  d¡d }tjˆ |d|d�}d|_|jdks@t‚d |_|jd ksTt‚d|_|jdksht‚d S )	Nc                    s
   dˆ _ d S )NT)Z_got_onselect)r9  r:  ©r   r   r   rW   ¾  s    z)test_span_selector_snap.<locals>.onselectr�   r?  r  )r  rO  )é   r‡   )r   é$   )rå   ZarangerP   r  r®   rV   rO  )r   rW   rO  rX   r   rR  r   Útest_span_selector_snap½  s    
ÿrU  r   )r   )r7   r?   c                 C   sh   t jtd d�}tj| |f|Ž}t|ddddd� t|ddddd� t|dd	d	dd� | d
ddg¡ d S )Nr@   rB   rC   r   rD   rG   rµ   rI   rð   rÕ   rñ   r  )r   rO   r   rP   ZLassoSelectorr
   r  )r   r6   rW   rX   r   r   r   Útest_lasso_selectorÎ  s    rV  c                 C   s`   t  | dd¡}| ¡ dddgks$t‚| d¡ | ¡ dddgksDt‚| dd„ ¡}| |¡ d S )N)Úar‘   Úc)TFTTFr   c                   S   s   d S r   r   r   r   r   r   rq   ä  rr   z#test_CheckButtons.<locals>.<lambda>)rP   r   Z
get_statusrV   Z
set_activeZ
on_clickedZ
disconnect)r   ÚcheckZcidr   r   r   Útest_CheckButtonsÞ  s    
rZ  ÚtoolbarrL   Ztoolbar2Ztoolmanagerc                 C   sÞ   t j d|¡ tjtd d�}tjtd d�}t | d¡}| |¡ | 	|¡ |j
dksXt‚t|dƒ | d¡ |j
dkszt‚|jdksˆt‚| ¡  | ¡  |jdks¦t‚t|dƒ t|dd	d
� t|ddd
� |jdksÚt‚d S )Nr[  r@   Ú Z_clickzx**2r   r   Z	_keypressú+rÚ   Ú5r­   )r-   ÚrcParamsÚ_setr   rO   r   rP   ZTextBoxZ	on_submitZon_text_changeÚtextrV   r
   Úset_valÚ
call_countZbegin_typingZstop_typing)r   r[  Zsubmit_eventZtext_change_eventrX   r   r   r   Útest_TextBoxè  s$    




rd  zcheck_radio_buttons.pngZmpl20)ÚstyleZremove_textc            
   
   C   s8  t ƒ } | j}|jdd� | ddddg¡}t |d¡}tjtdd	�� |j	 W 5 Q R X | dd
ddg¡}t 
|dd¡}tjtdd	�� |j W 5 Q R X | ddddg¡}tj|ddddgdddgdœdddgdddgdœd�}| ddddg¡}tj
|dddddgdddgdœdddgdddgdœddddgid�}	d S )Nr™   )Úleftçš™™™™™©?rJ  r’   ç333333Ã?)zRadio 1zRadio 2zRadio 3z$The circles attribute was deprecatedrs   r•   )zCheck 1zCheck 2zCheck 3)FTTú'The rectangles attribute was deprecatedé   é   r   r   ÚgreenÚblue)r   r   r    Z	palegreenZ	lightbluer!   r$   r6  r   ©r%   r(   r)   )r   r,  Zsubplots_adjustZadd_axesrP   r   r,   rv   ÚDeprecationWarningZcirclesr   Ú
rectangles)
r   r4   Zrax1Zrb1Zrax2Zcb1Zrax3Zrb3Zrax4Zcb4r   r   r   Útest_check_radio_buttons_image  sR    ÿÿÿ ÿÿü  ÿÿúrq  Zpng)Ú
extensionsc                 C   s‚   t  |  ¡ ddg¡ |jg g d�}|jddgddg|jtjd d d d	d
gd� |jddd|jdd� |jddd|jdd� d S )NÚteaÚcoffee©ZxticksZyticksrh  çUUUUUUå?çUUUUUUÕ?ú	font.sizer   ZC0rL   )rh   ÚsrX  ç      Ð?r�   ©rh   Úva)	rP   r   r.   Úadd_subplotÚscatterÚ	transAxesr-   r_  ra  ©Úfig_testÚfig_refr   r   r   r   Útest_radio_buttons-  s     ÿrƒ  c                 C   sh   dgdgdœ}ddddœ}t j| ¡ dd	g||d
� t  |  ¡ dd	g¡}| |¡ | |ddi–¡ d S )Nr   é   r   rl  rm  r   ©r#   r"   Ú	linewidthrs  rt  r$   ry  ç      b@)rP   r   r.   Úset_label_propsZset_radio_props)r�  r‚  r%   r&   Úcbr   r   r   Útest_radio_buttons_props7  s     ÿ
rŠ  c              	   C   sR   t jtdd��  tj| ddgdddid�}W 5 Q R X t |j ¡ dd	g¡sNt	‚d S )
Nz"Both the \*activecolor\* parameterrs   rs  rt  r   r#   rl  )Úactivecolorr&   rL   )
r,   rv   ÚUserWarningrP   r   rŸ   r   Z_buttonsrž   rV   )r   Úrbr   r   r   Ú!test_radio_button_active_conflictF  s    ÿÿrŽ  c                 C   s:   t j| ¡ ddgdd� t j|  ¡ ddgdd�}d|_d S )Nrs  rt  rl  )r‹  r   )rP   r   r.   r‹  )r�  r‚  r‰  r   r   r   Ú%test_radio_buttons_activecolor_changeO  s    ÿÿr�  c                 C   s¼   t  |  ¡ ddgddg¡ |jg g d�}|jddgddgd|jtjd	 d
 d
 ddgd� |jddgddgd|jtjd	 d
 d
 ddgd� |jddd|jdd� |jddd|jdd� d S )Nrs  rt  Tru  rh  rv  rw  ry  rx  r   rL   )Úmarkerrh   ry  rX  r>  Úkrz  r�   r{  )	rP   r   r.   r}  r~  r  r-   r_  ra  r€  r   r   r   Útest_check_buttonsZ  s     ÿ ÿr’  c                 C   s    dgdgdœ}ddddœ}dddœ}t j| ¡ d	d
gddg|||d� t  |  ¡ d	d
gddg¡}| |¡ | |ddi–¡ | d¡|d< | |ddi–¡ d S )Nr   r„  r   rl  rm  r   r…  )r#   r†  rs  rt  Trn  ry  r‡  r#   r"   )rP   r   r.   rˆ  Zset_frame_propsÚpopZset_check_props)r�  r‚  r%   r(   r)   r‰  r   r   r   Útest_check_button_propsf  s    
 þÿ
r”  c              	      sš   t  |  ¡ ddgddg¡}tjtdd�� |j W 5 Q R X |jg g d�‰ ddg‰d}|d |d  ‰‰‡ ‡‡‡fd	d
„tˆƒD ƒ}|D ]}ˆ  	|¡ q†d S )Nr\  Fri  rs   ru  rv  rw  r   c              
      s6   g | ].\}}t d ˆ| ˆd  fˆˆddˆ jd�‘qS )rg  r   rš   rL   )Zxyrì   Úheightr"   r#   rh   )r   r  )rö   ÚiÚy©r   ÚhÚwÚysr   r   rø   ‰  s   ûýz1test_check_buttons_rectangles.<locals>.<listcomp>)
rP   r   r.   r,   rv   ro  rp  r}  Ú	enumerateZ	add_patch)r�  r‚  r‰  Údyrp  r"  r   r˜  r   Útest_check_buttons_rectangles}  s     ÿÿúrž  c              	   C   s  t  |  ¡ ddgddg¡}tjtdd�� |j W 5 Q R X |jD ]}| d¡ q@|j	g g d�}ddg}d}|d	 |d	  }}d
d|j
ddœ}	t|ƒD ]~\}
}d||d	   }}t||| g|| |gf|	Ž}t||| g||| gf|	Ž}| d¡ | d¡ | |¡ | |¡ q”d S )Nr\  Tz"The lines attribute was deprecatedrs   Fru  rv  rw  r   r‘  g      ô?Zbutt)r   r†  rh   Zsolid_capstylerg  )rP   r   r.   r,   rv   ro  ÚlinesZ_rectanglesr'  r}  r  rœ  r   Úadd_line)r�  r‚  r‰  r"  r   r›  r�  rš  r™  Z
lineparamsr–  r—  r>  Úl1Úl2r   r   r   Útest_check_buttons_lines•  s.    ÿ
þ


r£  c               	   C   sd   t  ¡ \} }t t¡� tj|ddddd� W 5 Q R X t t¡� tj|ddddd� W 5 Q R X d S )Nr\  rª   ç      8@r«   )r   ÚlabelÚvalminÚvalmaxÚ	slidermin)r   r¥  r¦  r§  Ú	slidermax)r-   r.   r,   r»   r¼   rP   ÚSlider)r4   r   r   r   r   Ú'test_slider_slidermin_slidermax_invalid°  s    ÿÿr«  c                  C   sp   t  ¡ \} }tj|ddddd�}tj|dddd|d�}|j|jksFt‚tj|dddd|d	�}|j|jkslt‚d S )
Nr\  rª   r¤  rL  ©r   r¥  r¦  r§  ÚvalinitrN  )r   r¥  r¦  r§  r­  r¨  r«   )r   r¥  r¦  r§  r­  r©  ©r-   r.   rP   rª  ÚvalrV   )r4   r   Zslider_Úsliderr   r   r   Útest_slider_slidermin_slidermax»  s    ÿ ÿ ÿr±  c                  C   sX   t  ¡ \} }tj|ddddd�}|j|jks0t‚tj|ddddd�}|j|jksTt‚d S )Nr\  rª   r¤  g      $Àr¬  g      9@)r-   r.   rP   rª  r¯  r¦  rV   r§  ©r4   r   r°  r   r   r   Útest_slider_valmin_valmaxÉ  s    ÿÿr³  c               
   C   s`   t  ¡ \} }tj|dddddd�}|jdks0t‚tj|ddddddd	d
gd�}|jd	ks\t‚d S )Nr\  rª   r¤  gÍÌÌÌÌÌ&@r   )r   r¥  r¦  r§  r­  Zvalstepr^   r   rM  g33333³3@r®  r²  r   r   r   Útest_slider_valstep_snappingÔ  s     ÿ 
ÿr´  c                  C   sÌ   t  ¡ \} }tj|dddddd�}| d¡ |jdks:t‚|j ¡  	|j
 ¡ ¡}t|jddd	d
gƒ t  ¡ \} }tj|dddddd�}| d¡ |jdksžt‚|j ¡  	|j
 ¡ ¡}t|jddd
d	gƒ d S )Nr\  r   r„  rk  r  )r   r¥  r¦  r§  r­  r  r9   rz  g«ªªªªªÚ?r•   r  )r-   r.   rP   rª  rb  r¯  rV   ÚpolyÚget_extentsÚtransformedr  Úinvertedr   Zbounds)r4   r   r°  Úboxr   r   r   Útest_slider_horizontal_verticalß  s$     ÿ
 ÿ
rº  c                  C   sD   t  ¡ \} }tj|ddddd�}| d¡ | ¡  |jdks@t‚d S )Nr\  r   r   r•   r¬  ç      è?)r-   r.   rP   rª  rb  Úresetr¯  rV   r²  r   r   r   Útest_slider_resetó  s
    
r½  r  c                    sZ  ˆ dkrddddg}nddddg}t  ¡ \}}tj|dddˆ d	d
gd�}|j ¡  |j ¡ ¡}t	| 
¡  ¡ | d	dd
dgƒ t	|jdƒ ‡ fdd„}| d¡ t	|jdƒ t	||ƒdƒ |j ¡  |j ¡ ¡}t	| 
¡  ¡ | ddddgƒ | d¡ t	|jdƒ t	||ƒdƒ | d¡ t	|jdƒ t	||ƒdƒ | ¡  t	|jdƒ t	||ƒdƒ d S )Nr  r   r   r­   r   r\  rª   rN  r6  çÃõ(\�ÂÕ?©r   r¥  r¦  r§  r  r­  rz  r»  )r6  r¾  c                    s,   ˆ dkrdd„ | j D ƒS dd„ | j D ƒS d S )Nr  c                 S   s   g | ]}|  ¡ d  ‘qS ©r   )rE  ©rö   r™  r   r   r   rø     s     z?test_range_slider.<locals>.handle_positions.<locals>.<listcomp>c                 S   s   g | ]}|  ¡ d  ‘qS rÀ  )Ú	get_xdatarÁ  r   r   r   rø     s     )Z_handles)r°  ©r  r   r   r4    s    z+test_range_slider.<locals>.handle_positions)çš™™™™™Ù?rI  rÄ  rI  )r’   r6  )r6  r’   )éÿÿÿÿr9   r   )r-   r.   rP   ÚRangeSliderrµ  r¶  r·  r  r¸  r   Ú
get_pointsÚflattenr¯  rb  r¼  )r  Úidxr4   r   r°  r¹  r4  r   rÃ  r   Útest_range_sliderû  s<        þ


rÊ  c                 C   s€   | dkrddddg}nddddg}t  ¡ \}}tj|ddd| ddgd	�}|j ¡  |j ¡ ¡}t	| 
¡  ¡ | dd
ddgƒ d S )Nr  r   r   r­   r   r\  rª   rN  r¿  rz  r»  )r-   r.   rP   rÆ  rµ  r¶  r·  r  r¸  r   rÇ  rÈ  )r  rÉ  r4   r   r°  r¹  r   r   r   Ú"test_range_slider_same_init_values(  s        þrË  c           	      K   sf   t ƒ }tjtdd�}tj||f|Ž}| D ]\}}t||f|Ž q(|j|ksNt‚|j	|fi fksbt‚dS )a4  
    Helper function to test Polygon Selector.

    Parameters
    ----------
    event_sequence : list of tuples (etype, dict())
        A sequence of events to perform. The sequence is a list of tuples
        where the first element of the tuple is an etype (e.g., 'onmove',
        'press', etc.), and the second element of the tuple is a dictionary of
         the arguments for the event (e.g., xdata=5, key='shift', etc.).
    expected_result : list of vertices (xdata, ydata)
        The list of vertices that are expected to result from the event
        sequence.
    selections_count : int
        Wait for the tool to call its `onselect` function `selections_count`
        times, before comparing the result to the `expected_result`
    **kwargs
        Keyword arguments are passed to PolygonSelector.
    Nr@   )
r   r   rO   r   rP   ÚPolygonSelectorr
   rc  rV   rU   )	Úevent_sequenceÚexpected_resultZselections_countr6   r   rW   rX   ÚetypeÚ
event_argsr   r   r   Úcheck_polygon_selector9  s    rÑ  c                 C   s.   dt | |d�fdt | |d�fdt | |d�fgS )NrG   ©rE   rF   rB   rI   ©rœ   rÒ  r   r   r   Úpolygon_place_vertex[  s    þrÔ  c                 C   s2   dt | |d�fdt | |dd�fdt | |dd�fgS )NrG   rÒ  rB   r­   rD   rI   rÓ  rÒ  r   r   r   Úpolygon_remove_vertexa  s    þrÕ  Údraw_bounding_boxc                 C   s¤  t jt| d�}dddg}tddƒtddƒtddƒtddƒ•}|||dƒ dddg}tddƒtddƒd	td
d�fdtddd�fdtddd�fdtddd�fdtddd�fdtd
d�fftddƒtddƒ•}|||dƒ dddg}tddƒtddƒd	tdd�fdtddd�fdtddd�fdtddd�fdtddd�fdtdd�fftddƒtddƒ•}|||dƒ dddg}tddƒtddƒtddƒtddƒdtddd�fdtddd�fdtddd�fdtddd�ff•}|||dƒ dddg}tddƒtddƒtddƒtddƒd	tdd�fdtddd�fdtddd�fdtddd�fdtddd�fdtdd�ff•}|||dƒ dddg}d	td
d�fdtddd�fdtddd�fdtddd�fdtddd�fdtd
d�fd	tdd�fdtddd�fdtddd�fdtddd�fdtddd�fdtdd�fftddƒtddƒtddƒtddƒ•}|||dƒ dddg}tddƒtddƒd	tdd�fdtdd�fftddƒtddƒtddƒtddƒ•}|||dƒ d S )N©rÖ  ©r�   r�   ©rð   r�   ©r�   rð   r�   rð   r   )r{   r�   rÙ   rÂ   rÚ   rG   rÒ  rB   r{   rI   Zon_key_release)r�   r{   )rð   r{   rÑ   rC   rµ   r   )r{   r{   )r‰   r{   )r{   r‰   rJ   r#  )Ú	functoolsÚpartialrÑ  rÔ  rœ   )rÖ  Zcheck_selectorrÎ  rÍ  r   r   r   Útest_polygon_selectorg  s¾     ÿ
ü
ø	ö
ø	ö
ø

ö
ôð
üø
rÝ  c                 C   s"  t j| ttddd�tdd�|d�}tddƒtddƒtddƒtddƒ•}|D ]\}}t||f|Ž qJ|j}| ¡ dksxt‚| 	¡ dksˆt‚|j
d	d
d� | ¡ d	ks¦t‚| 	¡ d
ks¶t‚|jD ]$}| ¡ dksÐt‚| 	¡ dks¼t‚q¼|jd	d
d� |jD ]&}| ¡ d	k�st‚| 	¡ d
ksöt‚qöd S )Nr‘   r’   r  r•   r–   )rW   r?   r—   rÖ  r�   rð   r˜   r™   )rP   rÌ  r   rœ   rÔ  r
   r�   r  rV   r¤   r¡   r¢   r¥   )r   rÖ  rX   rÍ  rÏ  rÐ  r§   r   r   r   Ú,test_polygon_selector_set_props_handle_propsÙ  s2    
ýü

rÞ  c                 C   s.   |   ¡ }|  ¡ }tj|tddid�}d|_d S )Nrw   F)rW   r?   )r’   rë   r™   rJ  )r.   rP   rQ   r   r®   )r�  r‚  Úax_testÚ_rX   r   r   r   Útest_rect_visibilityú  s    ÿrá  rÉ  r   r­   c                 C   sv   dddg}t |d Ž t |d Ž t |d Ž t |d Ž g}| | t ddƒ¡ | tddƒ¡ t|g ƒ}t||d|d� d S )	NrØ  rÙ  rÚ  r   r   r   éÈ   r×  )rÔ  ÚinsertÚappendrÕ  ÚsumrÑ  )rÉ  rÖ  ÚvertsrÍ  r   r   r   Útest_polygon_selector_remove  s    




ü
ÿrç  c                 C   s\   dddg}t |d Ž t |d Ž t |d Ž t |d Ž t|d Ž •}t||dd … d| d� d S )NrØ  rÙ  rÚ  r   r   r   r×  )rÔ  rÕ  rÑ  )rÖ  ræ  rÍ  r   r   r   Ú(test_polygon_selector_remove_first_point  s    





ûÿrè  c              	   C   sš   dddg}t |d Ž t |d Ž t |d Ž t |d Ž t|d Ž t|d Ž t |d Ž •}tj| t|d�}|D ]\}}t||f|Ž qh|j|dd… ks–t‚d S )NrØ  rÙ  rÚ  r   r   r   ©rW   rÖ  )rÔ  rÕ  rP   rÌ  r   r
   ræ  rV   )r   rÖ  ræ  rÍ  rX   rÏ  rÐ  r   r   r   Útest_polygon_selector_redraw'  s    







÷ÿrê  c                 C   sš   dddg}|   ¡ }tj|t|d�}||_|j|ks6t‚|  ¡ }tj|t|d�}t|d Ž t|d Ž t|d Ž t|d Ž •}|D ]\}	}
t||	f|
Ž q~d S )N)r6  rÄ  )r•   rK  )r™   r’   ré  r   r   r   )r}  rP   rÌ  r   ræ  rV   rÔ  r
   )r�  r‚  rÖ  ræ  rß  Z	tool_testZax_refZtool_refrÍ  rÏ  rÐ  r   r   r   Ú"test_polygon_selector_verts_setter?  s,    
  ÿ  ÿ



ürë  c                 C   sÆ  ddddg}t |d Ž t |d Ž t |d Ž t |d Ž t |d Ž •}tj| td	d
�}|D ]\}}t||f|Ž qV| j}| jj}td|f| 	d¡džŽ  
¡  td|f| 	d¡žŽ  
¡  td|f| 	d¡džŽ  
¡  tj |jddddg¡ td|f| 	d¡džŽ  
¡  td|f| 	d¡žŽ  
¡  td|f| 	d¡džŽ  
¡  tj |jddddg¡ tj |jjd¡ td|f| 	d¡d žŽ  
¡  td|f| 	d¡d!žŽ  
¡  tj |jdddg¡ tj |jjd¡ d S )"N)r   r   )r   r   )r   é(   )rì  r   r   r   r   r­   Tré  Zbutton_press_event)rì  rì  Zmotion_notify_eventrd   Zbutton_release_event)r9   r   r~   )r9   r   )r   r9   r_   re   r|   )r   rf   )rf   rì  )rì  rf   )ç      4@ç      D@rí  rî  )rí  rî  g      >@rî  )r   )r   )r   )r   )r­   )r­   )rÔ  rP   rÌ  r   r
   rg   r,  r0   r   rh   Z_processrå   Útestingr   ræ  Ú_boxr®   )r   ræ  rÍ  rX   rÏ  rÐ  Útr0   r   r   r   Útest_polygon_selector_boxW  s¬    




û	 ÿ  ÿ ÿÿ
 ÿ  ÿ 
ÿ ÿ  ÿ ÿÿ
 ÿ  ÿ 
ÿ ÿ ÿ  ÿ ÿ  ÿ ÿ ÿrò  ÚhorizOnÚvertOnc                 C   sÜ  t  ¡ jddd�\}}t  ¡  ¡ }tjd ||fd| |d�}t|jƒdksLt‚t|jƒdks^t‚t	|ddd�}| 
|¡ |jj ¡  |jD ]}| ¡ d	ksˆt‚qˆ|jD ]}| ¡ d
ks¤t‚q¤tdd„ |jD ƒƒ|rÔdndksÞt‚tdd„ |jD ƒƒ| rødndk�st‚|j |_|j |_t	|ddd�}| 
|¡ tdd„ |jD ƒƒ|�rLdndk�sXt‚tdd„ |jD ƒƒ| �rtdndk�s€t‚t	|ddd�}| 
|¡ |jD ]}| ¡ d	k�sžt‚�qž|jD ]}| ¡ d
k�s¾t‚�q¾d S )Nr   T)ZsharexF)r7   ró  rô  r•   rz  rÒ  )r•   r•   )rz  rz  c                 S   s   g | ]}|  ¡ r|‘qS r   ©ru   ©rö   rK   r   r   r   rø   «  s      z$test_MultiCursor.<locals>.<listcomp>r   c                 S   s   g | ]}|  ¡ r|‘qS r   rõ  rö  r   r   r   rø   ­  s      c                 S   s   g | ]}|  ¡ r|‘qS r   rõ  rö  r   r   r   rø   µ  s      c                 S   s   g | ]}|  ¡ r|‘qS r   rõ  rö  r   r   r   rø   ·  s      r»  )r-   r,  r.   rP   ZMultiCursorrá   ZvlinesrV   Zhlinesr   rG   r0   r1   rÂ  rE  ró  rô  )ró  rô  Zax1Zax3Zax2ÚmultiÚeventÚlr   r   r   Útest_MultiCursorŽ  sP        ÿ



ÿ
ÿ



ÿ
ÿ



rú  )jrÛ  r2   Zunittestr   Zmatplotlib._api.deprecationr   Zmatplotlib.backend_basesr   Zmatplotlib.colorsÚcolorsrŸ   r+   rP   Zmatplotlib.pyplotZpyplotr-   Zmatplotlib.patchesr   Zmatplotlib.linesr   Zmatplotlib.testing.decoratorsr   r   Zmatplotlib.testing.widgetsr	   r
   r   r   r   Únumpyrå   Znumpy.testingr   r,   Zfixturer   r5   ÚmarkZparametrizerœ   r[   rn   ry   r�   r¨   r±   r¾   rÍ   rÒ   rÓ   rQ   rú   rç   ré   rí   rü   r  r
  r  r  r  r  r  r  r  r$  r%  r&  r)  r5  ÚbackendrH  rQ  rU  rV  rZ  rd  rq  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   r   Ú<module>   s  
'
ü
#ÿÿ
#
I
I?
ÿ
!
!!

ü







8
ý



$

	

	











,
"
q
 



7