U
    Âmœdèn  ã                   @   s6  d dl m Z  d dlZd dl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lmZ d dlmZ ed	gƒd
d„ ƒZedgƒdd„ ƒZedgdddd„ ƒZ edgƒdd„ ƒZ!dd„ Z"edgƒdd„ ƒZ#dd„ Z$ej% &de'e(dfe'd d gd fe)d!d"fe)d#d$fe)d%d&fe)d'd(ff¡d)d*„ ƒZ*ed+gƒd,d-„ ƒZ+ed.gddd/d0„ ƒZ,ed1gƒd2d3„ ƒZ-d4d5„ Z.d6d7„ Z/ej%j&d8d9d:gd;d<gd=d>d?„ ƒZ0d@dA„ Z1dBdC„ Z2dDdE„ Z3dFdG„ Z4dHdI„ Z5dJdK„ Z6ej% &dLdMdNdOg¡ej% &dPdMdQdRdSdTg¡dUdV„ ƒƒZ7edWgƒdXdY„ ƒZ8edZgƒd[d\„ ƒZ9ed]gƒd^d_„ ƒZ:d`da„ Z;edbgƒdcdd„ ƒZ<dedf„ Z=edggƒdhdi„ ƒZ>ej% &djdkdldmg¡dndo„ ƒZ?dpdq„ Z@drds„ ZAdtdu„ ZBedvdw„ ƒZCedxdy„ ƒZDej% &dzd{d|d}g¡d~d„ ƒZEed€gƒdd‚„ ƒZFedƒgƒd„d…„ ƒZGd†d‡„ ZHdˆd‰„ ZIed{gdŠd‹dŒ„ ƒZJedgdddŽd„ ƒZKdd‘„ ZLd’d“„ ZMd”d•„ ZNd–d—„ ZOed{gdŠd˜d™„ ƒZPdšd›„ ZQdœd„ ZRdždŸ„ ZSej% &d d¡d¢gg¡d£d¤„ ƒZTd¥d¦„ ZUed§gddd¨d©„ ƒZVdªd«„ ZWd¬d­„ ZXd®d¯„ ZYed°gddd±d²„ ƒZZed³gddd´dµ„ ƒZ[ed¶d·„ ƒZ\dS )¸é    )ÚdatetimeN)Úassert_almost_equal)Ú
MouseEvent)ÚFontProperties)Úcheck_figures_equalÚimage_comparison)Úneeds_usetex)ÚTextZfont_stylesc            	         s^  ‡ ‡fdd„} ddl m‰ m‰ tjddtdd t ¡ \}}| d	d
d
dd}|jddd|d}| 	¡ dksnt
‚| ¡ d
ks~t
‚| ¡ d
ksŽt
‚| ¡ d
ksžt
‚| ¡ d
ks®t
‚| dd
d
dddd}|jddd|d | ddd
dddd}|jddd|d | d	d
d
dddd}|jddd|d | d	d
d
dd dd}|jd!d"d|d | g ¡ | g ¡ d S )#Nc                     s$   ˆ f | Ž}ˆ|t  ¡ d}ˆ |dS )N)Ú	directory)Úfname)ÚmplZget_data_path)ÚkwÚpropÚpath©r   Úfindfont© úS/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/matplotlib/tests/test_text.pyÚfind_matplotlib_font   s    
z.test_font_styles.<locals>.find_matplotlib_fontr   r   Úignorez>findfont: Font family \[u?'Foo'\] not found. Falling back to .zmatplotlib.font_manager)Úmodulez
sans-serifÚnormalé   )ÚfamilyÚstyleÚvariantÚsizezNormal Font)çš™™™™™¹?r   úaxes fraction)ÚxycoordsÚfontpropertieszDejaVu SansZFooÚboldiô  )r   r   r   ÚweightZstretchr   z	Bold Font)r   çš™™™™™É?z
sans serifÚitaliciî  zBold Italic Font)r   ç333333Ó?éÈ   z
Light Font)r   çš™™™™™Ù?éd   zCondensed Font)r   ç      à?)Úmatplotlib.font_managerr   r   ÚwarningsÚfilterwarningsÚUserWarningÚpltÚsubplotsÚannotateZget_fontnameÚAssertionErrorZget_fontstyleZget_fontvariantZ
get_weightZget_stretchÚ
set_xticksÚ
set_yticks)	r   ÚfigÚaxZnormal_fontÚaZ	bold_fontZbold_italic_fontZ
light_fontZcondensed_fontr   r   r   Útest_font_styles   s¨    üüüúüúüúüúü
r7   Ú	multilinec                  C   s’   t  ¡  t  ddd¡} |  d¡ t jddddddd	 t jddd
dddd	 t jddddddd	 t  dd¡ t  dd¡ |  g ¡ |  g ¡ d S )Né   zmultiline
text alignmentr#   r)   zTpTpTp
$M$
TpTpTpé   ÚcenterÚtop)r   ÚhaÚvazTpTpTp
$M^{M^{M^{M}}}$
TpTpTpgš™™™™™é?zTpTpTp
$M_{q_{q_{q}}}$
TpTpTpr   )	r.   ÚfigureÚsubplotÚ	set_titleÚtextZxlimZylimr2   r3   ©r5   r   r   r   Útest_multilinem   s>    
     ÿ    þ    þ
rD   Z
multiline2Zmpl20)r   c               	      sÎ  dt jd< t  ¡ \} }| ddg¡ | ddg¡ |jdddd	 d
dddddg}| j ¡ ‰ ‡ fdd„}d}t|ƒD ].\}}|j	d| d d||dd}|||ƒ qt|j	ddddd |jdddd	 t|ƒD ].\}}|j	d| d d||dd}|||ƒ qÎ|j	ddddd |jdddd	 t|ƒD ]0\}}|j	d| d d||dd}|||ƒ q(|j	ddddd |jdddd	 t|ƒD ]2\}}|j	d| d d||dd d!}|||ƒ q„|j	ddd"dd d S )#Né   útext.kerning_factorr   gffffffö?é   r)   ZC2r%   )ÚcolorZ	linewidthZLinez2 Lineg
 2 Lgz$\sum_i x $zhi $\sum_i x $
testztest
 $\sum_i x $z$\sum_i x $
 $\sum_i x $c                    sB   t jdddd| jd}| | ˆ ¡ | j ¡ ¡j¡ |  |¡ d S )N©r   r   r9   F)Úclip_onÚ	transform)	ÚmpatchesZ	RectangleÚ	transAxesZ
set_boundsÚget_window_extentZtransformedÚinvertedZboundsZ	add_patch)r5   ÚttÚr©Úrendererr   r   Údraw_box“   s    ÿ
ÿÿz!test_multiline2.<locals>.draw_boxÚleftr#   r   Úbottom©ÚhorizontalalignmentÚverticalalignmentg333333ó?zBottom align©rH   gÍÌÌÌÌÌô?r<   z	Top aligngÍÌÌÌÌÌü?ÚbaselinezBaseline alignr:   )rX   rY   ÚrotationzBot align, rot20)
r.   ÚrcParamsr/   Úset_xlimÚset_ylimZaxhlineÚcanvasÚget_rendererÚ	enumeraterB   )r4   r5   ÚstsrT   ZhoralÚnnÚstrP   r   rR   r   Útest_multiline2…   sP    
 ÿ
	ÿÿÿ ÿrf   zantialiased.pngc                  C   sB   dt jd< tjdd} | jdddddd	 | jdd
dddd	 d S )NTztext.antialiased)g      @ç      è?©Úfigsizer)   rg   Zantialiasedr;   rW   ç      Ð?z
$\sqrt{x}$)r   r]   r.   r?   rB   ©r4   r   r   r   Útest_antialiasing¹   s    
ÿÿrl   c               	   C   sH   t jjddd} t| dƒ}t j |¡}W 5 Q R X | d¡dksDt‚d S )NZ	HelveticaÚafm)ZfontextÚrbZVAVAVAVAVAVA)g     ¼@iÎ  )r   Úfont_managerr   ÚopenZ_afmZAFMZstring_width_heightr1   )ÚfnÚfhrm   r   r   r   Útest_afm_kerningÈ   s    rs   ztext_contains.pngc                  C   sê   t  ¡ } t  ¡ }td| jdddd ƒ}t ddd¡}t ddd¡}t ||¡\}}t jdddd	ddd
}| j 	¡  t
|j|jƒD ]f\}}t  ¡ j ||g¡\|_|_| |¡\}}	|r¸dnd}
|j ¡ }|j||d|
d |j |¡ q~d S )NÚbutton_press_eventr)   r9   rj   rg   é   r'   zhello worldr;   )r=   Úfontsizer\   ÚyellowÚredÚorZ   )r.   r?   Zaxesr   r`   ÚnpZlinspaceZmeshgridrB   ÚdrawÚzipZflatÚgcarM   rK   ÚxÚyÚcontainsZviewLimÚfrozenÚplotÚset)r4   r5   ZmeventZxsÚysÚtxtr~   r   r€   Ú_rH   Zvlr   r   r   Útest_containsÏ   s,         ÿ

r‡   c                  C   s`   t  ¡ \} }|jdddddid}| j ¡  td| jf|j d¡žŽ }| |¡d	i fks\t	‚d S )
NZhello)r'   r'   )ç333333ã?rˆ   Z
arrowstylez->)ÚxyÚxytextZ
arrowpropsrt   )r)   rˆ   F)
r.   r/   r0   r`   r{   r   Z	transDatarK   r€   r1   )r4   r5   ÚannÚeventr   r   r   Útest_annotation_containsî   s       ÿ
 ÿ
ÿr   zerr, xycoords, matchzUnknown return typez!Unknown coordinate type: \[0, 0\]Úfooz$'foo' is not a recognized coordinatezfoo barz('foo bar' is not a recognized coordinatez
offset fooz'xycoords cannot be an offset coordinatezaxes fooz'foo' is not a recognized unitc              	   C   sF   t  ¡ \}}tj| |d" |jddd|d |j ¡  W 5 Q R X d S )N©Úmatchr‰   rI   ©r)   r)   )rŠ   r   )r.   r/   ÚpytestÚraisesr0   r`   r{   )Úerrr   r   r4   r5   r   r   r   Útest_annotate_errorsú   s    	r•   Útitlesc                  C   sJ   t  ¡  t  ddd¡} | jddd | jddd |  g ¡ |  g ¡ d S )Nr9   z
left titlerU   ©Úloczright titleÚright)r.   r?   r@   rA   r2   r3   rC   r   r   r   Útest_titles	  s    
rš   Ztext_alignmentc                  C   sÊ   t  ¡  t  ddd¡} d}dD ]N}dD ]D}| j|d|d ||tdddd	d
 | j|dd||d |d7 }q&q|  ddgddg¡ |  ddgddg¡ |  ddg¡ |  ddg¡ |  g ¡ |  	g ¡ d S )Nr9   r   )r   ru   )r<   rV   r[   r;   r)   z TjÚroundZwheat)ÚboxstyleZ	facecolorÚalpha)r>   r\   Úbboxg      ð?z$\sum_{i=0}^{j}$)r>   r\   r   g      ø?)
r.   r?   r@   rB   Údictr‚   r^   r_   r2   r3   )r5   r~   r\   Z	alignmentr   r   r   Útest_alignment  s6        þ    ÿ
r    zaxes_titles.pngc                  C   sP   t  ¡  t  ddd¡} | jddddd | jddddd | jd	d	ddd d S )
Nr9   r;   r:   i¼  )r˜   rv   Z
fontweightrU   é   i  r™   )r.   r?   r@   rA   rC   r   r   r   Útest_axes_titles,  s
    r¢   c                  C   s  t  ¡ \} }|jddddd}| j ¡  | | jj¡}d}| ||f¡ | j ¡  | | jj¡}t|j	|j	ƒD ]\}}|| |ksnt
‚qn|jddddd}| j ¡  | | jj¡}d}||f|_| j ¡  | | jj¡}t|j	|j	ƒD ]\}}|| |ksæt
‚qæd S )NÚtestrI   úfigure pixels)rŠ   Ú
textcoordsé   )r.   r/   r0   r`   r{   rN   rS   Zset_positionr|   Úminr1   Zxyann)r4   r5   r‹   Zinit_posZ	shift_valZpost_posr6   Úbr   r   r   Útest_set_position6  s:       ÿ

   ÿ


r©   c                  C   sP  t  ¡ } |  ddd¡}| d¡ | ¡ }|j|j }| d¡ | ¡ }|j|j }| d¡ | ¡ }|j}| || ¡dks€t‚| |¡dks’t‚| |d|  ¡dks¬t‚| |d	|  ¡d
ksÆt‚| ||d  ¡dksàt‚| ||d  |d  ¡dkst‚| ||d  |d  ¡dks(t‚| ||d  |d  ¡dksLt‚d S )Nr   çÍÌÌÌÌÌì?Ú ÚiÚmZiiiimmmmr   gV-²ïß?gÕxé&1à?r9   é   é   é   é   é
   )	r.   r?   rB   Zset_textrN   Úx1Zx0Z_char_index_atr1   )r4   rB   rž   Zsize_iZsize_mÚoriginr   r   r   Útest_char_index_atV  s&    


$$rµ   rB   r«   ÚOÚemptyz	non-empty)Zidsc                 C   sx   t  ¡ \}}|jdd| ddd}|j ¡  |j}| ¡ }|j|d d}tjj	| 
¡ | 
¡ d dd |j|kstt‚d S )	Nr)   rU   rV   )r=   r>   r²   )Údpiçš™™™™™©?©Zrtol)r.   r/   rB   r`   r{   r¸   rN   rz   ÚtestingÚassert_allcloseÚ
get_pointsr1   )rB   r4   r5   Út1r¸   Zbbox1Zbbox2r   r   r   Útest_non_default_dpip  s    
ÿr¿   c                   C   s0   t dd ¡ dkst‚t dd ¡ dks,t‚d S )NÚ
horizontal©r\   ç        Úverticalg     €V@©r	   Úget_rotationr1   r   r   r   r   Útest_get_rotation_string€  s    rÆ   c                  C   s$   dD ]} t | d ¡ | kst‚qd S )N)g      .@g33333³0@gš™™™™YS@rÁ   rÄ   ©r¬   r   r   r   Útest_get_rotation_float…  s    rÈ   c                  C   s(   dD ]} t | d ¡ t| ƒkst‚qd S )N)éC   é   é)   rÁ   )r	   rÅ   Úfloatr1   rÇ   r   r   r   Útest_get_rotation_intŠ  s    rÍ   c                	   C   s$   t  t¡ tdd W 5 Q R X d S )NZ
hozirontalrÁ   ©r’   r“   Ú
ValueErrorr	   r   r   r   r   Útest_get_rotation_raises  s    rÐ   c                   C   s   t d d ¡ dkst‚d S )NrÁ   rÂ   rÄ   r   r   r   r   Útest_get_rotation_none”  s    rÑ   c                  C   s8   t dddgdddgƒD ]\} }tt| d ¡ |ƒ qd S )Ng     €v@g     w@gš™™™™	Œ@rÂ   g      1@gfffff&f@rÁ   )r|   r   r	   rÅ   )r¬   Újr   r   r   Útest_get_rotation_mod360˜  s    rÓ   r=   r;   r™   rU   r>   r<   rV   r[   Zcenter_baselinec                 C   sv   t  ¡ \}}td|| d}|jdddi|—Ž}|jd	ddi|—Ž}|j ¡  t| |jj¡ 	¡ | |jj¡ 	¡ ƒ d S )
Nr   )r\   r>   r=   r)   r£   Zrotation_modeÚanchorÚdefault)r)   r)   r£   )r)   r)   r£   )
r.   r/   rŸ   rB   r`   r{   r   rN   rS   r½   )r=   r>   r4   r5   r   Út0r¾   r   r   r   Ú%test_null_rotation_with_rotation_mode  s    
ÿr×   Ztext_bboxclipc                  C   s8   t jdddddd t jddddd	} |  d
di¡ d S )Nrª   r#   zIs bbox clipped?rQ   T)ZbackgroundcolorrJ   r)   zIs fancy bbox clipped?©rJ   rœ   zround, pad=0.1)r.   rB   Zset_bbox)Útr   r   r   Útest_bbox_clippingª  s    rÚ   z!annotation_negative_ax_coords.pngc               	   C   sÊ   t  ¡ \} }|jdddgdddgddd |jdddgdddgddd	d
 |jdddgdddgddd |jdddgdddgddd	d
 |jdddgdddgddd |jdddgdddgddd	d
 d S )Nú+ ptsru   r:   zaxes pointsé    ©rŠ   r¥   r‰   r   rv   ú- ptsiìÿÿÿr<   ©rŠ   r¥   r‰   r   rv   r>   ú+ fracrg   r¹   r   ú- fracçš™™™™™©¿ú+ pixelsé    é   zaxes pixelsú- pixelsiçÿÿÿ©r.   r/   r0   ©r4   r5   r   r   r   Ú"test_annotation_negative_ax_coords±  s\       þ   ý   þ   ý   þ   ýré   z"annotation_negative_fig_coords.pngc               	   C   sÊ   t  ¡ \} }|jdddgdddgddd |jddd	gddd	gddd
d |jdddgdddgddd |jdddgdddgddd
d |jdddgdddgddd |jdddgdddgddd
d d S )NrÛ   r²   éx   zfigure pointsrÜ   rÝ   rÞ   éöÿÿÿé´   r<   rß   rà   r¹   gš™™™™™á?zfigure fractionrá   râ   r)   rã   é2   r¤   ræ   iÎÿÿÿr(   rç   rè   r   r   r   Ú#test_annotation_negative_fig_coordsÍ  s\       þ   ý   þ   ý   þ   ýrî   c                  C   sÀ   t  dd¡\} \}}t  ¡  |jr&t‚|jr0t‚| jr:t‚| ddd¡}|jsRt‚|js\t‚| jsft‚|jdddgd}|js‚t‚|jsŒt‚| js–t‚t  ¡  |jr¨t‚|jr²t‚| jr¼t‚d S )Nr9   rG   r)   Zaardvark©r‰   )r.   r/   Zdraw_allÚstaler1   rB   r0   )r4   Úax1Úax2Ztxt1Zann1r   r   r   Útest_text_staleé  s"    










ró   zagg_text_clip.pngc                  C   sZ   t j d¡ t d¡\} \}}t j dd¡D ](\}}|j||ddd | ||d¡ q,d S )Nr9   rG   r²   rŽ   TrØ   )rz   ÚrandomÚseedr.   r/   ZrandrB   )r4   rñ   rò   r~   r   r   r   r   Útest_agg_text_clip   s
    rö   c                  C   s>   dt jd< t jjdd} |  ¡ }dt jd< ||  ¡ ks:t‚d S )Nr²   z	font.sizeZlarge©r   r(   )r   r]   ro   r   Zget_size_in_pointsr1   )ÚfpZsz1r   r   r   Útest_text_size_binding	  s
    

rù   zfont_scaling.pdfc                  C   s‚   dt jd< tjdd\} }|j t ¡ ¡ |j t ¡ ¡ | dd¡ t	t
ddd	ƒƒD ]&\}}|jd
|d dj|d|d qVd S )Né*   úpdf.fonttype)gš™™™™™@gÍÌÌÌÌÌ(@rh   rë   iX  r¯   é+   rG   r   ru   z{fs} pt font size)Úfs)rv   )r   r]   r.   r/   ÚxaxisZset_major_locatorZNullLocatorÚyaxisr_   rb   ÚrangerB   Úformat)r4   r5   r¬   rý   r   r   r   Útest_font_scaling  s    
r  zspacing1, spacing2)r'   rG   )rG   r'   )rG   rG   c           	      C   sš   d}t  ¡ }|j ¡ }|jdd|| d}|jdd||d}|j ¡  |j|d}|j|d}|j|jkslt‚| |kr†|j	|j	ks–t‚n|j	|j	ks–t‚d S )Nzline1
line2rj   r)   ©ZlinespacingrR   )
r.   r?   r`   ra   rB   r{   rN   Úwidthr1   Úheight)	Zspacing1Zspacing2Ztext_stringr4   rS   Útext1Útext2Zbox1Zbox2r   r   r   Útest_two_2line_texts  s    

r  c                	   C   s,   t  t¡ tjddddd W 5 Q R X d S )Nrj   r)   rŽ   Úabcr  )r’   r“   Ú	TypeErrorr.   rB   r   r   r   r   Útest_validate_linespacing3  s    r  c                  C   s:   t  ¡ \} }| dtjd¡ | tjdd¡ | j ¡  d S )Nr   ÚnanÚinf)r.   r/   rB   rz   r  r  r`   r{   rè   r   r   r   Útest_nonfinite_pos8  s    r  c                  C   sj   dt jd< t  ¡ } |  ddd¡}| jt ¡ dd | ¡ j}| jt ¡ dd t	j
j| ¡ j|dd	 d S )
Nr9   ztext.hinting_factorr)   z	some textÚsvg©r  Úpngr   rº   )r.   r]   r?   rB   ÚsavefigÚioÚBytesIOrN   Z	intervalxrz   r»   r¼   )r4   rÙ   Úexpectedr   r   r   Útest_hinting_factor_backends?  s    

ÿr  c                  C   sx   t  ¡ } dt jd< |  d¡}dt jd< |  d¡}| j ¡  |df|dffD ](\}}|jjD ]}|j 	¡ |ksZt
‚qZqJd S )NFútext.usetexéy   Téz   )r.   r?   r]   Úadd_subplotr`   r{   rþ   Ú
majorTicksÚlabel1Z
get_usetexr1   )r4   rñ   rò   r5   ÚusetexrÙ   r   r   r   Útest_usetex_is_copiedM  s    




r  c                  C   s(   t  ¡ } | jddddd | j ¡  d S )Nr)   z	$\frac12$T©r  )r.   r?   rB   r`   r{   rk   r   r   r   Útest_single_artist_usetex\  s    r   Úfmtr  Zpdfr  c                 C   s:   dt jd< t  ¡ }|jddddd |jt ¡ | d d S )NTr  r)   Z2_2_2Fr  r  )r.   r]   r?   rB   r  r  r  )r!  r4   r   r   r   Útest_single_artist_usenotexf  s    
r"  ztext_as_path_opacity.svgc                   C   sP   t  ¡  t  ¡  ¡  t jddddd t jddddd t jddd	dd
d d S )Nrj   Úc©r   r   r   r)   rZ   r)   r6   ©r   rg   r~   ©r   r   r   r9   ©r   rH   )r.   r?   r}   Úset_axis_offrB   r   r   r   r   Útest_text_as_path_opacityr  s
    r)  ztext_as_text_opacity.svgc                   C   sZ   dt jd< t ¡  t ¡  ¡  tjddddd tjddddd	 tjdd
dddd d S )NÚnonezsvg.fonttyperj   z50% using `color`r$  rZ   r)   z50% using `alpha`r%  rg   z"50% using `alpha` and 100% `color`r&  r'  )r   r]   r.   r?   r}   r(  rB   r   r   r   r   Útest_text_as_text_opacity{  s    
ÿr+  c                   C   s,   t  ddgddg¡ tt  dgdd¡ƒ d S )NÚAÚBr9   rG   r)   ÚBoo)r.   r‚   ÚreprrB   r   r   r   r   Útest_text_repr†  s    r0  c                  C   sf   t  dd¡\} }|jddd}| | j ¡ ¡}|  ¡  | | j ¡ ¡}tj| 	¡ | 	¡ ddrbt
‚d S )Nr9   Ú
annotationr‘   rï   gíµ ÷Æ°>rº   )r.   r/   r0   rN   r`   ra   Ztight_layoutrz   Zallcloser½   r1   )r4   r5   ZanZextent1Zextent2r   r   r   Útest_annotation_updateŒ  s    ÿr2  )Ú
extensionsc                 C   sl   |   ¡ }| t ¡ dd¡ |jdt ¡ dfdddd |  ¡ }| t ¡ dd¡ |jdt ¡ dfdd	 d S )
Nr9   ry   r~   r)   )Údatar   rI   zoffset points)r   rŠ   r¥   )r   )r  r‚   r   Únowr0   ©Zfig_testZfig_refr5   r   r   r   Útest_annotation_units—  s     þr7  zlarge_subscript_title.pngc                  C   s†   dt jd< d t jd< t jddddd\} }|d	 }| d
¡ |jddd | g ¡ |d }|jd
dd |jddd | g ¡ d S )NrE   rF   zaxes.titleyr9   rG   )é	   g      @T)ri   Zconstrained_layoutr   z$\sum_{i} x_i$zNew wayrU   r—   g)\Âõ(ð?)r   zOld Way)r.   r]   r/   rA   Zset_xticklabels)r4   Zaxsr5   r   r   r   Útest_large_subscript_title£  s    



r9  c                  C   s@   t jdd} d}| jdd|dd}| j ¡  | ¡ dks<t‚d S )	N©rE   r¯   rh   z?This is a very long text that should be wrapped multiple times.gffffffæ?r)   T©Úwrapz?This is a very long
text that should be
wrapped multiple
times.©r.   r?   rB   r`   r{   Z_get_wrapped_textr1   )r4   ÚsrB   r   r   r   Ú	test_wrapµ  s
    
r?  c                  C   sh   t jdd} | jddd | j ¡ }t jdd}| d¡ |j ¡ }|j|jksTt‚|j|jksdt‚d S )N)r®   r®   rh   z.suptitle that is clearly too long in this caseTr;  z.suptitle that is clearly
too long in this case)r.   r?   ZsuptitleZ	_suptitlerN   Zy0r1   Úy1)Zfig1Zwindow_extent_testZfig2Zwindow_extent_refr   r   r   Útest_get_window_extent_wrappedÀ  s    


rA  c                  C   s<   t jdd} | jddddd}| j ¡  | ¡ dks8t‚d S )Nr:  rh   g      #@r±   ZAlonglineoftexttowrapTr;  r=  ©r4   rB   r   r   r   Útest_long_word_wrapÐ  s    
rC  c                  C   s<   t jdd} | jddddd}| j ¡  | ¡ dks8t‚d S )Nr:  rh   r   znon wrapped textTr;  r=  rB  r   r   r   Útest_wrap_no_wrap×  s    
rD  c                 C   s`   |   ¡ }| ddg¡ | ddg¡ |jjd j d¡ |  ¡ }| ddg¡ | ddg¡ d S )Nr   r9   u   â‚¬r6   Úwr«   )r  r3   Zset_yticklabelsrÿ   r  r  Z	set_colorr6  r   r   r   Útest_buffer_sizeÞ  s    rF  c                  C   sL   t  ¡  t jdddd} t jdddd}|  ¡ dks8t‚| ¡ dksHt‚dS )z>Test that kwargs take precedence over fontproperties defaults.ÚvaluezTimes New Romang      D@)r    r   Úcounts)r   r    N)r.   r?   ZxlabelZylabelÚget_sizer1   )r  r  r   r   r   Ú$test_fontproperties_kwarg_precedenceì  s
    rJ  c                  C   s@   t  ¡ } t ¡  d¡}| jddd|dd}| ¡ }t|dƒ d S )Nru   r   r£   T)rK   Ztransform_rotates_text)r.   r}   ÚmtransformsZAffine2DZ
rotate_degrB   rÅ   r   )r5   rK   rB   Úresultr   r   r   Útest_transform_rotates_textõ  s    ÿrM  c                  C   sV   t tddd d} t | ƒ}tƒ }| | ¡ | d |d ks>t‚| d |d ksRt‚d S )Nr!   )r"   )r    rž   r    rž   )rŸ   r   r	   Úupdater1   )ZinpÚcacherÙ   r   r   r   Útest_update_mutate_inputþ  s    
ÿ
rP  r\   zinvalid stringéZ   c              	   C   s.   t jtdd tddd| d W 5 Q R X d S )Nz5rotation must be 'vertical', 'horizontal' or a numberr   r   rŽ   rÁ   rÎ   rÁ   r   r   r   Útest_invalid_rotation_values  s
    þrR  c                	   C   s,   t  t¡ tjddddd W 5 Q R X d S )Nr)   rŽ   Zfoobar)r#  )r’   r“   rÏ   r.   Úfigtextr   r   r   r   Útest_invalid_color  s    rT  ztext_pdf_kerning.pdfc                   C   s   t  ¡  t jddddd d S )Nr   r)   ZATATATATATATATATATAru   r÷   )r.   r?   rS  r   r   r   r   Útest_pdf_kerning  s    rU  c                 C   sT   t  ¡ }| ddd¡ |j ¡  tdd„ | D ƒƒs6t‚dd„ | D ƒddgksPt‚d S )	Nr)   u   à§¦c                 s   s   | ]}t |jtƒV  qd S ©N)Ú
isinstanceÚmessager-   ©Ú.0Úwarnr   r   r   Ú	<genexpr>  s     z*test_unsupported_script.<locals>.<genexpr>c                 S   s   g | ]}|j j‘qS r   )rX  ÚargsrY  r   r   r   Ú
<listcomp>!  s     z+test_unsupported_script.<locals>.<listcomp>)z>Glyph 2534 (\N{BENGALI DIGIT ZERO}) missing from current font.)z7Matplotlib currently does not support Bengali natively.)r.   r?   rB   r`   r{   Úallr1   )Zrecwarnr4   r   r   r   Útest_unsupported_script  s    
ÿÿÿr`  c               	   C   sb   t  ¡ \} }|jddddd | j ¡  |jddddd tjtdd | j ¡  W 5 Q R X d S )Nr   ú$ \wrong{math} $F)Z
parse_mathTúUnknown symbolr   )r.   r/   rB   r`   r{   r’   r“   rÏ   rè   r   r   r   Útest_parse_math&  s    
rc  c               	   C   s€   t  ¡ \} }| ddd¡ tjtdd | j ¡  W 5 Q R X t 	ddi¡* t  ¡ \} }| ddd¡ | j ¡  W 5 Q R X d S )Nr   ra  rb  r   ztext.parse_mathF)
r.   r/   rB   r’   r“   rÏ   r`   r{   r   Z
rc_contextrè   r   r   r   Útest_parse_math_rcparams0  s    rd  ztext_pdf_font42_kerning.pdfc                   C   s(   dt jd< t  ¡  t jddddd d S )Nrú   rû   r   r)   ZATAVATAVATAVATAVATAru   r÷   ©r.   r]   r?   rS  r   r   r   r   Útest_pdf_font42_kerning>  s    
rf  ztext_pdf_chars_beyond_bmp.pdfc                   C   s2   dt jd< dt jd< t  ¡  t jddddd	 d S )
Nrú   rû   Zstixsanszmathtext.fontsetr   r)   u   Mass $m$ ðŒˆru   r÷   re  r   r   r   r   Útest_pdf_chars_beyond_bmpE  s    

rg  c                     sÔ   t jj ¡  t ¡ } |  ddd¡ | jddddd | jddddd | j ¡  |  ¡ }i ‰ ‡ fdd„}||_	| j ¡  ˆ •dd	gksŠt
‚tˆ d ƒtˆ d	 ƒ  kr®d
ks´n t
‚t jj ¡ }|j|jksÐt
‚d S )Nr%   r)   zfoo
barTr  c                     s&   | ^}}}}}ˆ   |tƒ ¡ |¡ d S rV  )Ú
setdefaultrƒ   Úadd)r]  ÚkwargsrS   r~   r   r>  r†   ©r„   r   r   ÚcallY  s    z test_metrics_cache.<locals>.callrŽ   Úbarr9   )r   rB   Z!_get_text_metrics_with_cache_implÚcache_clearr.   r?   r`   r{   Z_get_rendererZdraw_texr1   ÚlenÚ
cache_infoÚhitsÚmisses)r4   rS   rl  Úinfor   rk  r   Útest_metrics_cacheM  s    

*rt  )]r   r  r+   Únumpyrz   Znumpy.testingr   r’   Z
matplotlibr   Zmatplotlib.backend_basesr   r*   r   Zmatplotlib.patchesZpatchesrL   Zmatplotlib.pyplotZpyplotr.   Zmatplotlib.transformsZ
transformsrK  Zmatplotlib.testing.decoratorsr   r   Zmatplotlib.testing._markersr   Zmatplotlib.textr	   r7   rD   rf   rl   rs   r‡   r   ÚmarkZparametrizeÚRuntimeErrorÚprintrÏ   r•   rš   r    r¢   r©   rµ   r¿   rÆ   rÈ   rÍ   rÐ   rÑ   rÓ   r×   rÚ   ré   rî   ró   rö   rù   r  r  r  r  r  r  r   r"  r)  r+  r0  r2  r7  r9  r?  rA  rC  rD  rF  rJ  rM  rP  rR  rT  rU  r`  rc  rd  rf  rg  rt  r   r   r   r   Ú<module>   sâ   
X

3

ú




	 
 ÿ




	



	








		





