o
    tBh                     @   s   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 d dlmZ d dlZdd Zdd	 Z	dd
dZejdddgddggd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d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"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d0ddgd1d2 Z'd3d4 Z(d5d6 Z)ejd7d8d9gd:d; Z*ejd7d8d9gd<d= Z+d>d? Z,ejd@dAdBdC Z-dDdE Z.dFdG Z/dHdI Z0ejdJg dKdLdM Z1edNgdOddPdQdR Z2edSgdOddPdTdU Z3dVdW Z4dXdY Z5dZd[ Z6d\d] Z7d^d_ Z8d`da Z9ejdbdcddgdedf Z:dgdh Z;didj Z<dkdl Z=dmdn Z>dodp Z?ejdqg drdsdt Z@e dudv ZAejdwg dxdydz ZBd{d| ZCd}d~ ZDdS )    )MatplotlibDeprecationWarningN)check_figures_equalimage_comparison)do_eventget_ax
mock_event)assert_allclosec                     s   t    fdd}tj |fi | }t|ddddd t|ddddd t|d	d
d
dd | dd dvrEt|jg dg dg|jd  jsJJ d S )Nc                    sB   d _ | jdks
J | jdksJ |jdksJ |jdksJ d S NTd      )_got_onselectxdataydataepressereleaseax t/var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/matplotlib/tests/test_widgets.pyonselect   s
   z!check_rectangle.<locals>.onselectpressr
      r   r   buttononmover   release   drawtype)linenone)      Y@r
   r   r   r
   )r
   r   r   r
   r
   )err_msg)r   widgetsRectangleSelectorr   getr   geometryr   kwargsr   toolr   r   r   check_rectangle   s   r*   c                   C   s   t   tjtdd t ddd W d    n1 sw   Y  t ddd tjtd	d t d
ddd W d    n1 s?w   Y  t dddd t tddd d S )Nz)Support for drawtype='line' is deprecated)matchr   F)r   useblitTr   r,   r   z)Support for drawtype='none' is deprecatedr    
   )r   minspanxminspanypixels)r/   r0   
spancoordsfillprops)r*   pytestwarnsr   dictr   r   r   r   test_rectangle_selector'   s    r:   c                 C   sf   t | d||dd |d urt | d|d t | d||dd |d ur(t | d|d t | d||dd | S )	Nr   r   r   on_key_presskeyr   on_key_releaser   )r   )r)   r   r   	xdata_new	ydata_newuse_keyr   r   r   _resize_rectangle:   s   rB   zdrag_from_anywhere, new_centerT)<   K   F)      c                 C   s   t  }dd }tj||d| d}t|ddddd	 t|d
dddd	 t|ddddd	 |jdks2J t|ddddd	 t|d
dddd	 t|ddddd	 |j|ksTJ t|ddddd	 t|d
dddd	 t|ddddd	 |jdksvJ d S )Nc                 S      d S Nr   r   r   r   r   r   M      z%test_rectangle_drag.<locals>.onselectTinteractivedrag_from_anywherer   r   r.   r   r   r   r
   x   r   )2   A         #            )      )r   r#   r$   r   center)rL   
new_centerr   r   r)   r   r   r   test_rectangle_dragG   s"   
rZ   c                  C   s  t  } dd }tj| |dtdddtddd	}t|d
dddd t|ddddd t|ddddd |j}| tjdddksCJ |j	ddd | tjdddksWJ |j
D ]}| dksdJ | dkslJ qZ|jddd |j
D ]}| dksJ | dksJ qwd S )Nc                 S   rG   rH   r   r   r   r   r   r   m   rI   z@test_rectangle_selector_set_props_handle_props.<locals>.onselectTb皙?	facecoloralpha      ?r_   rK   r6   handle_propsr   r   r.   r   r   r   r
   rM   r   r333333?black)markeredgecolorr_   )r   r#   r$   r9   r   _selection_artistget_facecolormcolorsto_rgba	set_props_handles_artistsget_markeredgecolor	get_alphaset_handle_propsr   r   r)   artistr   r   r   .test_rectangle_selector_set_props_handle_propsj   s*   



rs   c                  C   s  t  } dd }tj| |dd}t|dddd |jd	ksJ |j}|d
 |d }}|d |d }}t||||| |j|d ||d |fksJJ |j}|d
 |d |d |d  d  }}|d |}}t||||| |j|d ||d |d fksJ |j}|d |d |d |d  d  }}|d |}}t||||| |j||d
 |d |d fksJ |j}|d |d }}|d |d }}t||||| |j||d
 ||d fksJ d S )Nc                 S   rG   rH   r   r   r   r   r   r      rI   z'test_rectangle_resize.<locals>.onselectTrK   r   r.   r
   rM   )        r!         $@      ^@r            rQ   rF   rP   )r   r#   r$   rB   extents)r   r   r)   r{   r   r   r?   r@   r   r   r   test_rectangle_resize   s2   &"&""r|   use_default_statec                 C   s  t  }dd }tj||dd}t|dddd |jd	ksJ | r)|jd
 d }nd}|j}|d |d }}d\}}	|| ||	 }
}t||||
|| |j|d | |
|d |	 |fks`J |j}|d |d |d |d  d  }}d}|| |}
}t||||
|| |j|d | |
|d |d fksJ |j}|d |d |d |d  d  }}d}|| |}
}t||||
|| |j|d | |
|d |d fksJ |j}|d |d |d |d  d  }}d}|| |}
}t||||
|| |j|
|d | |d |d fksJ |j}|d |d |d |d  d  }}d}|| |}
}t||||
|| |j|
|d | |d |d fksNJ |j}|d |d }}d\}}	|| ||	 }
}t||||
|| |j|
|d | ||d |	 fksJ d S )Nc                 S   rG   rH   r   r   r   r   r   r      rI   z.test_rectangle_resize_center.<locals>.onselectTrt   F   rO   }      )     Q@     @_@     @P@g     @`@rX   controlr   rx   r.   ry   r   rz   r.   rQ   rF   rP   r   r#   r$   rB   r{   _default_stateaddr}   r   r   r)   rA   r{   r   r   xdiffydiffr?   r@   r   r   r   test_rectangle_resize_center   sr   
&
&
&&r   c                 C   s  t  }dd }tj||dd}t|dddd |jd	ksJ | r)|jd
 d }nd}|j}|d |d }}d\}}	|| ||	 }
}t||||
|| |j|d |
|d |d | fks`J |j}|d |d |d |d  d  }}d}|| |}
}t||||
|| |j|d |
|d |d | fksJ |j}|d |d |d |d  d  }}d}|| |}
}t||||
|| |j|d |
|d |d | fksJ |j}|d |d |d |d  d  }}d}|| |}
}t||||
|| |j|
|d |d |d | fksJ |j}|d |d |d |d  d  }}d}|| |}
}t||||
|| |j|
|d |d |d | fksNJ |j}|d |d }}d\}}	|| ||	 }
}t||||
|| |j|d |	 |d ||d fksJ d S )Nc                 S   rG   rH   r   r   r   r   r   r      rI   z.test_rectangle_resize_square.<locals>.onselectTrt   r~   rO   rM   s   r   rw   r   g     \@squareshiftr   rx   r   r   rz   r.   r   rQ   r   r   r   r   r   r   r   test_rectangle_resize_square   sr   
&
&
&&r   c            
      C   s.  t  } dd }tj| |dd}t|dddd |jd	 |jd
 |jdks*J |j}|d |d }}d\}}|| || }}	t|||||	 |j|d | ||d | |d | fksbJ |j}|d |d |d |d  d  }}d}|| |}}	t|||||	 |j|d | ||d | |d | fksJ |j}|d |d |d |d  d  }}d}|| |}}	t|||||	 |j|d | ||d | |d | fksJ |j}|d |d |d |d  d  }}d}|| |}}	t|||||	 |j||d | |d | |d | fksJ |j}|d |d |d |d  d  }}d}|| |}}	t|||||	 |j||d | |d | |d | fks\J |j}|d |d }}d\}}|| || }}	t|||||	 |j|d | |d | |	|d | fksJ d S )Nc                 S   rG   rH   r   r   r   r   r   r   C  rI   z5test_rectangle_resize_square_center.<locals>.onselectTrt   r~   rO   rM   r   r   rX   r   r   rx   r   r   rz   r.   r   ry   r   r   )r   r#   r$   rB   r   r   r{   )
r   r   r)   r{   r   r   r   r   r?   r@   r   r   r   #test_rectangle_resize_square_center@  sn   
&
&
&&r   c                  C   s  t  } dd }tj| |ddd}d|_t|ddddd	d
 t|ddddd t|ddddd |jdks6J t|dddddd
 t|ddddd t|ddddd t|ddddd t|dddddd
 |jdkslJ t|dddddd
 t|ddddd t|ddddd t|ddddd t|dddddd
 dd |jD }|g dksJ t|dddddd
 t|ddddd t|ddddd t|ddddd t|dddddd
 dd |jD }|g dksJ |jjdksJ t|jd d d!f d"dg d S )#z'For ellipse, test out the key modifiersc                 S   rG   rH   r   r   r   r   r   r     rI   ztest_ellipse.<locals>.onselectr.   T)r   
grab_rangerK   r
      r
   r   r   r    )r   r   r   r=   r   rE   r   r   )rM      rM   r   r;   r
   r   r   r>   )rD   r   rD   r   r   rR   c                 S      g | ]}t |qS r   int.0er   r   r   
<listcomp>      z test_ellipse.<locals>.<listcomp>)r.   rR   r.   "   z
ctrl+shiftr   c                 S   r   r   r   r   r   r   r   r     r   )r~      r~   r   )rz   I   Nr   r   )r   r#   EllipseSelectorr{   r   r&   shaper   )r   r   r)   r{   r   r   r   test_ellipse  s\    r   c                  C   s\  t  } dd }tj| |dddddd}d	|_|jd
ksJ |jd	ks%J |jdks,J |jd	ks3J t|dddd t|dddd t|dddd |jdksRJ t|dddd t|dddd t|dddd |jdksqJ t|dddd t|dddd t|dddd |jdksJ t|j	j
d  dsJ t|j	j
d  dsJ d S )Nc                 S   rG   rH   r   r   r   r   r   r     rI   z(test_rectangle_handles.<locals>.onselectr.   Trd   r[   )markerfacecolorrg   )r   r   rK   rc   r   ))r
   r   r   r
   )r
   r
   r   r   ))r
   r   r   r   )r   r
   r   r   r   r
   r   r   r   rM   r   )rM   r   rM   r      )l      r   r   )r.   r
   r.   r
   r   )r   r#   r$   r{   cornersedge_centersr   rj   
same_color_corner_handlesartistsget_markerfacecolorrn   r   r   r)   r   r   r   test_rectangle_handles  s@   r   rK   c                    s   t    fdd}tj || d}t|ddddd t|d	d
ddd t|dd
ddd |jjs2J |jdks9J d|j_t|ddddd t|ddddd |jjsUJ d S )Nc                    
   d _ d S NTr   vminvmaxr   r   r   r        
z2test_rectangle_selector_onselect.<locals>.onselectrt   r   r
   n   r   r   r   r   rM   r   r!        b@g     [@rw   Fr.   r   r#   r$   r   r   r   r{   rK   r   r)   r   r   r    test_rectangle_selector_onselect  s   r   ignore_event_outsidec                    s   t    fdd}tj || d}t|ddddd t|d	d
ddd t|dd
ddd |jjs2J |jdks9J d _t|dd
d
dd t|d	dddd t|ddddd | rg jr^J |jdkseJ d S  jslJ |jdkssJ d S )Nc                    r   r   r   r   r   r   r   r     r   z8test_rectangle_selector_ignore_outside.<locals>.onselect)r   r   r
   r   r   r   r   r   rM   r   r   F   )r         d@r   r   r   )r   r   r)   r   r   r   &test_rectangle_selector_ignore_outside  s&   

r   c                     s   t    fdd} fdd}d|v r||d< tj |g| R i |}t|ddddd	 t|d
dddd	 t|ddddd	  jsDJ d|v rM jsOJ d S d S )Nc                    s"   d _ | dks	J |dksJ d S r	   r   r   r   r   r   r   $  s   zcheck_span.<locals>.onselectc                    s"   | dksJ |dksJ d _ d S )Nr
   r   T_got_on_mover   r   r   r   r   )  s   
zcheck_span.<locals>.onmoveonmove_callbackr   r
   r   r   r   r   r   r   )r   r#   SpanSelectorr   r   r   )argsr(   r   r   r)   r   r   r   
check_span!  s   

r   c                   C   s>   t dddd t dddd t dtddd	 t ddd
 d S )N
horizontalr.   T)minspanr,   verticalr   )r   r   r3   r5   rt   )r   r9   r   r   r   r   test_span_selector=  s   r   c                    s   t    fdd}tj |d| d}t|ddddd t|d	d
ddd t|dd
ddd |jjs3J |jdks:J d|j_t|ddddd t|ddddd |jjsVJ d S )Nc                    r   r   r   r   r   r   r   r   I  r   z-test_span_selector_onselect.<locals>.onselectr   rt   r   r
   r   r   r   r   r   )r
   r   Fr.   )r   r#   r   r   r   r   r{   r   r   r   r   test_span_selector_onselectD  s   
r   c                    s  t    fdd} fdd}tj |d|| d}t|dddd	d
 t|dddd	d
 t|dddd	d
  js9J  js>J |jdksEJ d _d _t|dddd	d
 t|dddd	d
 t|dddd	d
 | r{ jrmJ  jrrJ |jdksyJ d S  jsJ  jsJ |jdksJ d S )Nc                    r   r   r   r   r   r   r   r   b  r   z3test_span_selector_ignore_outside.<locals>.onselectc                    r   r   r   r   r   r   r   r   e  r   z1test_span_selector_ignore_outside.<locals>.onmover   )r   r   r   r
   r   r   r   r   r   )r
   r   Fr   r   )r   r   )r   r#   r   r   r   r   r{   )r   r   r   r)   r   r   r   !test_span_selector_ignore_outside_  s2   






r   rL   c                 C   s  t  }dd }tj||dd| d}t|ddddd	 t|d
dddd	 t|ddddd	 |jdks3J t|ddddd	 t|d
dddd	 t|ddddd	 | rX|jdksWJ n|jdks_J t|ddddd	 t|d
dddd	 t|ddddd	 |jdksJ d S )Nc                  W   rG   rH   r   r   r   r   r   r     rI   z)test_span_selector_drag.<locals>.onselectr   TrJ   r   r.   r   r   r   r
   rM   r   r.   r
   rP   rQ   rR   )rF   r   )rP   rR   rS   rT   rU   )rS   rT   )r   r#   r   r   r{   )rL   r   r   r)   r   r   r   test_span_selector_drag  s&   r   c                  C   s   t  } dd }tj| |ddd}|jdksJ |jjdksJ tt t| |d}W d    n1 s6w   Y  d|_|jdksEJ |jjdksMJ tt d|_W d    d S 1 saw   Y  d S )	Nc                  W   rG   rH   r   r   r   r   r   r     rI   z.test_span_selector_direction.<locals>.onselectr   Trt   invalid_directionr   invalid_string)r   r#   r   	direction_edge_handlesr7   raises
ValueErrorr   r   r   r   test_span_selector_direction  s   "r   c               	   C   s  t  } dd }tj| |ddtdddtdd	d
}t|ddddd t|ddddd t|ddddd |j}| tjddd	ksDJ |j	ddd | tjddd	ksXJ |j
D ]}| dkseJ | dksmJ q[|jddd |j
D ]}| dksJ | dksJ qxd S )Nc                 S   rG   rH   r   r   r   r   r   r     rI   z;test_span_selector_set_props_handle_props.<locals>.onselectr   Tr[   r\   r]   r`   ra   rb   r   r   r.   r   r   r   r
   rM   r   rd   re   colorr_   )r   r#   r   r9   r   rh   ri   rj   rk   rl   rm   	get_colorro   rp   rq   r   r   r   )test_span_selector_set_props_handle_props  s*   


r   selectorspan	rectanglec                 C   sR  t  }dd }t||dd}| dkrtj}d|d< ntj}|di |}t|dd	d	d
d t|dddd
d t|dddd
d t|dddd
d t|dddd
d |jrVJ t  }d|d< |di |}|jsiJ t|dd	d	d
d t|dddd
d t|dddd
d t|dddd
d t|dddd
d |jsJ t|ddd |jrJ d S )Nc                  W   rG   rH   r   r   r   r   r   r     rI   z%test_selector_clear.<locals>.onselectT)r   r   rK   r   r   r   r   r.   r   r   r   r
   rM   r   r   r   r;   escaper<   r   )r   r9   r#   r   r$   r   _selection_completedr   )r   r   r   r(   Selectorr)   r   r   r   test_selector_clear  s4   



r   c                 C   s   t  }dd }| dkrtj||dddd}ntj||dd}t|dd	d	d
d t|dddd
d t|dddd
d |js>J |jsCJ | dkrN|jdksNJ |  |jrWJ |jr\J t|dd	d	d
d t|dddd
d t|dddd
d |js|J |jsJ | dkr|jdksJ d S d S )Nc                  W   rG   rH   r   r   r   r   r   r     rI   z,test_selector_clear_method.<locals>.onselectr   r   T)rK   r   rt   r   r.   r   r   r   r
   rM   r   r   rN   )r.   rN   )	r   r#   r   r$   r   r   visibler{   clear)r   r   r   r)   r   r   r   test_selector_clear_method  s6   






r   c                  C   s   t  } g d}tj| |ddd}|jD ]}| rJ | r!J q|d |d |jD ]}| s7J | s=J q/|j|ksEJ d S )N)rF   rE   rN   r   F)r,   T)	r   r#   ToolLineHandlesr   get_animatedget_visibleset_visibleset_animated	positions)r   r   tool_line_handlerr   r   r   r   test_tool_line_handle&  s   




r   r   )r   r   c                 C   s2  t dd\}}|ddgddg |jj  | }| }tj	|t
| dd}| |ks1J | |ks9J | dkr?|n|}|jjt|ksKJ dd	g}d
dg}|}	t|d|d |d dd t|d|d |d dd | |kswJ | |ksJ | dkrdnd}
||
 |	|
 g}|jj|ksJ d S )Nr   r.   rF   rE   Trt   r   g      %@g      '@      r   r   r   r   )pltsubplotsplotfigurecanvasdraw
get_xbound
get_yboundr#   r   printr   r   listr   )r   figr   x_boundy_boundr)   bound
press_data	move_datarelease_dataindexhandle_positionsr   r   r   test_span_selector_bound<  s(   r  c                     sj   t    fdd}tj |fi | }t|ddddd t|ddddd t|d	d
d
dd  js3J d S )Nc                    s   d _ | g dksJ d S )NT))r
   r
   )r   r   )r   r   r   vertsr   r   r   r   \  s   z&check_lasso_selector.<locals>.onselectr   r
   r   r   r   r   r   r   )r   r#   LassoSelectorr   r   r'   r   r   r   check_lasso_selectorY  s   r  c                   C   s(   t   t dtddd t ddd d S )NFred)r   )r,   r6   Tr   r-   )r  r9   r   r   r   r   test_lasso_selectorh  s   r  c                  C   sb   t  } t| dd}| g dksJ |d | g dks#J |dd }|| d S )N)ar[   c)TFTr   )FFTc                   S   rG   rH   r   r   r   r   r   <lambda>u  s    z#test_CheckButtons.<locals>.<lambda>)r   r#   CheckButtons
get_status
set_active
on_clicked
disconnect)r   checkcidr   r   r   test_CheckButtonsn  s   
r  toolbar)r    toolbar2toolmanagerc                 C   s   t tjd|  ddlm} | }| }t }t|d}|	| |
| |jdks.J t|d |d |jdks?J |jdksFJ ||j |  |jdksWJ t|d t|d	d
d t|d	dd |jdksqJ d S )Nr  r   )Mock _clickzx**2r   rz   	_keypress+r<   5rx   )r9   __setitem__r   rcParamsunittest.mockr  r   r#   TextBox	on_submiton_text_changetextr   set_val
call_countbegin_typingstop_typing)r  r  submit_eventtext_change_eventr   r)   r   r   r   test_TextBoxy  s(   




r0  zcheck_radio_buttons.pngmpl20)styleremove_textc                  C   sV   dt jd< t  t jdd t g d} t g d}t| d t|dd	 d S )
N   ztext.kerning_factorre   )left)皙?ffffff?333333?r8  )r6  r\   r8  r8  )zRadio 1zRadio 2zRadio 3)zCheck 1zCheck 2zCheck 3)FTT)r   r$  r   subplots_adjustaxesr#   RadioButtonsr  )rax1rax2r   r   r   test_check_radio_buttons_image  s   
r>  z check_bunch_of_radio_buttons.pngc                  C   s   t g d} t| d d S )N)r6  皙?r8  r7  )B1B2B3B4B5B6B7B8B9B10B11B12B13B14B15)r   r:  r#   r;  )raxr   r   r   !test_check_bunch_of_radio_buttons  s   rP  c                  C   s   t  \} }tt tj|ddddd W d    n1 s w   Y  tt tj|ddddd W d    d S 1 s@w   Y  d S )Nr  ru         8@rv   )r   labelvalminvalmax	slidermin)r   rR  rS  rT  	slidermax)r   r   r7   r   r   r#   Slider)r   r   r   r   r   'test_slider_slidermin_slidermax_invalid  s   "rX  c                  C   sp   t  \} }tj|ddddd}tj|dddd|d}|j|jks#J tj|dddd|d	}|j|jks6J d S )
Nr  ru   rQ  g      @r   rR  rS  rT  valinit      ?)r   rR  rS  rT  rZ  rU  rv   )r   rR  rS  rT  rZ  rV  r   r   r#   rW  val)r   r   slider_sliderr   r   r   test_slider_slidermin_slidermax  s   r`  c                  C   sX   t  \} }tj|ddddd}|j|jksJ tj|ddddd}|j|jks*J d S )Nr  ru   rQ  g      $rY  g      9@)r   r   r#   rW  r]  rS  rT  r   r   r_  r   r   r   test_slider_valmin_valmax  s   rb  c                  C   s\   t  \} }tj|dddddd}|jdksJ tj|ddddg dd}|jd	ks,J d S )
Nr  ru   rQ  g&@r   )r   rR  rS  rT  rZ  valstepr   )r   r         @g333333@rd  r\  ra  r   r   r   test_slider_valstep_snapping  s   re  c                  C   s   t  \} }tj|dddddd}|d |jdksJ |j |j	
 }t|jg d t  \} }tj|ddddd	d}|d |jdksMJ |j |j	
 }t|jg d
 d S )Nr  r         r   )r   rR  rS  rT  rZ  orientationr.   )r         ?竪?r`   r   )ri  r   r`   rj  )r   r   r#   rW  r*  r]  polyget_extentstransformed	transAxesinvertedr   bounds)r   r   r_  boxr   r   r   test_slider_horizontal_vertical  s    

rr  c                  C   sD   t  \} }tj|ddddd}|d |  |jdks J d S )Nr  r   r   r`   rY        ?)r   r   r#   rW  r*  resetr]  ra  r   r   r   test_slider_reset  s
   
ru  rh  r   r   c                    sJ   dkr	g d}ng d}t  \}}tj|ddd ddgd	}|j |j }t	|
  | g d
 t	|jd  fdd}|d t	|jd t	||d |j |j }t	|
  | g d |d t	|jd t	||d |d t	|jd t	||d |  t	|jd t	||d d S )Nr   )r   r   rx   rz   )r   r   rz   rx   r  ru   r[  r?  (\?)r   rR  rS  rT  rh  rZ  )r?  ri  rv  rs  )r?  rv  c                    s(    dkrdd | j D S dd | j D S )Nr   c                 S      g | ]}|  d  qS r   )	get_ydatar   hr   r   r   r         z?test_range_slider.<locals>.handle_positions.<locals>.<listcomp>c                 S   rw  rx  )	get_xdatarz  r   r   r   r     r|  )_handles)r_  rh  r   r   r    s   z+test_range_slider.<locals>.handle_positions)r\   333333?)r\   ri  r  rs  )r\   r?  )r?  r\   )r.   )r   r   )r   r   r#   RangeSliderrk  rl  rm  rn  ro  r   
get_pointsflattenr]  r*  rt  )rh  idxr   r   r_  rq  r  r   r  r   test_range_slider  s4   




r  c                    sd   t   d _ fdd}t |}| D ]\}}t||fi | q j|ks)J  j|ks0J dS )a  
    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`
    r   c                         j d7  _ |  _d S Nr   _selections_count_current_resultverticesr   r   r   r   @     
z(check_polygon_selector.<locals>.onselectN)r   r  r#   PolygonSelectorr   r  )event_sequenceexpected_resultselections_countr   r)   etype
event_argsr   r   r   check_polygon_selector*  s   r  c                 C   s.   dt | |dfdt | |dfdt | |dfgS )Nr   r   r   r   r9   r   r   r   r   polygon_place_vertexM  s   r  c                 C   s2   dt | |dfdt | |ddfdt | |ddfgS )Nr   r   r   rx   r   r   r  r   r   r   r   polygon_remove_vertexS  s   r  c                  C   s  g d} t ddt dd t dd t dd }t|| d g 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g t dd t dd }t|| d g 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g t dd t dd }t|| d g d} 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g }t|| d g d} 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g }t|| d g 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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gt dd t dd t dd t dd }t|| d g d} t ddt dd dtddfdtddfg t dd t dd t dd t dd }t|| d d S )N)rN   rN   r   rN   rN   r   rN   r   r   ))rD   rN   r  r  r;   r   r<   r   r   r   rD   r   r>   ))rN   rD   )r   rD   r  r   r
   r   rz   ))rD   rD   )rS   rD   )rD   rS   r   r   )r  r  r9   )r  r  r   r   r   test_polygon_selectorY  s   	
	

r  c                     s>  t   d _ fdd} tj | tdddtddd	}td
d
tdd
 td
d td
d
 }|D ]\}}t||fi | q2|j}| dksKJ |	 dksSJ |j
ddd | dksbJ |	 dksjJ |jD ]}| dkswJ |	 dksJ qm|jddd |jD ]}| dksJ |	 dksJ qd S )Nr   c                    r  r  r  r  r   r   r   r     r  z>test_polygon_selector_set_props_handle_props.<locals>.onselectr[   r\   r   r`   ra   )r6   rc   rN   r   rd   re   )r   r  r#   r  r9   r  r   rh   r   ro   rl   rm   rp   )r   r)   r  r  r  rr   r   r   r   ,test_polygon_selector_set_props_handle_props  s<   


r  zhorizOn, vertOn))TT)TF)FTc           	      C   s  t jddd\}\}}}tj|j||fd| |d}|r$t|jdks$J | r/t|jdks/J t|ddd	}|	| |jD ]
}|
 d
ksHJ q>|jD ]
}| dksVJ qLt|ddd	}|	| |jD ]
}|
 d
kspJ qf|jD ]
}| dks~J qtd S )Nrx   T)sharexF)r,   horizOnvertOnrz   r`   ri  r   )r`   r`   )ri  ri  rs  )r   r   r#   MultiCursorr   lenvlineshlinesr   r   r}  ry  )	r  r  r   ax1ax2ax3multieventlr   r   r   test_MultiCursor  s*   





r  c                 C   s6   |   }|  }dd }tj||ddid}d|_d S )Nc                 S   rG   rH   r   r	  r   r   r   r     rI   z&test_rect_visibility.<locals>.onselectr   Fr5   )r\   g?re   r7  )r   r#   r$   r{   )fig_testfig_refax_test_r   r)   r   r   r   test_rect_visibility  s   
r  r  )r   rz   rx   c                 C   sp   g d}t |d  t |d  t |d  t |d  g}|| t dd |tdd t|g }t||d d S )Nr  r   r   rz      )r  insertappendr  sumr  )r  r
  r  r   r   r   test_polygon_selector_remove  s   




r  c                  C   s\   g d} t | d  t | d   t | d   t | d   t| d   }t|| dd  d d S )Nr  r   r   rz   )r  r  r  )r
  r  r   r   r   (test_polygon_selector_remove_first_point&  s   




r  c                  C   s   g d} t | d  t | d   t | d   t | d   t| d   t| d   t | d   }t }dd }t||}|D ]\}}t||fi | q=|j| dd ksVJ d S )Nr  r   r   rz   c                 S   rG   rH   r   r  r   r   r   r   ?  rI   z.test_polygon_selector_redraw.<locals>.onselect)r  r  r   r#   r  r   r
  )r
  r  r   r   r)   r  r  r   r   r   test_polygon_selector_redraw0  s(   






	r  rH   )Ematplotlib._api.deprecationr   matplotlib.colorscolorsrj   matplotlib.widgetsr#   matplotlib.pyplotpyplotr   matplotlib.testing.decoratorsr   r   matplotlib.testing.widgetsr   r   r   numpy.testingr   r7   r*   r:   rB   markparametrizerZ   rs   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r0  r>  rP  rX  r`  rb  re  rr  ru  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   <module>   s    

 (
H
HD7-



%
#
(
"

!


,#`%
$


