o
    g	                     @   s<   d Z ddlmZ ddlmZ dd ZdddZdd	d
ZdS )z
========================
Widget testing utilities
========================
Functions that are useful for testing widgets.
See also matplotlib.tests.test_widgets
    N)mockc                  C   s>   t dd\} }|ddgddg |d |jj  |S )z!Creates plot and returns its axes   r      g      ?)pltsubplotsplot
set_aspectfigurecanvasdraw)figax r   X/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/matplotlib/testing/widgets.pyget_ax   s
   
r   r   c                 C   sl   t  }||_| j||f||fgd \|_|_|||_|_| |_	| j
j|_||_||_d|_d|_|S )a  
    Create a mock event that can stand in for `.Event` and its subclasses.

    This event is intended to be used in tests where it can be passed into
    event handling functions.

    Parameters
    ----------
    ax : `matplotlib.axes.Axes`
        The axes the event will be in.
    xdata : int
        x coord of mouse in data coords.
    ydata : int
        y coord of mouse in data coords.
    button : None or `MouseButton` or {'up', 'down'}
        The mouse button pressed in this event (see also `.MouseEvent`).
    key : None or str
        The key pressed when the mouse event triggered (see also `.KeyEvent`).
    step : int
        Number of scroll steps (positive for 'up', negative for 'down').

    Returns
    -------
    event
        A `.Event`\-like Mock instance.
    r   NCustom)r   Mockbutton	transData	transformxyxdataydatainaxesr	   r
   keystepguiEventname)r   r   r   r   r   r   eventr   r   r   
mock_event   s   
r    c           	      C   s*   t | j|||||}t| |}|| dS )aW  
    Trigger an event on the given tool.

    Parameters
    ----------
    tool : matplotlib.widgets.RectangleSelector
    etype : str
        The event to trigger.
    xdata : int
        x coord of mouse in data coords.
    ydata : int
        y coord of mouse in data coords.
    button : None or `MouseButton` or {'up', 'down'}
        The mouse button pressed in this event (see also `.MouseEvent`).
    key : None or str
        The key pressed when the mouse event triggered (see also `.KeyEvent`).
    step : int
        Number of scroll steps (positive for 'up', negative for 'down').
    N)r    r   getattr)	tooletyper   r   r   r   r   r   funcr   r   r   do_event>   s   
r%   )r   r   r   Nr   )	__doc__matplotlib.pyplotpyplotr   unittestr   r   r    r%   r   r   r   r   <module>   s    
	)