U
    	-e$                     @   s   d dl mZ d dlmZ d dlmZ edZedddgidZererd d	lm	Z	m
Z
mZmZmZmZ d d
lmZmZ d dlmZ e ZdZdd Zdd Zdd Zdd Zdd Zdd Znesesdd ZdS )    SymPyExpression)raises)import_modulelfortranzclang.cindexfromlistZcindex)Zimport_kwargs)VariableIntBaseTypeFloatBaseTypeStringDeclaration	FloatType)IntegerFloat)Symbolz5    integer :: a, b, c, d
    real :: p, q, r, s
    c               
   C   s   d} t | d t  }|d tttdttddks@t|d tttdttdt	d	d
ksnt|d tttdt
tdt	dt	dt	dddkst|d tttdt
tdt	dt	dt	ddtdddd
kstd S )Nz8        int a, b = 4;
        float c, d = 2.4;
        cr   aZintc)type   b   r   value   Zfloat32          )nbitsZnmantZnexp   dz2.39999999999999995   	precision)expr1convert_to_exprreturn_exprr   r   r   r	   r   AssertionErrorr   r   r   )src1ls r)   b/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/sympy/parsing/tests/test_sym_expr.pytest_c_parse   sN    





r+   c               	   C   s  t td} |  }|d tttdttdtddks@t	|d tttdttdtddksnt	|d tttd	ttdtddkst	|d
 tttdttdtddkst	|d tttdt
tdtddddkst	|d tttdt
tdtddddks0t	|d tttdt
tdtddddksdt	|d tttdt
tdtddddkst	d S )Nfr   r   integerr   r   r   r   r   r   r   r   prealz0.0r    r!      q   r   s)r   srcr%   r   r   r   r	   r   r   r&   r
   r   )exprr(   r)   r)   r*   test_fortran_parseB   st    

















r8   c                  C   s@   t d } t| d t }|ddddddd	d
ddg
ks<td S )N<            a = b + c
            s = p * q / r
            r,   za = 0zb = 0zc = 0zd = 0zp = 0.0zq = 0.0zr = 0.0zs = 0.0z	a = b + cz	s = p*q/r)r6   r#   r$   Zconvert_to_pythonr&   )r'   Zexp_pyr)   r)   r*   test_convert_py   s$    r:   c                  C   s@   t d } t| d t }|ddddddd	d
ddg
ks<td S )Nr9   r,   z      integer*4 az      integer*4 bz      integer*4 cz      integer*4 dz      real*8 pz      real*8 qz      real*8 rz      real*8 sz      a = b + cz      s = p*q/r)r6   r#   r$   Zconvert_to_fortranr&   )r'   Zexp_fortr)   r)   r*   test_convert_fort   s$    r;   c                  C   s@   t d } t| d t }|ddddddd	d
ddg
ks<td S )Nr9   r,   z	int a = 0z	int b = 0z	int c = 0z	int d = 0zdouble p = 0.0zdouble q = 0.0zdouble r = 0.0zdouble s = 0.0z
a = b + c;z
s = p*q/r;)r6   r#   r$   Zconvert_to_cr&   )r'   Zexp_cr)   r)   r*   test_convert_c   s$    r<   c                      s:   d t t fdd t tdd  t t fdd d S )Nint a;c                      s   t  S )Nr   r)   r6   r)   r*   <lambda>       z!test_exceptions.<locals>.<lambda>c                   S   s
   t ddS )Nr   moder   r)   r)   r)   r*   r?      r@   c                      s   t  ddS )Nr   rA   r   r)   r>   r)   r*   r?      r@   )r   
ValueErrorNotImplementedErrorr)   r)   r>   r*   test_exceptions   s    rE   c                   C   s    t tdd  t tdd  d S )Nc                   S   s
   t ddS )Nr=   r   r   r)   r)   r)   r*   r?      r@   ztest_raise.<locals>.<lambda>c                   S   s
   t ddS )Nzinteger :: ar,   r   r)   r)   r)   r*   r?      r@   )r   ImportErrorr)   r)   r)   r*   
test_raise   s    rG   N)Zsympy.parsing.sym_exprr   Zsympy.testing.pytestr   Zsympy.externalr   r   ZcinZsympy.codegen.astr   r	   r
   r   r   r   Z
sympy.corer   r   Zsympy.core.symbolr   r#   r6   r+   r8   r:   r;   r<   rE   rG   r)   r)   r)   r*   <module>   s$    .>
