
    Qi)                        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	          Z ed
          Z ed          Z ed          Z G d d          Z G 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positivexqNc                      e Zd Zed             Zeej                            dej	         e
d          ez  ej        z  g          d                         Zeej                            deej        z  eej        z  ej	        feej        z  eej        z  ej        ez  ez  feej        z  eej         z  eez  feej         z  eej        z  eez  feej        z  e ed          z  ej        z  ej        ej        z   z   edd          ez  ez  fe ed          z  ej        z  ej        ej        z   z  e ed          z   edd          z  ej        ej        z   ej        z   z  e e ed	           edd          z            z  fg          d
                         Zeej                            deej        z  eej        z  ej        ej        feej        z  e ej        z  ej         ej        feej        z   ed          dz  ez  ej        z   ed          dz  ez  ej        z  z
  ej         ed          dz  ej        z   ed          dz  ej        z  z   feej        z  edz  ej        z   ed          dz  ez  ej        z  z   ej         ed          dz  ej        z  dej        z  z
  feej        z   ed          dz  ez  ej        z   ed          dz  ez  ej        z  z   ej         ed          dz  ej        z   ed          dz  ej        z  z
  fg          d                         Zeej                            deej        z  e ee          z  ej        z  e ee          z  ej        z  z   g          d                         Zeej                            deej        z  e ej        z  fe ej        z  eej        z  fe ee          z  ej        z  e ee          z  ej        z  z   e  ee          z  ej        z  e ee          z  ej        z  z
  fg          d                         ZdS )TestWrappingSpherec                     t          dd          } t          d          }t          | |          }t          |t                    sJ t	          |d          sJ |j        | k    sJ t	          |d          sJ |j        |k    sJ d S )Nr   Tr   pOradiuspoint)r   r   r   
isinstancehasattrr   r   )r   r   spheres      /var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/sympy/physics/mechanics/tests/test_wrapping_geometry.pytest_valid_constructorz)TestWrappingSphere.test_valid_constructor#   s    3&&&4[[2&&&.11111vx(((((}!!!!vw'''''|r!!!!!!    position   c                    t          dd          }t          d          }t          ||          }t          d          }|                    ||            t          d          }|                    ||            d}t	          j        t          |          5  |                    ||           d d d            d S # 1 swxY w Y   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_msgs          r#   1test_geodesic_length_point_not_on_surface_invalidzDTestWrappingSphere.test_geodesic_length_point_not_on_surface_invalid.   s    3&&&4[[2&&4[[


2x   4[[


2x   >	]:Y777 	+ 	+""2r***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+s   B<<C C z position_1, position_2, expected            c                 `   t          dd          }t          d          }t          ||          }t          d          }|                    ||            t          d          }|                    ||           t	          t          |                    ||          |                    sJ d S Nr   Tr   r   r*   r+   )r   r   r   r-   r   r   r1   )
position_1
position_2expectedr   r   r"   r*   r+   s           r#   test_geodesic_lengthz'TestWrappingSphere.test_geodesic_length>   s    " 3&&&4[[2&&4[[


2z"""4[[


2z"""611"b998DDEEEEEEEr%   z*position_1, position_2, vector_1, vector_2      ?c                 :   t          dd          }t          d          }t          ||          }t          d          }|                    ||            t          d          }|                    ||           ||f}	|                    ||          |	k    sJ d S r9   )r   r   r   r-   geodesic_end_vectors)
r:   r;   vector_1vector_2r   r   r"   r*   r+   r<   s
             r#   test_geodesic_end_vectorsz,TestWrappingSphere.test_geodesic_end_vectorsZ   s    6 3&&&4[[2&&4[[


2z"""4[[


2z"""h'**2r22h>>>>>>r%   c                    t          dd          }t          d          }t          ||          }t          d          }|                    ||            t          d          }|                    ||            t	          j        t                    5  |                    ||          }d d d            d S # 1 swxY w Y   d S r9   r   r   r   r-   r.   r/   r0   r@   )r&   r   r   r"   r*   r+   _s          r#   ,test_geodesic_end_vectors_invalid_coincidentz?TestWrappingSphere.test_geodesic_end_vectors_invalid_coincident   s     3&&&4[[2&&4[[


2x   4[[


2x   ]:&& 	4 	4++B33A	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4   B88B<?B<zposition_1, position_2c                    t          dd          }t          d          }t          ||          }t          d          }|                    ||            t          d          }|                    ||           t	          j        t                    5  |                    ||          }d d d            d S # 1 swxY w Y   d S r9   rE   )r:   r;   r   r   r"   r*   r+   rF   s           r#   8test_geodesic_end_vectors_invalid_diametrically_oppositezKTestWrappingSphere.test_geodesic_end_vectors_invalid_diametrically_opposite   s      3&&&4[[2&&4[[


2z"""4[[


2z"""]:&& 	4 	4++B33A	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4rH   N)__name__
__module____qualname__staticmethodr$   r.   markparametrizer   Zeror   r   r   r   r3   yHalfr	   r   r   zr   r=   rC   r   r   r
   rG   rJ    r%   r#   r   r   !   s
       " " \" [Z!&''!**Q,qs2B)CDD+ + ED \+ [*qsUAacE16"qsUAacE16"9Q;'qsUAqsdFBqD!tVQqsUBqD!qsUAdd1ggIaf$acACi0((1a..2CA2EF$$q''	!& !#),$$q''	((1a..(!#)ac/:$$ttAwwxx1~~-...	
 
F 
F  \ 
F [4Wa!#gqsAC(Wqb13hac*ACQ	A#dd1ggai!mac&99Q	AC$$q''!)ac/1	 ACAdd1ggai!mac11Q	AC#)+	 ACQ	A#dd1ggai!mac&99Q	AC$$q''!)ac/1		
 2? ?3  \4? [	
QS!cc!ff*qs"QQZ!#%556 4 4	  \
4 [ Wqb13hR!#Xq13wCCFF
QS 1ss1vv:#33SSVVac!AAJ$44	

 
4 4
 
 \4 4 4r%   r   c                      e Zd Zed             Zeej                            dej	        dfe
ej        z  dfe
ej        z  dfe
ej        ej        z                                   z  df ed          e
z  ej        z  dfe
ej        ej        z   z  dfe
 ed          ej        z  ej        z   z  df ed          ej        z  e
 ed          ej        z  ej        z                                   z  z   dfe
 ee          ej        z   ee          ej        z  z   z  dfg	          d                         Zeej                            dej	         ed          e
z  ej        z  g          d                         Zeej                            d	ej        e
ej        z  e
ej        z  ej	        fej        e
ej        z  ej        e
ej        z  z   ej        fej        e
ej        z  e ej        z  e
ej        z  z    eedz            fej         e
ej        z  eej        z  e
ej        z  z    eedz            fej        e
ej        z  e
ej        z  ej        ez   ee
dz            z  fej         e
ej        z  e
ej        z   ed
          ej        z  ez   ee
dz            z  fej        e
ej        z  e
ej        z   ed
          ej        z  ez   ee
dz            z  fej         e
ej        z  e
ej        z  ej        ez   ee
dz            z  fej        e
ej        z  e
 ee          ej        z   ee          ej        z  z   z   ee
dz  edz  z            fej         e
ej        z  e
 ee          ej        z   ee          ej        z  z   z   ee
dz   ed          ez  ez
  dz  z            fg
          d                         Zeej                            dej        e
ej        z  e
ej        z  ej        ej        fej        e
ej        z  e
 ej        z  ej        ej        fej        e
 ej        z  e
ej        z  ej         ej         fej         e
ej        z  e
 ej        z  ej         ej         fej         e
 ej        z  e
ej        z  ej        ej        fej        e
ej        z  e
 ej        z  ej        ej         fej        e
ej        z   ed          dz  e
z  ej        z   ed          dz  e
z  ej        z  z
  ej          ed           dz  ej        z   ed          dz  ej        z  z
  fej        e
ej        z  e
dz  ej        z   ed
          dz  e
z  ej        z  z   ej         ed
          dz  ej        z  dej        z  z
  fej        e
ej        z   ed          dz  e
z  ej        z   ed          dz  e
z  ej        z  z   ej         ed          dz  ej        z   ed          dz  ej        z  z
  fej        e
ej        z  e
ej        z  ej        z   ej        ej         fej        e
ej        z  e
ej        z  edz  e
z  ej        z  z    ed          dz  ej        z   ed          dz  ej        z  z    ed          dz  ej        z   ed          dz  ej        z  z
  fej        e
ej        z  e
 ee          z  ej        z  e
 ee          z  ej        z  z   ej         ee          ej        z   ee          ej        z  z
  fg          d                         Zeej                            dej        e
ej        z  fej        e
 ee          z  ej        z  e
 ee          z  ej        z  z   ej        z   fg          d                         ZdS )TestWrappingCylinderc                     t          d          } t          dd          }t          d          }t          ||| j                  }t          |t                    sJ t          |d          sJ |j        |k    sJ t          |d          sJ |j        |k    sJ t          |d          sJ |j	        | j        k    sJ d S )	Nr   r   Tr   r   r   r   axis)
r   r   r   r   r   r    r!   r   r   rY   )r   r   r   cylinders       r#   r$   z+TestWrappingCylinder.test_valid_constructor   s    33&&&4[[#Ar13//($455555x*****!####x)))))~####x(((((}######r%   zposition, expectedFTr'   c                     t          dd          }t          d          }t          ||t          j                  }t          d          }|                    ||            |                    |          |u sJ d S )Nr   Tr   r   r*   )r   r   r   r   r   r-   point_on_surface)r&   r<   r   r   rZ   r*   s         r#   test_point_is_on_surfacez-TestWrappingCylinder.test_point_is_on_surface   sx      3&&&4[[#Ar13//4[[


2x   ((,,888888r%   r&   c                    t          dd          }t          d          }t          ||t          j                  }t          d          }|                    ||            t          d          }|                    ||            d}t          j        t          |          5  |	                    ||           d d d            d S # 1 swxY w Y   d S r)   )
r   r   r   r   r   r-   r.   r/   r0   r1   )r&   r   r   rZ   r*   r+   r2   s          r#   r3   zFTestWrappingCylinder.test_geodesic_length_point_not_on_surface_invalid   s    3&&&4[[#Ar13//4[[


2x   4[[


2x   >	]:Y777 	- 	-$$R,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s   #CCCz&axis, position_1, position_2, expectedr6   c                 b   t          dd          }t          d          }t          |||           }t          d          }|                    ||           t          d          }|                    ||           t	          t          |                    ||          |                    sJ d S r9   )r   r   r   r-   r   r   r1   )	rY   r:   r;   r<   r   r   rZ   r*   r+   s	            r#   r=   z)TestWrappingCylinder.test_geodesic_length   s    * 3&&&4[[#Ar4004[[


2z"""4[[


2z"""833B;;XFFGGGGGGGr%   z0axis, position_1, position_2, vector_1, vector_2r>   c                 n   t          dd          }t          d          }t          |||           }t          d          }|                    ||           t          d          }	|	                    ||           ||f}
t	          d |                    ||	          D                       }||
k    sJ d S )Nr   Tr   r   r*   r+   c              3   >   K   | ]}|                                 V  d S )Nr   ).0
end_vectors     r#   	<genexpr>zATestWrappingCylinder.test_geodesic_end_vectors.<locals>.<genexpr>Q  sB       
 
 !!
 
 
 
 
 
r%   )r   r   r   r-   tupler@   )rY   r:   r;   rA   rB   r   r   rZ   r*   r+   r<   end_vectorss               r#   rC   z.TestWrappingCylinder.test_geodesic_end_vectors
  s    z 3&&&4[[#Ar4004[[


2z"""4[[


2z"""h' 
 
&;;BCC
 
 
 
 

 h&&&&&&r%   zaxis, positionc                    t          dd          }t          d          }t          |||           }t          d          }|                    ||           t          d          }|                    ||           t	          j        t                    5  |                    ||          }d d d            d S # 1 swxY w Y   d S r9   )r   r   r   r-   r.   r/   r0   r@   )rY   r&   r   r   rZ   r*   r+   rF   s           r#   rG   zATestWrappingCylinder.test_geodesic_end_vectors_invalid_coincidentX  s     3&&&4[[#Ar4004[[


2x   4[[


2x   ]:&& 	6 	6--b"55A	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6s   B99B= B=N)rK   rL   rM   rN   r$   r.   rO   rP   r   rQ   r   r   rR   rT   	normalizer   r   r   r   r
   r]   r3   Oner   rS   r	   r=   rC   rG   rU   r%   r#   rW   rW      sv       $ $ \$ [VUOqsUDMqsUDMac	$$&&&-WQZZ\!#u%ac	]D!

13$%t,WQZZ^aAC!#!5 @ @ B BBBDIAqs
SSVVACZ'($/
	
 9 9  \9 [Z!&''!**Q,qs2B)CDD- - ED \- [0S!AC%13'S!AC%quae,S!AC%!AC!AC%ad4cT1QS5!AC%!AC%-ad4S!AC%13r	$$q!t** 45cT1QS5!AC%AF!22!5dd1a4jj!@AS!AC%13

16 1" 4TT!Q$ZZ ?@cT1QS5!AC%441::!56S!AC%CCFF13JQ34dd1a419ooFae33q66!#:Aqs
*+QT771::b=1,q0011	
 &
H 
H'  \(
H [:S!ac'1qs7AC-S!ac'A28QS!#.S1"qs(AGacTAC40cT1qs7QBHqsdQSD1cTA28QWac13/S!ac'A28QS13$/ACQ	A#dd1ggai!mac&99#$q''	!ac!DDGGAIO3 ACAdd1ggai!mac11Q	AC#)+ ACQ	A#dd1ggai!mac&99Q	AC$$q''!)ac/1 ACAC!# ACAC"Q$(QS.(Q	AC$$q''!)ac/1Q	AC$$q''!)ac/1 ACCCFF
QS 1ss1vv:#33Ass1vv|+U1	
4 4j' 'k4 4 \l'0 [S!ac'NS!cc!ff*qs"QQZ!#%55;<	
 6 6  \6 6 6r%   rW   )__doc__r.   sympyr   r   r   r   r   r   r	   r
   r   sympy.core.relationalr   sympy.physics.mechanicsr   r   r   r   r   sympy.simplify.simplifyr   r   r   r   r   r   rW   rU   r%   r#   <module>ro      s   L L 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 % $ $ $ $ $              - , , , , , F3
F3KKN3N3M4 M4 M4 M4 M4 M4 M4 M4`z6 z6 z6 z6 z6 z6 z6 z6 z6 z6r%   