U
    L?h)                     @   s   d Z ddlZddlmZmZmZmZmZmZm	Z	m
Z
mZ ddlmZ ddlmZmZmZmZmZ ddlmZ eddd	Zed
ZedZedZG dd dZG dd dZdS )zFTests for the ``sympy.physics.mechanics.wrapping_geometry.py`` module.    N)	IntegerRationalSSymbolacoscospisinsqrt)Eq)PointReferenceFrameWrappingCylinderWrappingSpheredynamicsymbolssimplifyrTZpositivexqNc                   @   sx  e Zd Zedd Zeejdej	e
de ej gdd Zeejdeej eej ej	feej eej eje e feej eej  ee feej  eej ee feej eed ej ejej  edd	e e feed ej ejej  eed
 edd
 ejej ej  eeededd
  fgdd Zeejdeej eej ejejfeej e ej ej ejfeej edd e ej edd e ej  ejedd ej edd ej  feej ed ej ed
d e ej  ejed
d ej dej  feej edd e ej edd e ej  ejedd ej edd ej  fgdd Zeejdeej eee ej eee ej  gdd Zeejdeej e ej fe ej eej feee ej eee ej  e ee ej eee ej  fgdd ZdS )TestWrappingSpherec                  C   sh   t ddd} td}t| |}t|ts,tt|ds:t|j| ksHtt|dsVt|j|ksdtd S )Nr   Tr   pOradiuspoint)r   r   r   
isinstanceAssertionErrorhasattrr   r   )r   r   sphere r    f/var/www/html/venv/lib/python3.8/site-packages/sympy/physics/mechanics/tests/test_wrapping_geometry.pytest_valid_constructor#   s    
z)TestWrappingSphere.test_valid_constructorposition   c              	   C   st   t ddd}td}t||}td}|||  td}|||  d}tjt|d ||| W 5 Q R X d S 	Nr   Tr   r   p1p2z'point .* does not lie on the surface of)match)r   r   r   set_pospytestraises
ValueErrorgeodesic_length)r#   r   r   r   r&   r'   	error_msgr    r    r!   1test_geodesic_length_point_not_on_surface_invalid.   s    
zDTestWrappingSphere.test_geodesic_length_point_not_on_surface_invalidz position_1, position_2, expected            c                 C   sd   t ddd}td}t||}td}|||  td}||| tt||||s`td S Nr   Tr   r   r&   r'   )r   r   r   r)   r   r   r-   r   )
position_1
position_2expectedr   r   r   r&   r'   r    r    r!   test_geodesic_length>   s    
z'TestWrappingSphere.test_geodesic_lengthz*position_1, position_2, vector_1, vector_2      ?c           
      C   sf   t ddd}td}t||}td}|||  td}||| ||f}	||||	ksbtd S r4   )r   r   r   r)   geodesic_end_vectorsr   )
r5   r6   vector_1vector_2r   r   r   r&   r'   r7   r    r    r!   test_geodesic_end_vectorsZ   s    
z,TestWrappingSphere.test_geodesic_end_vectorsc              	   C   sl   t ddd}td}t||}td}|||  td}|||  tt |||}W 5 Q R X d S r4   r   r   r   r)   r*   r+   r,   r:   )r#   r   r   r   r&   r'   _r    r    r!   ,test_geodesic_end_vectors_invalid_coincident   s    
z?TestWrappingSphere.test_geodesic_end_vectors_invalid_coincidentzposition_1, position_2c              	   C   sl   t ddd}td}t||}td}|||  td}||| tt |||}W 5 Q R X d S r4   r>   )r5   r6   r   r   r   r&   r'   r?   r    r    r!   8test_geodesic_end_vectors_invalid_diametrically_opposite   s    
zKTestWrappingSphere.test_geodesic_end_vectors_invalid_diametrically_oppositeN)__name__
__module____qualname__staticmethodr"   r*   markparametrizer   Zeror   r   r   r   r/   yHalfr   r
   r   zr   r8   r=   r   r   r	   r@   rA   r    r    r    r!   r   !   sx   

 6&*""*","$r   c                   @   s@  e Zd Zedd Zeejdej	dfe
ej dfe
ej dfe
ejej   dfede
 ej dfe
ejej  dfe
edej ej  dfedej e
edej ej    dfe
eeej eeej   dfg	dd Zeejd	ej	ede
 ej gd
d Zeejdeje
ej e
ej ej	feje
ej eje
ej  ejfeje
ej e ej e
ej  eed fej e
ej eej e
ej  eed feje
ej e
ej eje ee
d  fej e
ej e
ej edej e ee
d  feje
ej e
ej edej e ee
d  fej e
ej e
ej eje ee
d  feje
ej e
eeej eeej   ee
d ed  fej e
ej e
eeej eeej   ee
d ede e d  fg
dd Zeejdeje
ej e
ej ejejfeje
ej e
 ej ejejfeje
 ej e
ej ej ej fej e
ej e
 ej ej ej fej e
 ej e
ej ejejfeje
ej e
 ej ejej feje
ej edd e
 ej edd e
 ej  ej ed d ej edd ej  feje
ej e
d ej edd e
 ej  ejedd ej dej  feje
ej edd e
 ej edd e
 ej  ejedd ej edd ej  feje
ej e
ej ej ejej feje
ej e
ej ed e
 ej  edd ej edd ej  edd ej edd ej  feje
ej e
ee ej e
ee ej  ejeeej eeej  fgdd Zeejdeje
ej feje
ee ej e
ee ej  ej fgdd ZdS )TestWrappingCylinderc                  C   s   t d} tddd}td}t||| j}t|ts8tt|dsFt|j|ksTtt|dsbt|j	|ksptt|ds~t|j
| jkstd S )	Nr   r   Tr   r   r   r   axis)r   r   r   r   r   r   r   r   r   r   rM   )r   r   r   cylinderr    r    r!   r"      s    z+TestWrappingCylinder.test_valid_constructorzposition, expectedFTr$   c                 C   sL   t ddd}td}t||tj}td}|||  |||ksHtd S )Nr   Tr   r   r&   )r   r   r   r   r   r)   Zpoint_on_surfacer   )r#   r7   r   r   rN   r&   r    r    r!   test_point_is_on_surface   s    z-TestWrappingCylinder.test_point_is_on_surfacer#   c              	   C   sx   t ddd}td}t||tj}td}|||  td}|||  d}tjt|d |	|| W 5 Q R X d S r%   )
r   r   r   r   r   r)   r*   r+   r,   r-   )r#   r   r   rN   r&   r'   r.   r    r    r!   r/      s    zFTestWrappingCylinder.test_geodesic_length_point_not_on_surface_invalidz&axis, position_1, position_2, expectedr2   c           	      C   sf   t ddd}td}t||| }td}||| td}||| tt||||sbtd S r4   )r   r   r   r)   r   r   r-   r   )	rM   r5   r6   r7   r   r   rN   r&   r'   r    r    r!   r8      s    z)TestWrappingCylinder.test_geodesic_lengthz0axis, position_1, position_2, vector_1, vector_2r9   c                 C   sz   t ddd}td}t||| }td}||| td}	|	|| ||f}
tdd |||	D }||
ksvtd S )	Nr   Tr   r   r&   r'   c                 s   s   | ]}|  V  qd S )Nr   ).0Z
end_vectorr    r    r!   	<genexpr>Q  s   zATestWrappingCylinder.test_geodesic_end_vectors.<locals>.<genexpr>)r   r   r   r)   tupler:   r   )rM   r5   r6   r;   r<   r   r   rN   r&   r'   r7   Zend_vectorsr    r    r!   r=   
  s    =
z.TestWrappingCylinder.test_geodesic_end_vectorszaxis, positionc              	   C   sn   t ddd}td}t||| }td}||| td}||| tt |||}W 5 Q R X d S r4   )r   r   r   r)   r*   r+   r,   r:   )rM   r#   r   r   rN   r&   r'   r?   r    r    r!   r@   X  s    	zATestWrappingCylinder.test_geodesic_end_vectors_invalid_coincidentN)rB   rC   rD   rE   r"   r*   rF   rG   r   rH   r   r   rI   rK   	normalizer   r   r   r   r	   rO   r/   ZOner
   rJ   r   r8   r=   r@   r    r    r    r!   rL      s   
,"
  ,,*42,>  $&""*$"*""""5.rL   )__doc__r*   Zsympyr   r   r   r   r   r   r   r	   r
   Zsympy.core.relationalr   Zsympy.physics.mechanicsr   r   r   r   r   Zsympy.simplify.simplifyr   r   r   r   r   r   rL   r    r    r    r!   <module>   s   , 