U
    9%e                     @   s   d dl mZmZmZmZ d dlmZ d dlmZ d dl	m
Z
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 d	d
 Zdd Zdd Zdd Zdd Zdd Zdd Zdd ZdS )    )DimensionSystemjoulesecondampere)Rational)S)ckgms)lengthtime)Quantity)
UnitSystem)
convert_toc                  C   s   t d} ttf}t|t| fdd}|| t || tdd t	|j
t	|ksVtt	|jttt| hkspt|jdks~t|jdkstd S )NdmMSz	MS system   
   )r   r
   r   r   r   Zset_quantity_dimensionr   Zset_quantity_scale_factorr   set_base_unitsAssertionError_unitsnamedescr)r   basems r   h/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/sympy/physics/units/tests/test_unitsystem.pytest_definition   s    r   c                   C   sX   t tttfdddkstt tttfdks4tttttfdttf ksTtd S )Nr   )r   zUnitSystem((meter, second))z<UnitSystem: (%s, %s)>)strr   r
   r   r   reprr   r   r   r   test_str_repr   s    r"   c                  C   sp   t d} | tjt t d}|tjtt  ttt	t
| f|f}t||jtd t	 t
d  d ksltd S )NAJs   i  )r    set_global_relative_scale_factorr   ZOner   r   r   r   r
   r	   r   r   r   r   )r#   r$   Zmksar   r   r   test_convert_to#   s    r(   c                  C   s   t ttftf} td}|dtt  | t	f|f}t ttt	ft|f}t
|jt
|jksdtt
|jt
|jks|td S )Nr$   r   )r   r
   r   r   r   r'   r   r   extendr	   r   r   r   r   )r   r$   Zmksresr   r   r   test_extend.   s    r+   c                  C   s$   t tttftf} | jdks td S )N   )r   r
   r	   r   r   dimr   )Zdimsysr   r   r   test_dim9   s    r.   c                  C   s.   t ttg} tttg| d}|jdks*td S )N)dimension_systemT)r   r   r   r   r
   r   Zis_consistentr   )r/   usr   r   r   test_is_consistent>   s    r1   c                  C   s   ddl m} m} td}| }dD ]z}|D ]p}t|tsRt| dt	| |j
rft| d|jrzt| d|jj|r.td|j d	| q.q&| |kst||kstd S )
Nr   )voltohmZSI)ZgigaZteraZpetaZexaZzettaZyottaZkiloZhectoZdecaZdeciZcentiZmillimicroZnanoZpicoZfemtoZattoZzeptoZyoctoz must be a Quantity, not z is marked as prefixedz is marked as physics constantUnit z has prefix )sympy.physics.unitsr2   r3   r   Zget_unit_systemZget_units_non_prefixed
isinstancer   r   typeZis_prefixedZis_physical_constantr   
startswith)r2   r3   unit_systemunitsprefixunitr   r   r   test_get_units_non_prefixedD   s    
 (r>   c                  C   sV   t j D ]F} | j D ]6}|t}|D ]"}|| jks*td| d|  q*qq
d S )Nr5   z is not in unit system )r   Z_unit_systemsvaluesZderived_unitsZatomsr   r   r   )r:   Zpreferred_unitr;   r=   r   r   r   ,test_derived_units_must_exist_in_unit_systemQ   s
    
r@   N)r6   r   r   r   r   Zsympy.core.numbersr   Zsympy.core.singletonr   Zsympy.physics.units.definitionsr   r	   r
   r   Z5sympy.physics.units.definitions.dimension_definitionsr   r   Zsympy.physics.units.quantitiesr   Zsympy.physics.units.unitsystemr   Zsympy.physics.units.utilr   r   r"   r(   r+   r.   r1   r>   r@   r   r   r   r   <module>   s   