U
    ZÊ¹j§  ã                   @   s  d dl mZmZ d dlmZ d dlmZmZ d dlm	Z	 d dl
mZ d dlmZmZmZ d dlmZmZ d dlmZ d d	lmZ d d
lmZmZ d dlmZmZmZ d dlmZ d dl m!Z! d dl"Z"eƒ  ddd„Z#dddœdd„Z$dd„ Z%edd„ ƒZ&dd„ Z'dd„ Z(dd„ Z)dS ) é    )ÚIÚpi)ÚEq)ÚSymbolÚsymbols)Úre)Úexp)ÚcosÚsinÚtan)ÚAndÚOr)Úplot_implicit)Ú
unset_show)ÚNamedTemporaryFileÚmkdtemp)ÚskipÚwarnsÚXFAIL)Úimport_module)ÚTmpFileManagerNÚ c                 C   s   t d| dd�jS )Nz.pngF)ÚsuffixÚdirÚdelete)r   Úname©r   r   © r   úf/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sympy/plotting/tests/test_plot_implicit.pyÚtmp_file   s
      ÿr   ©r   r   c                O   s0   t | f|ž|Ž}| t||d�¡ |j ¡  d S )Nr   )r   Úsaver   Z_backendÚclose)Úexprr   r   ÚargsÚkwargsÚpr   r   r   Úplot_and_save   s    r'   c                 C   s²  t ƒ }t |¡ tdƒ}tdƒ}tt|t|ƒƒ|ddf|ddf| |d� tt|d |d | ƒ|ddf|d	d
f| |d� t|d| k|ddf|ddf| |d� t|dt|ƒ k |ddf|ddf| |d� t|dt|ƒ t|ƒ k|ddf|ddf| |d� t||d k|ddf|ddf| |d� tt|d |d | ƒ|d� tt|d |d | ƒd|d� tt|d |d | ƒdd|d� t||k|ddf|d� tt	|t
|ƒk||d kƒ|d� tt||k|| kƒ|d� t|d d |ddf|d� t|d d |d� t||kd|d� t||kd|d� t|t|ƒkd|d� t|t|ƒk d|d� tt	|t|ƒkt||kt||ƒƒƒ|d� t|tt| ƒ |d� t|d d d|d� d S )NÚxÚyéûÿÿÿé   éþÿÿÿé   r    é   éüÿÿÿé   é   éýÿÿÿéÿÿÿÿ)r   F)Úadaptiver   iô  )r4   Únr   )Údepthr   zAn implicit plot)Útitler   )r   r   Ú
tmp_folderr   r'   r   r	   r   r
   r   r   r   r   )r   Útemp_dirr(   r)   r   r   r   Úplot_implicit_tests   sZ    
(  ÿ  ÿ  ÿ   ÿ  ÿ ""*r:   c               	   C   s’   t ddtfd�} | r†zdtƒ }t |¡ tdƒ}tdƒ}ttdd��. t	t
|tt|ƒtt|ƒ  ƒƒd|d	� W 5 Q R X W 5 t ¡  X ntd
ƒ d S )NÚ
matplotlibú1.1.0©Zmin_module_versionZcatchr(   r)   z%Adaptive meshing could not be applied)ÚmatchÚtestr    ú"Matplotlib not the default backend)r   ÚRuntimeErrorr   Úcleanupr   r8   r   r   ÚUserWarningr'   r   r   r	   r   r
   r   )r;   r9   r(   r)   r   r   r   Útest_no_adaptive_meshingB   s    
6rD   c                  C   st   t dƒ\} }t| d |d  d ddd�}|jd jdks>t‚t| d |d  d ddd�}|jd jdkspt‚d S )	Nzx, yr-   r1   ÚgreenF)Ú
line_colorÚshowr   Úr)r   r   Z_seriesrF   ÚAssertionError)r(   r)   r&   r   r   r   Útest_line_colorV   s
    rJ   c                  C   s@   t ddtfd�} | r4ztdƒ tƒ  W 5 t ¡  X ntdƒ d S )Nr;   r<   r=   r?   r@   )r   rA   r   rB   r:   rJ   r   )r;   r   r   r   Útest_matplotlib]   s    
rK   c                  C   sœ  t ddtfd�} | stdƒ ddlm} tj tj t	¡¡}�zNtƒ }t
 |¡ tdƒ\}}|d d	 |d	  d	k }|d d	 |d	  d	k }t|d
d�}tj |d¡}	t||@ ||ƒ}
|
 |¡ ||	|dƒ t|dd�}tj |d¡}	t||B ||ƒ}
|
 |¡ ||	|dƒ t|dd�}tj |d¡}	t| ||ƒ}
|
 |¡ ||	|dƒ t|dd�}tj |d¡}	t||A ||ƒ}
|
 |¡ ||	|dƒ W 5 t
 ¡  X d S )Nr;   r<   r=   r@   r   )Úcompare_imageszx yr1   r-   Útest_region_andr   ztest_region_and.pngg{®Gázt?Ztest_region_orztest_region_or.pngZtest_region_notztest_region_not.pngZtest_region_xorztest_region_xor.png)r   rA   r   Zmatplotlib.testing.comparerL   ÚosÚpathÚdirnameÚabspathÚ__file__r   rB   r   r8   r   r   Újoinr   r!   )r;   rL   Ztest_directoryr9   r(   r)   Úr1Úr2Ztest_filenameZcmp_filenamer&   r   r   r   rM   i   s@    




rM   )Nr   )*Zsympy.core.numbersr   r   Zsympy.core.relationalr   Zsympy.core.symbolr   r   Z$sympy.functions.elementary.complexesr   Z&sympy.functions.elementary.exponentialr   Z(sympy.functions.elementary.trigonometricr	   r
   r   Zsympy.logic.boolalgr   r   Zsympy.plotting.plot_implicitr   Zsympy.plotting.plotr   Útempfiler   r   Zsympy.testing.pytestr   r   r   Zsympy.externalr   Zsympy.testing.tmpfilesr   rN   r   r'   r:   rD   rJ   rK   rM   r   r   r   r   Ú<module>   s,   
$
