B
    ·ôJd‰)  ã               @   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   úM/var/www/html/venv/lib/python3.7/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 s˜t‚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ÚdrawÚadd_lineÚAssertionError)
Ú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   )Ú
linestyles)r   Úsubplotsr	   r   ÚseedÚcontourÚrandn)r%   r&   r   r   r   Útest_set_line_coll_dashM   s    r0   Zline_dashesT)Úremove_textc              C   s$   t  ¡ \} }|jtdƒddd d S )Né
   )r   )r   r   é   )Ú	linestyleÚlw)r   r,   ÚplotÚrange)r%   r&   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 )Nr2   Únone)ÚcolorÚrz.3)r   r   r   r   )r   r   r   )r   r,   r6   r7   r    r!   )r%   r&   r   r   r   Útest_line_colors\   s    r<   c           	   C   s0   t  g g ¡} t t¡ |  d¡ W d Q R X d S )NÚfoobar)r   r   ÚpytestÚraisesÚ
ValueErrorZ	set_color)Úliner   r   r   Útest_valid_colorsf   s    rB   c              C   s:   t  ¡ \} }xdD ]}|jtdƒ|d qW | j ¡  d S )N)ú-Zsolidz--Údashedz-.Údashdotú:Údottedr2   )r4   )r   r,   r6   r7   r    r!   )r%   r&   Úlsr   r   r   Útest_linestyle_variantsl   s    
rI   c           	   C   s0   t  g g ¡} t t¡ |  d¡ W d Q R X d S )NZaardvark)r   r   r>   r?   r@   Zset_linestyle)rA   r   r   r   Útest_valid_linestylest   s    rJ   zdrawstyle_variants.pngc              C   s\   t  d¡\} }dddddd g}x8t|j|ƒD ](\}}|jtdƒ|d |jd	d	d
 q,W d S )Né   Údefaultz	steps-midz	steps-prez
steps-postZstepsiÐ  )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
    rP   )Zpng)Ú
extensionsc             C   sT   |   ¡ }t d¡}| |d |¡ |  ¡ }t ¡  dd¡}|j||||j d d S )NiÐ  g     @Ÿ@g        )Z	transform)Úadd_subplotr	   Úaranger6   ÚmtransformsZAffine2DÚ	translateZ	transData)Úfig_refÚfig_testr&   r   Útr   r   r   Útest_no_subslice_with_transform‡   s    
rY   c           	   C   s0   t  g g ¡} t t¡ |  d¡ W d Q R X d S )Nr=   )r   r   r>   r?   r@   Úset_drawstyle)rA   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sdt‚| d¡ t| 	¡ j
ƒt| ƒksˆt‚d S )Nr   r   r2   z	steps-prer   rL   )r	   r   ÚpiÚsinr   r,   r6   rZ   ÚlenÚget_pathÚverticesr#   )r   r   r%   r&   rA   r   r   r   Útest_set_drawstyle˜   s    

"
ra   Zline_collection_dashesZmpl20)r1   Ústylec              C   s6   t  ¡ \} }tj d¡ |jtj dd¡dgd d S )Nr   r)   r*   )r   )r   r   )r+   )r   r,   r	   r   r-   r.   r/   )r%   r&   r   r   r   Útest_set_line_coll_dash_image¥   s    rc   zmarker_fill_styles.pngc              C   sê   t  dddgdddddt dddg¡g¡} d}t ddg¡}t dd	g¡}t ¡ \}}xrttjj	ƒD ]b\}}xXttjj
ƒD ]H\}}	t| ƒ}
|j|d
 | || d|d   |d||	|	d|
|
dd qzW qdW | ddg¡ | ddg¡ d S )Nr   r   Úgz#ff0000ÚcÚmr   Z
lightgreené	   r2   g      à?r   r)   r3   )	Ú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&   Újrh   ÚiÚfsr:   r   r   r   Útest_marker_fill_styles¬   s*     ru   c              C   sD   t jdddgtddddd\} |  ¡ dks0t‚|  ¡ dks@t‚d	S )
z=Test that markerfacecolor does not override fillstyle='none'.r   r   r   Úor9   )ri   Úred)rh   ZmarkerfacecolorN)r   r6   r   Zget_fillstyler#   Zget_markerfacecolor)r'   r   r   r   Útest_markerfacecolor_fillstyleÈ   s    
rx   Zscaled_linesrL   )rb   c        	      C   s˜   t  dd¡} t ¡ \}}dddg}ttjd ƒ}xbtt||ƒƒD ]P\}\}}xBt  ddd¡D ]0}|j	| |t  
d	¡ d
|  f||dœ|—Ž q\W q@W d S )Nr   é    rD   rG   rE   zaxes.prop_cycleg      à?r2   é2   gš™™™™™¹?)r4   r5   )r	   r   r   r,   r   Ú
matplotlibZrcParamsro   rM   r6   Zones)	Úthr%   r&   Zlins_stylesr   rr   rH   Zstyr5   r   r   r   Útest_lw_scalingÐ   s    
r}   c              C   sl   t  g g ¡} |  t dddg¡¡s&t‚|  t dtjdg¡¡sBt‚|  ddgtjgd  ddg ¡rht‚d S )Nr   r   r   r3   éd   r   )r   r   Z
_is_sortedr	   r
   r#   Únan)rA   r   r   r   Útest_nan_is_sortedÛ   s    r€   c             C   s>   |   ¡  ddgd¡ |  ¡ jdddgdddgdddgd d S )Nr   r   z-or   )Ú	markevery)r,   Ústepr6   )rW   rV   r   r   r   Útest_step_markersâ   s    rƒ   Úparentr   Úaxesc          
      sP  t j d¡ t  ddd¡}t j t|ƒ¡}d dddddgdd	gtdd
dƒt  t|ƒ¡|dk ddg	}dddddddddg	}|dkr´|d d… }|d d… }‡fdd„}‡fdd„}nD|dkrøtˆ 	dd¡j
ƒ‰tˆ 	dd¡j
ƒ‰ ‡fd d„}‡ fd!d„}x|D ]}	||||	d" qþW x6|D ].}	t  t|	ƒ¡ t¡ t¡}
||||
d" qW d S )#Né*   r   r   é   é   )r   r3   r3   é   éÿÿÿÿr2   r   g      à?g333333Ó?)g333333Ó?gš™™™™™Ù?Z11111111111111Z10001000100010Z00100001000010Z01000100000100Z10000000000001Z00000101010000Z01110001110110Z11011011011110Z01010011011101r   éþÿÿÿc               s   ˆ   tj| |d|d¡ d S )Nrv   )rh   r   )Ú
add_artistr   r   )r   r   r   )rW   r   r   Úadd_testü   s    z test_markevery.<locals>.add_testc               s   ˆ   tj| |d|d¡ d S )Nrv   )rh   r   )rŒ   r   r   )r   r   r   )rV   r   r   Úadd_ref   s    ztest_markevery.<locals>.add_refr…   r   c               s   t ˆ ƒj| |d|d d S )Nz-gD)r   )rp   r6   )r   r   r   )Úaxs_testr   r   r     s    c               s   t ˆ ƒj| |d|d d S )Nz-gD)r   )rp   r6   )r   r   r   )Úaxs_refr   r   rŽ     s    )r   )r	   r   r-   r   Zrandr^   ÚslicerS   Úiterr,   rN   r
   ÚlistZastypeÚintÚbool)rW   rV   r„   r   r   Z
cases_testZ	cases_refr   rŽ   ÚcaseÚmer   )r   r   rV   rW   r   Útest_markeveryè   s2    


r˜   c           	   C   sL   t  ¡ } |  tjddgddgddd¡ t t¡ | j 	¡  W d Q R X d S )Nr   r   rv   g      à?)rh   r   )
r   r   rŒ   r   r   r>   r?   r@   r    r!   )r%   r   r   r   Ú.test_markevery_figure_line_unsupported_relsize  s     r™   c              C   sì   t  ¡ \} }|jdddgtdƒd\}| j ¡  | ¡ dks@t‚| d¡ | j ¡  | tdƒ¡ | j ¡  t	ddgd	dgd
dgd
d
ggdd}|jdddgt|ƒdd\}|jdddg|dd\}t
| ¡ j|jƒ t
| ¡ j|jƒ d S )Nr   rˆ   r   ÚD)rh   Úsrv   g      ð¿g      ð?g        g       @T)Úclosedr   é   )rh   Úmsr   )r   r,   r6   r   r    r!   Z
get_markerr#   Z
set_markerr   r   r`   )r%   r&   rA   Z	triangle1Úline2Úline3r   r   r   Útest_marker_as_markerstyle  s    



$r¡   c             C   sB   |   ¡ jddgdddgd |  ¡ jddgddddddgd d S )Nr   r   r   )Údashes)rR   r6   )rW   rV   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\t‚|jddgddgddd	\}| |¡\}}|sŽt‚t	|d
 dgƒ |jddgddgdd\}| |¡\}}|rÎt‚| 
d¡ | |¡\}}|sît‚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#   r   Zset_pickradius)r%   r&   Zmouse_eventZl0ÚfoundÚindicesÚl1Úl2r   r   r   Útest_picking7  s"    
r®   )6Ú__doc__rm   r   Útypesr   r   Únumpyr	   Znumpy.testingr   r>   r{   Zmatplotlib.linesÚlinesr   Zmatplotlib.markersr   Zmatplotlib.pathr   Zmatplotlib.pyplotZpyplotr   Zmatplotlib.transformsZ
transformsrT   Zmatplotlib.testing.decoratorsr   r   r   ÚmarkZflakyr(   r0   r8   r<   rB   rI   rJ   rP   rY   r[   ra   rc   ru   rx   r}   r€   rƒ   Zparametrizer˜   r™   r¡   r£   r®   r   r   r   r   Ú<module>   sL   
,
-