U
    ZÊ¹j¶  ã                   @   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sŒt‚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/bwave/python/venv/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s®t‚||ksºt‚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   