U
    L?hz
                     @   sd   d dl mZ d dlmZmZmZmZ d dlmZ d dl	m
Z
mZ dd Zdd Zd	d
 Zdd ZdS )    )symbols)PointParticleReferenceFrameinertia)BodyBase)raiseswarns_deprecated_sympyc                      s|   t d  jdkst jtdks(t jjdks8t jdksFt  dksVt  dksftt	t
 fdd d S )NPZP_massZP_masscenterr   z3Particle('P', masscenter=P_masscenter, mass=P_mass)c                      s    j S N)frame pr   ]/var/www/html/venv/lib/python3.8/site-packages/sympy/physics/mechanics/tests/test_particle.py<lambda>       z'test_particle_default.<locals>.<lambda>)r   nameAssertionErrormassr   Z
masscenterpotential_energy__str____repr__r   AttributeErrorr   r   r   r   test_particle_default   s    r   c                     s  t d\} }}}}}}td td}td }t|tsBt|jksPt|j ks^t| |_|j| ksrt||_|j|ksttd}	td}
|	|
||	j
  ||	||	j  tt fdd ttfd	d ||	| | |	j kst||
|	|  | | |	j ks"t||	||	j
  ||	| | |	j
 ksRt||
|	d
ksht||	||	j  ||	| | |	j kst||
|	| | | |	j kst||	||	j ||	j
  ||	j   ||	| ||	j ||	j
  ||	j   kst||
|	| | ||	j ||	j   ksBt| | |_|j| | ksht||	| |d |d  |d   d | |d  d | |d  d  | |d  d  fkstd S )Nzm m2 v1 v2 v3 r g hr
   P2paNOc                      s   t   S r   r   r   r
   mr   r   r   (   r   ztest_particle.<locals>.<lambda>c                      s   t d  S )Nr   r   r   )r!   r   r   r   )   r   r      )r   r   r   
isinstancer   r   r   pointr   Zset_posyZset_velxr   	TypeErrorZlinear_momentumZangular_momentumzr   Zkinetic_energy)m2Zv1Zv2Zv3rghr   r   r   r   r   r    r   test_particle   sJ    &$&2..r-   c            	      C   s   t d} td\}}}td}|d|| j || j  }td||}||| }t| ||d  ||d  ||d |d   | | | d}||kst	d S )Nr   zm, a, bor   r
   r"   )Zixy)
r   r   r   Z	locatenewr&   r%   r   Zparallel_axisr   r   )	r   r!   abr.   r   r
   ZIpZIp_expectedr   r   r   test_parallel_axis=   s    *r1   c               	   C   sJ   t d\} }}td}td|| }t  || | |  W 5 Q R X d S )Nzm g hr
   r   )r   r   r   r	   Zset_potential_energy)r!   r+   r,   r
   r   r   r   r   $test_deprecated_set_potential_energyI   s
    r2   N)Zsympyr   Zsympy.physics.mechanicsr   r   r   r   Z!sympy.physics.mechanics.body_baser   Zsympy.testing.pytestr   r	   r   r-   r1   r2   r   r   r   r   <module>   s   )