a
    ضa)                     @   s  d Z ddlZddlZddlmZ ddlmZ ddlZddlm	Z	 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mZ d	d
 Ze
jjdddd Zdd Z edgdddd Z!dd Z"dd Z#dd Z$dd Z%edgdddd  Z&ed!d"d#d$ Z'd%d& Z(d'd( Z)ed)gdd*d+d,d- Z*ed.gddd/d0 Z+d1d2 Z,ed3gd4d5d6d7 Z-d8d9 Z.e d:d; Z/e
j0d<d=d>ged!d"d?d@ Z1dAdB Z2dCdD Z3e dEdF Z4dGdH Z5dS )Iz%
Tests specific to the lines module.
    N)SimpleNamespace)cycler)assert_array_equal)MarkerStyle)Path)image_comparisoncheck_figures_equalc                  C   sH   d\} }t ddgt ddg }}d}tt| ||||dg dS )zTest a problematic case.)i)  i  g     H@g     W@g     @g(\@r   N)nparrayr   mlinesZsegment_hits)ZcxcyxyZradius r   k/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/site-packages/matplotlib/tests/test_lines.pytest_segment_hits   s    r      )Zrerunsc            
      C   s   d} t dd| }t jj| d}t }t }t||}|	d t
tj|jjddd}|| t
tj|jjddd}|| }d}	||	k sJ d	S )
ac  
    GitHub issue #1256 identified a bug in Line.draw method

    Despite visibility attribute set to False, the draw method was not
    returning early enough and some pre-rendering code was executed
    though not necessary.

    Consequence was an excessive draw time for invisible Line instances
    holding a large number of points (Npts> 10**6)
    i r      )sizeFr   )numberrepeat   N)r	   linspacerandomnormalpltfigureZsubplotr   Line2DZset_visiblemintimeitr   canvasdrawZadd_line)
Nr   r   figaxlZ	t_no_lineZt_invisible_lineZslowdown_factorZslowdown_thresholdr   r   r   test_invisible_Line_rendering!   s    

r&   c                  C   s6   t  \} }tjd |jtjdddgd d S Nr         r   )r   r   )Z
linestylesr   subplotsr	   r   seedZcontourZrandnr#   r$   r   r   r   test_set_line_coll_dashM   s    r/   Zline_dashesT)remove_textc                  C   s$   t  \} }|jtdddd d S )N
   r*      	linestylelw)r   r,   plotranger.   r   r   r   test_line_dashesU   s    r8   c                  C   st   t  \} }|jtddd |jtddd |jtddd |jtddd |jtddd | j  d S )Nr1   none)colorrz.3)r   r   r   r   )r   r   r   r   r,   r6   r7   r    r!   r.   r   r   r   test_line_colors\   s    r=   c                  C   sD   t g g } tt | d W d    n1 s60    Y  d S NZfoobar)r   r   pytestraises
ValueErrorZ	set_colorliner   r   r   test_valid_colorsf   s    rD   c                  C   s6   t  \} }dD ]}|jtd|d q| j  d S )N)-Zsolidz--dashedz-.dashdot:dottedr1   )r4   r<   )r#   r$   lsr   r   r   test_linestyle_variantsl   s    rK   c                  C   sD   t g g } tt | d W d    n1 s60    Y  d S )NZaardvark)r   r   r?   r@   rA   Zset_linestylerB   r   r   r   test_valid_linestylest   s    rL   zdrawstyle_variants.pngc                  C   sP   t d\} }g d}t|j|D ](\}}|jtd|d |jddd q"d S )N   )defaultz	steps-mid	steps-prez
steps-postZstepsN  )Z	drawstyle)r   r   )ZxlimZylim)r   r,   zipflatr6   r7   set)r#   ZaxsZdssr$   Zdsr   r   r   test_drawstyle_variantsz   s
    rT   )Zpng)
extensionsc                 C   sT   |   }td}||d | |  }t dd}|j||||j d d S )NrP   g     @@        )Z	transform)add_subplotr	   aranger6   mtransformsZAffine2D	translateZ	transData)fig_reffig_testr$   r   tr   r   r   test_no_subslice_with_transform   s    
r^   c                  C   sD   t g g } tt | d W d    n1 s60    Y  d S r>   )r   r   r?   r@   rA   set_drawstylerB   r   r   r   test_valid_drawstyles   s    r`   c                  C   s   t ddt j d} t | }t \}}|| |\}|d t|	 j
dt|  d ksdJ |d t|	 j
t| ksJ d S )Nr   r   r1   rO   r   rN   )r	   r   pisinr   r,   r6   r_   lenget_pathvertices)r   r   r#   r$   rC   r   r   r   test_set_drawstyle   s    

"
rf   Zline_collection_dashesZmpl20)r0   stylec                  C   s6   t  \} }tjd |jtjdddgd d S r'   r+   r.   r   r   r   test_set_line_coll_dash_image   s    rh   zmarker_fill_styles.pngc                  C   s   t g ddddddtg dg} d}td	d	g}td
dg}t \}}ttjj	D ]^\}}ttjj
D ]H\}}	t| }
|j|d | || d|d   |d||	|	d|
|
dd qrq^|d
dg |ddg d S )Nr   r   r   gz#ff0000cmr   )r   r   r   Z
lightgreenr   r   	   r1         ?r   r(   r2   )	markerZ
markersizeZmarkerfacecoloralt	fillstylelabelZ	linewidthr:   ZmarkeredgecolorZmarkeredgewidthg      @   )	itertoolscycler	   r
   r   r,   	enumerater   r   Zfilled_markersZ
fillStylesnextr6   Zset_ylimZset_xlim)colorsZaltcolorr   r   r#   r$   jro   ifsr:   r   r   r   test_marker_fill_styles   s.     
r|   c                  C   sB   t jg dtddddd\} |  dks.J |  dks>J dS )z=Test that markerfacecolor does not override fillstyle='none'.r   r   r   or9   )rp   red)ro   ZmarkerfacecolorN)r   r6   r   Zget_fillstyleZget_markerfacecolor)r%   r   r   r   test_markerfacecolor_fillstyle   s
    r   Zscaled_linesrN   )rg   c            	      C   s   t dd} t \}}g d}ttjd }tt||D ]L\}\}}t dddD ]0}|j	| |t 
d d|  f||d	| qVq<d S )
Nr       )rF   rI   rG   zaxes.prop_cyclern   r1   2   g?r3   )r	   r   r   r,   r   
matplotlibZrcParamsrv   rQ   r6   Zones)	thr#   r$   Zlins_stylesr   ry   rJ   Zstyr5   r   r   r   test_lw_scaling   s    r   c                  C   sj   t g g } | tg ds$J | tdtjdgs@J | ddgtjgd  ddg rfJ d S )Nr   r   r   r   r   r2   d   r   r   )r   r   Z
_is_sortedr	   r
   nanrB   r   r   r   test_nan_is_sorted   s    r   c                 C   s:   |   ddgd |  jg dg ddddgd d S )Nr   r   z-ori   )r   r   r   r   	markevery)r,   stepr6   r\   r[   r   r   r   test_step_markers   s    r   parentr   axesc              
      s8  t jd t ddd}t jt|}d ddg dddgtd	d
dt t||dk ddg	}g d}|dkr|d d }|d d }fdd}fdd}nD|dkrt	ddj
t	ddj
 fdd} fdd}|D ]}	||||	d q|D ].}	t t|	tt}
||||
d qd S )N*   r   r         )r   r2   )r   r2      r2   r1   r   rn   333333?)r   g?)	Z11111111111111Z10001000100010Z00100001000010Z01000100000100Z10000000000001Z00000101010000Z01110001110110Z11011011011110Z01010011011101r   c                   s     tj| |d|d d S Nr~   ro   r   
add_artistr   r   r   r   r   )r\   r   r   add_test   s    z test_markevery.<locals>.add_testc                   s     tj| |d|d d S r   r   r   )r[   r   r   add_ref   s    ztest_markevery.<locals>.add_refr   r   c                   s   t  j| |d|d d S Nz-gDr   rw   r6   r   )axs_testr   r   r     s    c                   s   t  j| |d|d d S r   r   r   )axs_refr   r   r     s    r   )r	   r   r-   r   Zrandrc   slicerX   iterr,   rR   r
   listZastypeintbool)r\   r[   r   r   r   Z
cases_testZ	cases_refr   r   Zcasemer   )r   r   r[   r\   r   test_markevery   s0    r   c                  C   s`   t  } | tjddgddgddd tt | j	  W d    n1 sR0    Y  d S )Nr   r   r~   rn   r   )
r   r   r   r   r   r?   r@   rA   r    r!   )r#   r   r   r   .test_markevery_figure_line_unsupported_relsize  s     r   c                  C   s   t  \} }|jg dtdd\}| j  | dks>J |d | j  |td | j  tddgddgdd	gddggd
d}|jg dt|dd\}|jg d|dd\}t	| j
|j
 t	| j
|j
 d S )N)r   r   r   D)ro   sr~   g      g      ?rV   g       @T)closedr}      )ro   ms)r   r   r   )r   r,   r6   r   r    r!   Z
get_markerZ
set_markerr   r   re   )r#   r$   rC   Z	triangle1Zline2Zline3r   r   r   test_marker_as_markerstyle  s    



$r   c                 C   s8   |   jddgg dd |  jddgg dd d S )Nr   r   r   )dashes)r   r   r   r   r   r   )rW   r6   r   r   r   r   test_odd_dashes1  s    r   c                  C   s  t  \} }t| jjd | jjd d d}|jddgddgdd\}||\}}|r\J |jddgddgddd	\}||\}}|sJ t|d
 dg |jddgddgdd\}||\}}|rJ |	d ||\}}|sJ t|d
 dg d S )Nr      )r   r   r   r   T)pickerr(   )r   Z
pickradiusind)
r   r,   r   Zbboxwidthheightr6   containsr   Zset_pickradius)r#   r$   Zmouse_eventZl0foundindicesl1l2r   r   r   test_picking7  s$    
r   )6__doc__rt   r   typesr   r   Znumpyr	   Znumpy.testingr   r?   r   Zmatplotlib.lineslinesr   Zmatplotlib.markersr   Zmatplotlib.pathr   Zmatplotlib.pyplotZpyplotr   Zmatplotlib.transformsZ
transformsrY   Zmatplotlib.testing.decoratorsr   r   r   markZflakyr&   r/   r8   r=   rD   rK   rL   rT   r^   r`   rf   rh   r|   r   r   r   r   Zparametrizer   r   r   r   r   r   r   r   r   <module>   s`   

+









,
