o
    Zhh                     @   s   d Z ddlmZ ddlmZ ddlZddlmZ ddlm	Z	m
Z
 ddlmZ ejdd	d
gdd Zedd Ze	d	d
ejdddgdd Zdd ZeefddZejdeegejdddgdd Ze
dd Zdd  Zd!d" Zd#d$ Ze
e	d	d
d%d& Zd'd( ZdS ))zTests for IPython.utils.path.py    )contextmanager)patchN)
latextools)onlyif_cmds_existskipif_not_matplotlibFindCmdErrorcommandlatexdvipngc                    sT    fdd}t td| tddd u sJ W d    d S 1 s#w   Y  d S )Nc                    s   |  krt d S Nr   )argr	    X/var/www/html/lang_env/lib/python3.10/site-packages/IPython/lib/tests/test_latextools.pymock_find_cmd   s   zGtest_check_latex_to_png_dvipng_fails_when_no_cmd.<locals>.mock_find_cmdZfind_cmdZwhateverT)r   objectr   latex_to_png_dvipng)r	   r   r   r   r   0test_check_latex_to_png_dvipng_fails_when_no_cmd   s   "r   c                  o   s    d V  d S r   r   )argskwargsr   r   r   no_op   s   
r   zs, wrap)z$$x^2$$F)x^2Tc                 C   sN   dd }t | | t| t | | W d   dS 1 s w   Y  dS )z@
    Test that latex_to_png_dvipng just runs without error.
    c                 S      | dksJ d S N	breqn.styr   filenamer   r   r   mock_kpsewhich'      z5test_latex_to_png_dvipng_runs.<locals>.mock_kpsewhichN)r   r   patch_latextool)swrapr   r   r   r   test_latex_to_png_dvipng_runs!   s
   
"r#   c                 C   r   r   r   r   r   r   r   r   1   r   r   c                 c   s<    t td|  d V  W d    d S 1 sw   Y  d S )NZ	kpsewhich)r   r   r   )Zmockr   r   r   r    5   s   "r    contexts_wrap)$x^2$Fc                 C   sl   zddl }W n ty   td Y dS w | \}}|  t|| W d   dS 1 s/w   Y  dS )z=
    Test that latex_to_png_mpl just runs without error.
    r   Nz%This needs matplotlib to be available)
matplotlibImportErrorpytestskipr   latex_to_png_mpl)r%   r$   r'   r!   r"   r   r   r   test_latex_to_png_mpl_runs:   s   
"r,   c                  C   s   t d} d| v sJ d S )Nr&   zdata:image/png;base64,iVBOR)r   Zlatex_to_html)Zimgr   r   r   test_latex_to_htmlI   s   
r-   c                  C   P   dd } t |  dtdddksJ W d   dS 1 s!w   Y  dS )z)
    Test genelatex with wrap=False.
    c                 S   s   J d | )NFz0kpsewhich should not be called (called with {0}))formatr   r   r   r   r   S   s   z.test_genelatex_no_wrap.<locals>.mock_kpsewhich
z	body textFz\documentclass{article}
\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{amssymb}
\usepackage{bm}
\pagestyle{empty}
\begin{document}
body text
\end{document}Nr    joinr   Z	genelatexr   r   r   r   test_genelatex_no_wrapO      
"r4   c                  C   r.   )zL
    Test genelatex with wrap=True for the case breqn.sty is installed.
    c                 S   s   | dksJ dS )Nr   zpath/to/breqn.styr   r   r   r   r   r   g   r   z6test_genelatex_wrap_with_breqn.<locals>.mock_kpsewhichr0   r   Tz\documentclass{article}
\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{amssymb}
\usepackage{bm}
\usepackage{breqn}
\pagestyle{empty}
\begin{document}
\begin{dmath*}
x^2
\end{dmath*}
\end{document}Nr1   r3   r   r   r   test_genelatex_wrap_with_breqnc   r5   r6   c                  C   r.   )zP
    Test genelatex with wrap=True for the case breqn.sty is not installed.
    c                 S   r   r   r   r   r   r   r   r   ~   r   z9test_genelatex_wrap_without_breqn.<locals>.mock_kpsewhichr0   r   Tz\documentclass{article}
\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{amssymb}
\usepackage{bm}
\pagestyle{empty}
\begin{document}
$$x^2$$
\end{document}Nr1   r3   r   r   r   !test_genelatex_wrap_without_breqnz   r5   r7   c                  C   s
  d} t j| dd}t j| ddd}t | d}t | dd}||ks$J t | d}t | dd}||ks7J |||fv s?J |||fv sGJ t | dd}||ksTJ t | dd}||ksaJ t | dd}	t | dd	}
|	|
ksuJ t | ddd
}|	|ksJ dS )z/
    Test color settings for latex_to_png.
    r&   F)r"   z#000000)r"   colorZBlackZMaroonWhitez#FFFFFFg333333?N)r   latex_to_pngr   r+   )latex_stringdefault_valueZdefault_hexblackZdvipng_defaultZdvipng_blackZmpl_defaultZ	mpl_blackZdvipng_maroonZ
mpl_maroonZ	mpl_whiteZmpl_hexwhiteZmpl_white_scaler   r   r   test_latex_to_png_color   s4   r=   c                      s0   d t t fdd t t fdd dS )zM
    Test that invalid hex colors provided to dvipng gives an exception.
    r&   c                         t j dddS )Nr   z#f00barbackendr8   r   r:   r   r;   r   r   <lambda>   s    z6test_latex_to_png_invalid_hex_colors.<locals>.<lambda>c                      r>   )Nr   z#f00r?   rA   r   rB   r   r   rC      s    N)r)   Zraises
ValueErrorr   r   rB   r   $test_latex_to_png_invalid_hex_colors   s   

rE   )__doc__
contextlibr   Zunittest.mockr   r)   ZIPython.libr   ZIPython.testing.decoratorsr   r   ZIPython.utils.processr   markZparametrizer   r   r#   r   r    r,   r-   r4   r6   r7   r=   rE   r   r   r   r   <module>   s:    
	

"