
    G8c                     D    d Z ddlmZ ddlmZ d Zd Zd	dZd	dZ	d
dZ
y)z|
========================
Widget testing utilities
========================

See also :mod:`matplotlib.tests.test_widgets`.
    N)mockc                      t        j                  dd      \  } }|j                  ddgddg       |j                  d       |j                  j
                  j                          |S )z"Create a plot and return its axes.   r      g      ?)pltsubplotsplot
set_aspectfigurecanvasdraw)figaxs     </usr/lib/python3/dist-packages/matplotlib/testing/widgets.pyget_axr      sS    ll1a GCGGQHq#hMM#III    c                       y N )argskwargss     r   noopr      s    r   c                 8   t        j                         }||_        | j                  j	                  ||f||fg      d   \  |_        |_        ||c|_        |_        | |_	        | 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%   events          r   
mock_eventr)      s    6 IIKEEL||--u~05u~/? @@ACEGUW$eEKEL99##ELEIEJENEJLr   c                 `    t        | j                  |||||      }t        | |      } ||       y)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(   funcs	            r   do_eventr/   C   s/    ( twwuc4@E4DKr   c                     |t        | d|d   |d   d|       t        | d|d   |d   d       t        | d|d   |d   d       t        | d	|d   |d   d       |t        | d
|d   |d   d|       yy)a|  
    Helper to simulate a mouse drag operation.

    Parameters
    ----------
    tool : `matplotlib.widgets.Widget`
    start : [float, float]
        Starting point in data coordinates.
    end : [float, float]
        End point in data coordinates.
    key : None or str
         An optional key that is pressed during the whole operation
         (see also `.KeyEvent`).
    Non_key_pressr   r   )r!   r"   r   r$   press)r!   r"   r   onmovereleaseon_key_release)r/   )r,   startendr$   s       r   click_and_dragr8   \   s     ~U1XU1Xs	$ T7%(%(1ET83q6QBT9CF#a&C
's1vSVs	$ r   )r   r   r   Nr   r   )__doc__matplotlib.pyplotpyplotr   unittestr   r   r   r)   r/   r8   r   r   r   <module>r=      s,      	&R2$r   