a
    kh                     @   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sVJ t	|jttt| hkspJ |jdks~J |jdksJ d S )NdmMSz	MS system   
   )r   r
   r   r   r   Zset_quantity_dimensionr   Zset_quantity_scale_factorr   set_base_units_unitsnamedescr)r   basems r   W/var/www/auris/lib/python3.9/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J t tttfdks4J ttttfdttf ksTJ d S )Nr   )r   zUnitSystem((meter, second))z<UnitSystem: (%s, %s)>)strr   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slJ d S )NAJs   i  )r    set_global_relative_scale_factorr   ZOner   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sdJ t
|jt
|jks|J d S )Nr#   r   )r   r
   r   r   r   r&   r   r   extendr	   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 J d S )N   )r   r
   r	   r   r   Zdim)Zdimsysr   r   r   test_dim9   s    r,   c                  C   s.   t ttg} tttg| d}|jdks*J d S )N)dimension_systemT)r   r   r   r   r
   r   Zis_consistent)r-   usr   r   r   test_is_consistent>   s    r/   c                  C   s   ddl m} m} td}| }dD ]z}|D ]p}t|tsRJ | dt| |j	rfJ | d|j
rzJ | d|jj|r.J d|j d	| q.q&| |v sJ ||v sJ 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.unitsr0   r1   r   Zget_unit_systemZget_units_non_prefixed
isinstancer   typeZis_prefixedZis_physical_constantr   
startswith)r0   r1   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v s*J d| d|  q*qq
d S )Nr3   z is not in unit system )r   Z_unit_systemsvaluesZderived_unitsZatomsr   r   )r8   Zpreferred_unitr9   r;   r   r   r   ,test_derived_units_must_exist_in_unit_systemQ   s
    
r>   N)r4   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,   r/   r<   r>   r   r   r   r   <module>   s   