o
    GZh                     @   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s+J t	|jttt| hks8J |jdks?J |jdksFJ 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   X/var/www/auris/lib/python3.10/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sJ ttttfdttf ks*J 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s6J 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s2J 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   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   r0   c                  C   s   ddl m} m} td}| }dD ]=}|D ]8}t|ts)J | dt| |j	r3J | d|j
r=J | d|jj|rOJ d|j d	| qq| |v sWJ ||v s]J 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.unitsr1   r2   r   Zget_unit_systemZget_units_non_prefixed
isinstancer   typeZis_prefixedZis_physical_constantr   
startswith)r1   r2   unit_systemunitsprefixunitr   r   r   test_get_units_non_prefixedD   s   
 &r=   c                  C   sV   t j D ]#} | j D ]}|t}|D ]}|| jv s&J d| d|  qqqd S )Nr4   z is not in unit system )r   Z_unit_systemsvaluesZderived_unitsZatomsr   r   )r9   Zpreferred_unitr:   r<   r   r   r   ,test_derived_units_must_exist_in_unit_systemQ   s   
 r?   N)r5   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-   r0   r=   r?   r   r   r   r   <module>   s     