
    \hpa                         S r SSKrSSKJrJrJrJrJrJr  SSK	J
r
JrJrJrJrJrJrJrJrJrJr  SSKJr  S r " S S5      r " S	 S
5      r " S S5      rg)z<Tests for the ``sympy.physics.mechanics.pathway.py`` module.    N)RationalSymbolcospisinsqrt)ForceLinearPathwayObstacleSetPathwayPathwayBasePointReferenceFrameWrappingCylinderWrappingGeometryBaseWrappingPathwayWrappingSpheredynamicsymbols)simplifyc                     U  Vs/ s H7  nUR                  UR                  UR                  R                  5       5      PM9     sn$ s  snf N)	__class__locationvectorr   )loadsloads     b/var/www/auris/envauris/lib/python3.13/site-packages/sympy/physics/mechanics/tests/test_pathway.py_simplify_loadsr      sE     D 	t}}dkk&:&:&<=  s   >Ac            
          \ rS rSrS r\\R                  R                  S\	" S5      \	" S5      40 4/5      S 5       5       r
\\R                  R                  S\	" S5      4\	" S5      \	" S5      \	" S5      4/5      S	 5       5       r\\R                  R                  SS
\	" S5      4\	" S5      S
4/5      S 5       5       r\R                  " SS9S 5       rS rS rS rS rS rS rS rS rS rS rS rSrg
)TestLinearPathway$   c                 :    [        [        [        5      (       d   eg r   )
issubclassr
   r   selfs    r   test_is_pathway_base_subclass/TestLinearPathway.test_is_pathway_base_subclass&   s    -5555    zargs, kwargspApBc                    U u  p#[        U 0 UD6n[        U[         5      (       d   e[        US5      (       d   e[        UR                  5      S:X  d   eUR                  S   UL d   eUR                  S   UL d   e[        UR                  S   [
        5      (       d   eUR                  S   R                  S:X  d   e[        UR                  S   [
        5      (       d   eUR                  S   R                  S:X  d   eg )Nattachments   r      r(   r)   )r
   
isinstancehasattrlenr+   r   name)argskwargspointApointBinstances        r   test_valid_constructor(TestLinearPathway.test_valid_constructor)   s     $1&1(M2222x////8''(A---##A&&000##A&&000(..q159999##A&++t333(..q159999##A&++t333r'   r+   pZc                 |    [         R                  " [        5         [        U 6 nS S S 5        g ! , (       d  f       g = fr   )pytestraises
ValueErrorr
   r+   _s     r   )test_invalid_attachments_incorrect_number;TestLinearPathway.test_invalid_attachments_incorrect_number=   s&     ]]:&{+A '&&   	-
;Nc                 |    [         R                  " [        5         [        U 6 nS S S 5        g ! , (       d  f       g = fr   )r;   r<   	TypeErrorr
   r>   s     r   "test_invalid_attachments_not_point4TestLinearPathway.test_invalid_attachments_not_pointI   s&     ]]9%{+A &%%rB   Tautousec                    [        S5      U l        [        S5      U l        [        S5      U l        [        U R                  U R                  5      U l        [        S5      U l        [        S5      U l	        [        S5      U l
        [        SS5      U l        [        SS5      U l        [        SS5      U l        [        S5      U l        g )	NNr(   r)   q1q2q3r-   F)r   rJ   r   r(   r)   r
   pathwayr   rK   rL   rM   q1dq2dq3dr   rN   r#   s    r   _linear_pathway_fixture)TestLinearPathway._linear_pathway_fixtureU   s    $++$TWWdgg6 & & &!$*!$*!$*r'   c                    [        U R                  U R                  5      n[        R                  " [
        5         S Ul        S S S 5        [        R                  " [        5         S UR                  S'   S S S 5        [        R                  " [        5         S UR                  S'   S S S 5        g ! , (       d  f       Ns= f! , (       d  f       NR= f! , (       d  f       g = fNr   r-   )r
   r(   r)   r;   r<   AttributeErrorr+   rD   r$   r6   s     r   test_properties_are_immutable/TestLinearPathway.test_properties_are_immutablec   s     $''2]]>*#'H  +]]9%&*H  # &]]9%&*H  # &%	 +*%%%%s#   B0%CC0
B>
C
C c                 j    [        U R                  U R                  5      nSn[        U5      U:X  d   eg )NzLinearPathway(pA, pB))r
   r(   r)   reprr$   rO   expecteds      r   	test_reprTestLinearPathway.test_reprl   s-    1*G}(((r'   c                     U R                   R                  U R                  SU R                  R                  -  5        U R
                  R                  S:X  d   eg Nr,   )r)   set_posr(   rJ   xrO   lengthr#   s    r   test_static_pathway_length,TestLinearPathway.test_static_pathway_lengthq   s<    46688,||""a'''r'   c                     U R                   R                  U R                  SU R                  R                  -  5        U R
                  R                  S:X  d   eg Nr,   r   )r)   rc   r(   rJ   rd   rO   extension_velocityr#   s    r   &test_static_pathway_extension_velocity8TestLinearPathway.test_static_pathway_extension_velocityu   s<    46688,||..!333r'   c                    U R                   R                  U R                  SU R                  R                  -  5        U R                  U R
                  * U R                  R                  -  4U R                   U R
                  U R                  R                  -  4/nU R                  R                  U R
                  5      U:X  d   eg rb   )r)   rc   r(   rJ   rd   rN   rO   to_loadsr$   r^   s     r   test_static_pathway_to_loads.TestLinearPathway.test_static_pathway_to_loadsy   s    46688,WWhtvvxx'(WWdffTVVXXo&
 ||$$TVV,888r'   c                    U R                   R                  U R                  SU R                  -  U R                  R
                  -  5        S[        U R                  S-  5      -  nU R                  R                  U:X  d   eg rb   )	r)   rc   r(   rK   rJ   rd   r   rO   re   ro   s     r   test_2D_pathway_length(TestLinearPathway.test_2D_pathway_length   s\    47746688!34T$''1*%%||""h...r'   c                 :   U R                   R                  U R                  SU R                  -  U R                  R
                  -  5        S[        U R                  S-  5      -  U R                  -  U R                  -  nU R                  R                  U:X  d   eg rb   )
r)   rc   r(   rK   rJ   rd   r   rP   rO   rj   ro   s     r   "test_2D_pathway_extension_velocity4TestLinearPathway.test_2D_pathway_extension_velocity   sn    47746688!34T$''1*%%dhh.tww6||..(:::r'   c                 D   U R                   R                  U R                  SU R                  -  U R                  R
                  -  5        U R                  U R                  * U R                  [        U R                  S-  5      -  -  U R                  R
                  -  4U R                   U R                  U R                  [        U R                  S-  5      -  -  U R                  R
                  -  4/nU R                  R                  U R                  5      U:X  d   eg rb   )
r)   rc   r(   rK   rJ   rd   rN   r   rO   rn   ro   s     r   test_2D_pathway_to_loads*TestLinearPathway.test_2D_pathway_to_loads   s    47746688!34WWh$twwz*: :;DFFHHDEWWdffdggTWWaZ(889$&&((BC
 ||$$TVV,888r'   c                    U R                   R                  U R                  U R                  U R                  R
                  -  U R                  U R                  R                  -  -
  SU R                  -  U R                  R                  -  -   5        [        U R                  S-  U R                  S-  -   SU R                  S-  -  -   5      n[        U R                  R                  U-
  5      S:X  d   eg Nr,      r   )r)   rc   r(   rK   rJ   rd   rL   yrM   zr   r   rO   re   ro   s     r   test_3D_pathway_length(TestLinearPathway.test_3D_pathway_length   s    GGGGDFFHHtwwtvvxx//!DGG)DFFHH2DD	
 
TWWaZ/!DGGQJ,>?++h671<<<r'   c                    U R                   R                  U R                  U R                  U R                  R
                  -  U R                  U R                  R                  -  -
  SU R                  -  U R                  R                  -  -   5        [        U R                  S-  U R                  S-  -   SU R                  S-  -  -   5      nU R                  U R                  -  U-  U R                  U R                  -  U-  -   SU R                  -  U R                  -  U-  -   n[        U R                  R                   U-
  5      S:X  d   eg r|   )r)   rc   r(   rK   rJ   rd   rL   r~   rM   r   r   rP   rQ   rR   r   rO   rj   )r$   re   r^   s      r   "test_3D_pathway_extension_velocity4TestLinearPathway.test_3D_pathway_extension_velocity   s   GGGGDFFHHtwwtvvxx//!DGG)DFFHH2DD	
 dggqj477A:-$''1*<=GGDHHV#ggdhhv%&i '( 	
 77(BCqHHHr'   c                    U R                   R                  U R                  U R                  U R                  R
                  -  U R                  U R                  R                  -  -
  SU R                  -  U R                  R                  -  -   5        [        U R                  S-  U R                  S-  -   SU R                  S-  -  -   5      nU R                  * U R                  -  U R                  R
                  -  U-  U R                  U R                  -  U R                  R                  -  U-  -   SU R                  -  U R                  -  U R                  R                  -  U-  -
  nU R                  U R                  -  U R                  R
                  -  U-  U R                  U R                  -  U R                  R                  -  U-  -
  SU R                  -  U R                  -  U R                  R                  -  U-  -   nU R                  U4U R                   U4/nU R                  R                  U R                  5      U:X  d   eg )Nr,   r}   )r)   rc   r(   rK   rJ   rd   rL   r~   rM   r   r   rN   rO   rn   )r$   re   pO_forcepI_forcer^   s        r   test_3D_pathway_to_loads*TestLinearPathway.test_3D_pathway_to_loads   s   GGGGDFFHHtwwtvvxx//!DGG)DFFHH2DD	
 dggqj477A:-$''1*<=ffHTWWTVVXX%f,ffTWWnTVVXX%f,-htwwtvvxx'./ 	 FF477N46688#F*ffTWWnTVVXX%f,-htwwtvvxx'./ 	 WWhWWh
 ||$$TVV,888r'   )rN   rJ   r(   r)   rO   rK   rP   rL   rQ   rM   rR   )__name__
__module____qualname____firstlineno__r%   staticmethodr;   markparametrizer   r7   r@   rE   fixturerS   rY   r_   rf   rk   rp   rs   rv   ry   r   r   r   __static_attributes__ r'   r   r   r   $   sA   6 [[Dk5;',	
4 4 [[4[O4[%+uT{3	
, , [[5;4[$	
, , ^^D! "+)
(49/
;
9=I9r'   r   c                   f   \ rS rSrS r\\R                  R                  SSS V VVs/ s H  n[        U5      PM     snnn 4SS V VVs/ s H  n[        U5      PM     snnn 4SS	 V VVs/ s H  n[        U5      PM     snnn 4S
S V VVs/ s H  n[        U5      PM     snnn 4/5      S 5       5       r
\\R                  R                  S\	" S5      /\	" S5      \	" S5      //5      S 5       5       r\\R                  R                  SS\	" S5      \	" S5      4\	" S5      S\	" S5      4\	" S5      \	" S5      S4/5      S 5       5       rS r\\R                  R                  SS V VVs/ s H  n[        U5      PM     snnn S4S V VVs/ s H  n[        U5      PM     snnn S4S	 V VVs/ s H  n[        U5      PM     snnn S4/5      S 5       5       r\R                  " SS9S 5       rS rS rS rS  rS! rS" rS#rgs  snnn f s  snnn f s  snnn f s  snnn f s  snnn f s  snnn f s  snnn f )$TestObstacleSetPathway   c                 :    [        [        [        5      (       d   eg r   )r"   r   r   r#   s    r   r%   4TestObstacleSetPathway.test_is_pathway_base_subclass   s    ,k::::r'   znum_attachments, attachments   )pOr(   pIr}   )r   r(   r)   r      )r   r(   r)   pCr      )r   r(   r)   r   pDr   c                     [        U6 n[        U[         5      (       d   e[        US5      (       d   e[        UR                  5      U :X  d   eUR                   H  n[        U[
        5      (       a  M   e   g )Nr+   )r   r.   r/   r0   r+   r   )num_attachmentsr+   r6   
attachments       r   r7   -TestObstacleSetPathway.test_valid_constructor   sq     &{3($67777x////8''(O;;;"..Jj%0000 /r'   r+   r   r   c                 |    [         R                  " [        5         [        U 6 nS S S 5        g ! , (       d  f       g = fr   )r;   r<   r=   r   r>   s     r   5test_invalid_constructor_attachments_incorrect_numberLTestObstacleSetPathway.test_invalid_constructor_attachments_incorrect_number   s&     ]]:&"K0A '&&rB   Nr(   c                 |    [         R                  " [        5         [        U 6 nS S S 5        g ! , (       d  f       g = fr   r;   r<   rD   r   r>   s     r   .test_invalid_constructor_attachments_not_pointETestObstacleSetPathway.test_invalid_constructor_attachments_not_point   s&     ]]9%-A &%%rB   c                 \   [        [        S5      [        S5      [        S5      5      n[        R                  " [        5         S Ul        S S S 5        [        R                  " [        5         S UR
                  S'   S S S 5        [        R                  " [        5         S UR
                  S'   S S S 5        [        R                  " [        5         S UR
                  S'   S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nc= f! , (       d  f       g = f)Nr   r(   r   r   r-   )r   r   r;   r<   rW   r+   rD   r$   rO   s     r   rY   4TestObstacleSetPathway.test_properties_are_immutable   s    $U4[%+uT{K]]>*"&G +]]9%%)G" &]]9%%)G" &]]9%&*G# &% +*%%%%%%s0   C*-C;DD*
C8;
D	
D
D+zattachments, expectedzObstacleSetPathway(pO, pA, pI)z"ObstacleSetPathway(pO, pA, pB, pI)z&ObstacleSetPathway(pO, pA, pB, pC, pI)c                 6    [        U 6 n[        U5      U:X  d   eg r   )r   r\   )r+   r^   rO   s      r   r_    TestObstacleSetPathway.test_repr   s     & %k2G}(((r'   TrG   c                    [        S5      U l        [        S5      U l        [        S5      U l        [        S5      U l        [        S5      U l        [        S5      U l        [        SS5      U l	        [        S5      U l        g )	NrJ   r   r   r(   r)   qr-   rN   )r   rJ   r   r   r   r(   r)   r   r   qdr   rN   r#   s    r   _obstacle_set_pathway_fixture4TestObstacleSetPathway._obstacle_set_pathway_fixture  s_    $++++$ a(r'   c                    U R                   R                  U R                  U R                  R                  5        U R
                  R                  U R                  U R                  R                  5        U R                  R                  U R                  U R                  R                  5        [        U R                  U R                   U R
                  U R                  5      nUR                  SS[        S5      -  -   :X  d   eg )Nr-   r,   )r(   rc   r   rJ   rd   r)   r~   r   r   r   re   r   r   s     r   rf   1TestObstacleSetPathway.test_static_pathway_length  s    ***$TWWdggtwwH~~Qa[000r'   c                    U R                   R                  U R                  U R                  R                  5        U R
                  R                  U R                  U R                  R                  5        U R                  R                  U R                  U R                  R                  5        [        U R                  U R                   U R
                  U R                  5      nUR                  S:X  d   eg Nr   )r(   rc   r   rJ   rd   r)   r~   r   r   r   rj   r   s     r   rk   =TestObstacleSetPathway.test_static_pathway_extension_velocity  s    ***$TWWdggtwwH))Q...r'   c                    U R                   R                  U R                  U R                  R                  5        U R
                  R                  U R                  U R                  R                  5        U R                  R                  U R                  U R                  R                  5        [        U R                  U R                   U R
                  U R                  5      n[        U R                  U R                  * U R                  R                  -  5      [        U R                   U R                  U R                  R                  -  5      [        U R                   U R                  [        S5      -  S-  U R                  R                  U R                  R                  -
  -  5      [        U R
                  U R                  [        S5      -  S-  U R                  R                  U R                  R                  -
  -  5      [        U R
                  U R                  [        S5      -  S-  U R                  R                  U R                  R                  -
  -  5      [        U R                  U R                  [        S5      -  S-  U R                  R                  U R                  R                  -
  -  5      /nUR                  U R                  5      U:X  d   eg rb   )r(   rc   r   rJ   rd   r)   r~   r   r   r   r	   rN   r   rn   r]   s      r   rp   3TestObstacleSetPathway.test_static_pathway_to_loads&  s   ***$TWWdggtwwH$''DFF7TVVXX-.$''466DFFHH,-$''466DG+a/46688dffhh3FGH$''466DG+a/46688dffhh3FGH$''466DG+a/46688dffhh3FGH$''466DG+a/46688dffhh3FGH
 '8333r'   c                    U R                   R                  U R                  U R                  R                  U R                  R
                  -   * 5        U R                  R                  U R                  [        U R                  5      U R                  R                  -  [        U R                  5      S-   U R                  R
                  -  -
  5        U R                  R                  U R                  [        U R                  5      U R                  R                  -  [        U R                  5      S-
  U R                  R
                  -  -   5        [        U R                  U R                   U R                  U R                  5      nS[        S5      -  [        SS[        U R                  5      -  -   5      -   nUR                  U-
  R                  5       S:X  d   eg Nr-   r,   r   )r(   rc   r   rJ   rd   r~   r)   r   r   r   r   r   r   re   r   r]   s      r   rs   -TestObstacleSetPathway.test_2D_pathway_length5  s4   46688dffhh#6!78GGS[46688+s466{Q$&&((.JJ	
 	GGS[46688+s466{Q$&&((.JJ	
 %TWWdggtwwHtAw;a!CK-&7!88)335:::r'   c                    U R                   R                  U R                  U R                  R                  U R                  R
                  -   * 5        U R                  R                  U R                  [        U R                  5      U R                  R                  -  [        U R                  5      S-   U R                  R
                  -  -
  5        U R                  R                  U R                  [        U R                  5      U R                  R                  -  [        U R                  5      S-
  U R                  R
                  -  -   5        [        U R                  U R                   U R                  U R                  5      n[        S5      [        U R                  5      -  U R                  -  * S[        [        U R                  5      S-   5      -  -  nUR                  U-
  R                  5       S:X  d   eg r   )r(   rc   r   rJ   rd   r~   r)   r   r   r   r   r   r   r   rj   r   r]   s      r   rv   9TestObstacleSetPathway.test_2D_pathway_extension_velocityA  sL   46688dffhh#6!78GGS[46688+s466{Q$&&((.JJ	
 	GGS[46688+s466{Q$&&((.JJ	
 %TWWdggtwwH1gDFF+dgg56!d3tvv;QR?>S:ST**X5??AQFFFr'   c           
         U R                   R                  U R                  U R                  R                  U R                  R
                  -   * 5        U R                  R                  U R                  [        U R                  5      U R                  R                  -  [        U R                  5      S-   U R                  R
                  -  -
  5        U R                  R                  U R                  [        U R                  5      U R                  R                  -  [        U R                  5      S-
  U R                  R
                  -  -   5        [        U R                  U R                   U R                  U R                  5      n[        S5      S-  U R                  R                  U R                  R
                  -   -  n[        S[        U R                  5      -  S-   5      * S-  U R                  R                  -  [        S5      [        U R                  5      -  S[        [        U R                  5      S-   5      -  -  U R                  R
                  -  -   n[        U R                  [        S-  -   5      U R                  R                  -  [        U R                  [        S-  -   5      U R                  R
                  -  -
  n[        U R                  U R                  U-  5      [        U R                   U R                  * U-  5      [        U R                   U R                  U-  5      [        U R                  U R                  * U-  5      [        U R                  U R                  U-  5      [        U R                  U R                  * U-  5      /n[!        UR#                  U R                  5      5      U:X  d   eg )Nr-   r,   r}   )r(   rc   r   rJ   rd   r~   r)   r   r   r   r   r   r   r   r	   rN   r   rn   )r$   rO   pO_pA_force_vecpA_pB_force_vecpB_pI_force_vecr^   s         r   ry   /TestObstacleSetPathway.test_2D_pathway_to_loadsM  s   46688dffhh#6!78GGS[46688+s466{Q$&&((.JJ	
 	GGS[46688+s466{Q$&&((.JJ	
 %TWWdggtwwHq'A+DFFHH)<=1s466{?Q&''!+dffhh61gDFF#q4DFFa+@'@ADFFHHLM 	 dffr!tm,tvvxx7#dffr!tm:Ltvvxx:WW$''466O34$''DFF7_45$''466O34$''DFF7_45$''466O34$''DFF7_45
 w//78HDDDr'   )rN   rJ   r(   r)   r   r   r   r   )r   r   r   r   r%   r   r;   r   r   r   r7   r   r   rY   r_   r   r   rf   rk   rp   rs   rv   ry   r   ).0r1   r   s   000r   r   r      sb   ; [[&);<);t);<=)AB)At)ABC)GH)Gt)GHI)MN)Mt)MNO		
1 1 [[
+teDk231	 
1 [[5;d,4[$d,4[%+t,	
. .	+ [[ *<<);t);<0
 *BB)At)AB4
 *HH)Gt)GH8	
")# $) ^^D! "1/4
;
GEK =BHNb = C Is)   H	H	*HH*HH%,H,r   c                      \ rS rSrS r\R                  " SS9S 5       rS r\R                  R                  S\" S5      4\" S5      \" S	5      \" S
5      4/5      S 5       r\\R                  R                  SS\" S	5      4\" S5      S4/5      S 5       5       rS r\R                  R                  S\" S5      \" S5      \" S5      \" S5      R&                  /5      S 5       rS rS rS r\S 5       r\R                  R                  SSS\S-  4S\" S5      S-  \" S5      * S-  S4S\-  S-  4S\" SS5      \" S5      S-  S4\S-  4/5      S  5       r\R                  R                  SSS\" SS5      \-  4SS!\4S!S\4S\" S5      S-  \" S5      * S-  S4S"\-  S-  4S\" SS5      \" S5      S-  S4\S-  4S\" S5      \" SS5      -  \" S5      * \" SS5      -  S4\" S\" S"S5      \-  S-  -   5      4S\" SS5      \" S5      \" SS5      -  S4\" S\" SS5      \-  S-  -   5      4/5      S# 5       r\R                  R                  S$S%S\" S5      \" SS5      -  \" S5      * \" SS5      -  S44S\" SS5      \" S5      \" SS5      -  S44/5      S& 5       r\R                  R                  S$S%S'S(S\" S5      S-  \" S5      * S-  S44S\" SS5      \" S5      S-  S44S\" S5      \" SS5      -  \" S5      * S-  S44S\" SS5      \" S5      S-  S44/5      S) 5       r\R                  R                  S*S+S\" S5      S-  \" S5      * S-  S4S\" S5      S-  \" S5      S-  S4S,\" S5      S-  -
  \" S5      * S-  S44S\" SS5      \" S5      S-  S4S\" S5      S-  \" SS5      * S4\" S5      * S-  \" SS5      S-
  S4445      S- 5       r \R                  R                  S*S+S.S/S\" S5      S-  \" S5      * S-  S4S!\" S5      * S-  \" S5      * S-  S4S\" S5      S-  -   \" S5      S-  S44S\" SS5      \" S5      S-  S4S\" S5      S-  \" SS5      * S4\" S5      * S-  \" SS5      S-
  S44S\" S5      S-  \" S5      S-  S4S\" S5      S-  \" S5      * S-  S4\" S5      * S-  \" S5      S-  S-
  S44S0S\" S5      S-  \" S5      * S-  S4S1\-  \" S2S3\S-  -  -   5      -  SS\" S2S3\S-  -  -   5      -  4S1\" S5      -  \-  S\" S2S3\S-  -  -   5      -  -  S1\" S5      -  \-  S\" S2S3\S-  -  -   5      -  -  S4\" S2S3\S-  -  -   5      -  4S"\" S5      S-   -  \-  S\" S2S3\S-  -  -   5      -  -  S"\" S5      -  \-  S\" S2S3\S-  -  -   5      -  -  S4445      S5 5       r!S6 r"S7 r#S8 r$S9r%g):TestWrappingPathwayig  c                 :    [        [        [        5      (       d   eg r   )r"   r   r   r#   s    r   r%   1TestWrappingPathway.test_is_pathway_base_subclassi  s    /;7777r'   TrG   c                    [        S5      U l        [        S5      U l        [        SSS9U l        [        S5      U l        [        S5      U l        U R                  R                  U l	        [        U R                  U R
                  5      U l        [        U R                  U R
                  U R                  5      U l        [        U R                  U R                  U R                  5      U l        [        S5      U l        g )	Nr(   r)   rT)positiver   rJ   rN   )r   r(   r)   r   r   r   r   rJ   r   axr   spherer   cylinderr   rO   rN   r#   s    r   _wrapping_pathway_fixture-TestWrappingPathway._wrapping_pathway_fixturel  s    ++d++$&&(($TVVTWW5($''B&twwGr'   c                    [        U R                  U R                  U R                  5      n[	        U[         5      (       d   e[        US5      (       d   e[        UR                  5      S:X  d   e[	        UR                  S   [        5      (       d   eUR                  S   U R                  :X  d   e[	        UR                  S   [        5      (       d   eUR                  S   U R                  :X  d   e[        US5      (       d   e[	        UR                  [        5      (       d   eUR                  U R                  :X  d   eg )Nr+   r,   r   r-   geometry)r   r(   r)   r   r.   r/   r0   r+   r   r   r   rX   s     r   r7   *TestWrappingPathway.test_valid_constructory  s   "477DGGT]]C(O4444x////8''(A---(..q159999##A&$''111(..q159999##A&$''111x,,,,(++-ABBBB  DMM111r'   r+   r(   r)   r9   c                     [         R                  " [        5         [        / UQU R                  P76 nS S S 5        g ! , (       d  f       g = fr   )r;   r<   rD   r   r   )r$   r+   r?   s      r   r   ITestWrappingPathway.test_invalid_constructor_attachments_incorrect_number  s2     ]]9%<<dmm<A &%%s	   <
A
Nc                 |    [         R                  " [        5         [        U 6 nS S S 5        g ! , (       d  f       g = fr   r   r>   s     r   r   BTestWrappingPathway.test_invalid_constructor_attachments_not_point  s&     ]]9%-A &%%rB   c                     [         R                  " [        5         [        U R                  U R
                  5      nS S S 5        g ! , (       d  f       g = fr   r;   r<   rD   r   r(   r)   )r$   r?   s     r   1test_invalid_constructor_geometry_is_not_suppliedETestWrappingPathway.test_invalid_constructor_geometry_is_not_supplied  s.    ]]9%1A &%%s   !A
Ar   r   r   rJ   c                     [         R                  " [        5         [        U R                  U R
                  U5      nS S S 5        g ! , (       d  f       g = fr   r   )r$   r   r?   s      r   "test_invalid_geometry_not_geometry6TestWrappingPathway.test_invalid_geometry_not_geometry  s2     ]]9%(;A &%%s   "A
Ac                 `   [         R                  " [        5         U R                  U R                  R
                  S'   S S S 5        [         R                  " [        5         U R                  U R                  R
                  S'   S S S 5        g ! , (       d  f       NU= f! , (       d  f       g = frV   )r;   r<   rD   r)   rO   r+   r(   r#   s    r   &test_attachments_property_is_immutable:TestWrappingPathway.test_attachments_property_is_immutable  sg    ]]9%*.''DLL$$Q' &]]9%*.''DLL$$Q' &% &%%%s   $B!$B
B
B-c                     [         R                  " [        5         S U R                  l        S S S 5        g ! , (       d  f       g = fr   )r;   r<   rW   rO   r   r#   s    r   #test_geometry_property_is_immutable7TestWrappingPathway.test_geometry_property_is_immutable  s&    ]]>*$(DLL! +**s	   6
Ac                 \    SU R                   < S3n[        U R                  5      U:X  d   eg )Nz!WrappingPathway(pA, pB, geometry=))r   r\   rO   ro   s     r   r_   TestWrappingPathway.test_repr  s6    (+ 	 DLL!X---r'   c                 8    [        S [        X5       5       5      $ )Nc              3   .   #    U  H  u  pX-  v   M     g 7fr   r   r   magunits      r   	<genexpr>9TestWrappingPathway._expand_pos_to_vec.<locals>.<genexpr>  s     ?38   )sumzip)posframes     r   _expand_pos_to_vec&TestWrappingPathway._expand_pos_to_vec  s    ?s3???r'   zpA_vec, pB_vec, factorr-   r   r   r   r-   r   r,   r   r   r}   r-   c                    U R                  XR                  5      nU R                  X R                  5      nU R                  R                  U R                  U R
                  U-  5        U R                  R                  U R                  U R
                  U-  5        [        U R                  U R                  U R                  5      nX0R
                  -  n[        UR                  U-
  5      S:X  d   eg r   )r   rJ   r(   rc   r   r   r)   r   r   r   re   r$   pA_vecpB_vecfactorrO   r^   s         r   $test_static_pathway_on_sphere_length8TestWrappingPathway.test_static_pathway_on_sphere_length  s     ((8((8//!$''477DKK@&&=12a777r'   r   r   r   r   c                    U R                  XR                  5      nU R                  X R                  5      nU R                  R                  U R                  U R
                  U-  5        U R                  R                  U R                  U R
                  U-  5        [        U R                  U R                  U R                  5      nU[        U R
                  S-  5      -  n[        UR                  U-
  5      S:X  d   eg ri   )r   rJ   r(   rc   r   r   r)   r   r   r   r   re   r   s         r   &test_static_pathway_on_cylinder_length:TestWrappingPathway.test_static_pathway_on_cylinder_length  s    * ((8((8//!$''477DMMB$tvvqy/)12a777r'   zpA_vec, pB_vec)r   r   c                    U R                  XR                  5      nU R                  X R                  5      nU R                  R                  U R                  U R
                  U-  5        U R                  R                  U R                  U R
                  U-  5        [        U R                  U R                  U R                  5      nUR                  S:X  d   eg r   )
r   rJ   r(   rc   r   r   r)   r   r   rj   r$   r   r   rO   s       r   0test_static_pathway_on_sphere_extension_velocityDTestWrappingPathway.test_static_pathway_on_sphere_extension_velocity  s     ((8((8//!$''477DKK@))Q...r'   )r   r  )r  r   c                    U R                  XR                  5      nU R                  X R                  5      nU R                  R                  U R                  U R
                  U-  5        U R                  R                  U R                  U R
                  U-  5        [        U R                  U R                  U R                  5      nUR                  S:X  d   eg r   )
r   rJ   r(   rc   r   r   r)   r   r   rj   r  s       r   2test_static_pathway_on_cylinder_extension_velocityFTestWrappingPathway.test_static_pathway_on_cylinder_extension_velocity  s     ((8((8//!$''477DMMB))Q...r'   zApA_vec, pB_vec, pA_vec_expected, pB_vec_expected, pO_vec_expected)r   r   r   r   )r   r   r   r   c                 x   U R                  XR                  5      nU R                  X R                  5      nU R                  R                  U R                  U R
                  U-  5        U R                  R                  U R                  U R
                  U-  5        [        U R                  U R                  U R                  5      n[        S [        X0R                  5       5       5      n[        S [        X@R                  5       5       5      n[        S [        XPR                  5       5       5      n[        U R                  U R                  U R
                  S-  [        U R
                  S-  5      -  -  U-  5      [        U R                  U R                  U R
                  S-  [        U R
                  S-  5      -  -  U-  5      [        U R                  U R                  U R
                  S-  [        U R
                  S-  5      -  -  U-  5      /nUR                  U R                  5      U:X  d   eg )Nc              3   .   #    U  H  u  pX-  v   M     g 7fr   r   r   s      r   r   MTestWrappingPathway.test_static_pathway_on_sphere_to_loads.<locals>.<genexpr>7        
(D#CH(Dr   c              3   .   #    U  H  u  pX-  v   M     g 7fr   r   r   s      r   r   r  :  r  r   c              3   .   #    U  H  u  pX-  v   M     g 7fr   r   r   s      r   r   r  =  r  r   r   r   )r   rJ   r(   rc   r   r   r)   r   r   r   r   r	   rN   r   rn   )r$   r   r   pA_vec_expectedpB_vec_expectedpO_vec_expectedrO   r^   s           r   &test_static_pathway_on_sphere_to_loads:TestWrappingPathway.test_static_pathway_on_sphere_to_loads  s   8 ((8((8//!$''477DKK@ 
(+OVV(D
 
  
(+OVV(D
 
  
(+OVV(D
 
 $''46646619T$&&!)_#<=oMN$''46646619T$&&!)_#<=oMN$''46646619T$&&!)_#<=oMN

 '8333r'   )r   r  r   r   )r   r   )r  r   r   r   r   r  )r   r,   r   )r   )r   r-   r-   )r   r   r-   )r   r   r   )r   r   r         c                 ^   U R                  XR                  5      nU R                  X R                  5      nU R                  R                  U R                  U R
                  U-  5        U R                  R                  U R                  U R
                  U-  5        [        U R                  U R                  U R                  5      nU R                  U R                  UU R                  5      -  nU R                  U R                  UU R                  5      -  nU R                  U R                  UU R                  5      -  n	[        U R                  U5      [        U R                  U5      [        U R                  U	5      /n
[        UR                  U R                  5      5      U
:X  d   eg r   )r   rJ   r(   rc   r   r   r)   r   r   rN   r	   r   rn   )r$   r   r   r  r  r  rO   pA_force_expectedpB_force_expectedpO_force_expectedr^   s              r   (test_static_pathway_on_cylinder_to_loads<TestWrappingPathway.test_static_pathway_on_cylinder_to_loadsG  sR   j ((8((8//!$''477DMMB FF4#:#:?;?66$C C FF4#:#:?;?66$C C FF4#:#:?;?66$C C $'',-$'',-$'',-

 w//78HDDDr'   c                 "   [        S5      nU R                  U R                  R                  -  nU R                  [	        U5      U R                  R                  -  [        U5      U R                  R                  -  -   -  nU R                  R                  U R                  U5        U R                  R                  U R                  U5        U R                  [        US-  5      -  n[        U R                  R                  U-
  5      S:X  d   eg )Nr   r,   r   )r   r   rJ   rd   r   r   r~   r(   rc   r   r)   r   r   rO   re   )r$   r   pA_pospB_posr^   s        r   "test_2D_pathway_on_cylinder_length6TestWrappingPathway.test_2D_pathway_on_cylinder_length  s    3Q3q6$&&((?:;((66$q!t*$++h671<<<r'   c                 F   [        S5      n[        SS5      nU R                  U R                  R                  -  nU R                  [	        U5      U R                  R                  -  [        U5      U R                  R                  -  -   -  nU R                  R                  U R                  U5        U R                  R                  U R                  U5        U R                  [        US-  5      U-  -  U-  n[        U R                  R                  U-
  5      S:X  d   eg )Nr   r-   r,   r   )r   r   rJ   rd   r   r   r~   r(   rc   r   r)   r   r   rO   rj   )r$   r   r   r%  r&  r^   s         r   .test_2D_pathway_on_cylinder_extension_velocityBTestWrappingPathway.test_2D_pathway_on_cylinder_extension_velocity  s    3C#Q3q6$&&((?:;((6641:a<(+77(BCqHHHr'   c                    [        S5      nU R                  U R                  R                  -  nU R                  [	        U5      U R                  R                  -  [        U5      U R                  R                  -  -   -  nU R                  R                  U R                  U5        U R                  R                  U R                  U5        U R                  U R                  R                  -  nU R                  [        U5      U R                  R                  -  [	        U5      U R                  R                  -  -
  -  nU R                  [        U5      * U R                  R                  -  [	        U5      S-
  U R                  R                  -  -   -  n[        U R                  U5      [        U R                  U5      [        U R                  U5      /n[        U R                  R                  U R                  5      5      nX:X  d   eg )Nr   r-   )r   r   rJ   rd   r   r   r~   r(   rc   r   r)   rN   r	   r   rO   rn   )	r$   r   r%  r&  pA_forcepB_forcer   r^   r   s	            r   $test_2D_pathway_on_cylinder_to_loads8TestWrappingPathway.test_2D_pathway_on_cylinder_to_loads  s_   3Q3q6$&&((?:;((66$&&((?663q6$&&((?SVDFFHH_<=66CF746688+s1vz46688.CCD$''8$$''8$$''8$
   5 5dff =>   r'   )
rN   rJ   r   r   r(   r)   r   rO   r   r   )&r   r   r   r   r%   r;   r   r   r7   r   r   r   r   r   r   r   r   r   r   rd   r   r   r   r_   r   r   r   r   r   r  r  r  r  r"  r'  r*  r/  r   r   r'   r   r   r   g  s   8 ^^D!
 "
2 [[4[O4[%+uT{3	
== [[5;4[$	
. .2 [[3K333!!		
<<2). @ @ [[ 	2a4(aT!WHQJ2AbDF;!QaA61=	
88 [[ 	8Aq>"#45
B'B'aT!WHQJ2AbDF;!QaA61=a!Q'$q'(1a.)@!DQ(1a.+a//0 !Qa!Q!7;Q(1a.+a//0	
(8)(8 [["a!Q/$q'(1a.1H!LM!Qa!Q)?CD	
// [["##aT!WHQJ23!QaA67a!Q/$q'!Q?@!QaA67	
// [[KEaT!WHQJ*aDGAIq)d1gai$q'!Q/ !QaA.aXa^OQ/q'!Xa^a/3	
(4)(4< [[KEEFaT!WHQJ*q'!d1gXaZ+T!WQYQ	1- !QaA.aXa^OQ/q'!Xa^a/3 aDGAIq)aT!WHQJ*q'!T!WQY]A. EaT!WHQJ*BtBBEM**Aqb2b!e8m1D/DEtAwJrM1T"r"a%x-%8#89tAwJrM1T"r"a%x-%8#89tBBEM** tAw{OB&$rBr1uH}*=(=>d1gIbL!DbQh$7"785)	
,ZE[,ZE6=I!r'   r   )__doc__r;   sympyr   r   r   r   r   r   sympy.physics.mechanicsr	   r
   r   r   r   r   r   r   r   r   r   sympy.simplify.simplifyr   r   r   r   r   r   r'   r   <module>r5     s[    B      -X9 X9veE eEPL! L!r'   