
    sg              	       J   d dl Z d dlmZmZ d dlmZ d dlmZ d dlm	Z	  ed      Z
e
sdZe j                  j                  e j                  j                  e j                  j                  e j                  j                  e                        ZddZd	 Zd
 Zd Zd Zd Zy)    N)cossin)import_module)skip)parse_autolevantlr4Tc           	      V   t         j                  j                  t        dd|       }t         j                  j                  t        dd|      }t	        |      5 }t        |d      }d d d        t	        |      5 }t        |      D ]P  \  }}|j                  d      r n:	 j                  d      |   }	|j                         |	j                         k(  sJ R d d d        y # 1 sw Y   |xY w# t        $ r& d|z   dz   }
t        |
j                  |d	z               w xY w# 1 sw Y   y xY w)
Nautolevtest-examplesT)include_numeric#
zmismatch in z in line no: {0}   )ospathjoinFILE_DIRopenr   	enumerate
startswithsplitrstrip	ExceptionAssertionErrorformat)in_filenameout_filename	test_namein_file_pathcorrect_file_pathfgenerated_codeidxline1line2msgs              S/var/www/html/venv/lib/python3.12/site-packages/sympy/parsing/tests/test_autolev.py_test_examplesr(      s#   77<<)_ +-LXy/%13	l	 @q&q$?@ 
	  	8A#A, 	8JC$8&,,T237||~777	8	8 	8@ @  8$y03EE$SZZA%6778	8 	8s0   C!9%D7C-D!C*-/DDD(c                  H    g d} | D ]  }|dz   }|dz   }t        |||        y )N)	ruletest1	ruletest2	ruletest3	ruletest4	ruletest5	ruletest6	ruletest7	ruletest8	ruletest9
ruletest10
ruletest11
ruletest12.al.py)r(   liin_filepathout_filepaths       r'   test_rule_testsr=   &   s8    	%A  5%i5y{L!45    c                      g d} | D ]U  }t         j                  j                  d|dz         }t         j                  j                  d|dz         }t        |||       W y )N)mass_spring_damperchaos_pendulumdouble_pendulumnon_min_pendulumzpydy-example-repor6   r7   )r   r   r   r(   r8   s       r'   test_pydy_examplesrD   2   sX    	A  5ggll#6E	Bww||$7UC{L!45r>   c                  L   t         j                  j                  t        ddd      } t         j                  j	                  |       r_g d}|D ]U  }t         j                  j                  d|dz         }t         j                  j                  d|dz         }t        |||       W y y )Nr
   r   zautolev-tutorial)tutor1tutor2tutor3tutor4tutor5tutor6tutor7r6   r7   r   r   r   r   isdirr(   )dir_pathr9   r:   r;   r<   s        r'   test_autolev_tutorialrP   =   s    ww||Hi.0H 
ww}}X 	9A'',,'91u9EK77<<(:AIFL;a8	9 r>   c                     t         j                  j                  t        ddd      } t         j                  j	                  |       rg d}g d}g d}g d}|df|d	f|d
f|dfg}|D ]a  \  }}|D ]W  }t         j                  j                  d||dz         }	t         j                  j                  d||dz         }
t        |	|
|       Y c y y )Nr
   r   zdynamics-online)z1-4z1-5z1-6z1-7z1-8z1-9_1z1-9_2z1-9_3)
z2-1z2-2z2-3z2-4z2-5z2-6z2-7z2-8z2-9circular)z3-1_1z3-1_2z3-2_1z3-2_2z3-2_3z3-2_4z3-2_5z3-3)z4-1_1z4-2_1z4-4_1z4-4_2z4-5_1z4-5_2ch1ch2ch3ch4r6   r7   rM   )rO   rS   rT   rU   rV   chapterschnamer:   r;   r<   s              r'   test_dynamics_onlinerZ   K   s    ww||Hi-/H 
ww}}XLD%L3,esElK  	=HB = ggll+<dAIN!ww||,=tQYO{L!<=	= r>   c                     t         st        d       d} t        |       }i }i }t        |||       |d   j	                  |d         }|d   j                  |d         }|d   j                  |d         }|d   j                  |d         }|d   j                         |d   j                  z  t        |d         |d   j                         z  |d   j                  z  z   t        |d         |d   j                         z  |d   j                  z  z   }||z
  j                         d	k(  sJ |d
    t        |d         z  |d   j                  z  |d   |d   j                  z  z   |d
   t        |d         z  |d   j                  z  z   }	||	z
  j                         d	k(  sJ |d
   t        |d         z  |d   j                         z  |d   j                  z  |d
   t        |d         z  |d   j                         z  |d   j                  z  z
  |d   |d   j                         z  |d
   t        |d         z  |d   j                         z  z   |d   j                  z  z   }
||
z
  j                         d	k(  sJ |d
   t        |d         |d   j                         dz  z  t        |d         |d   j                         j                         z  z   z  |d   j                  z  |d    |d   j                         dz  z  d|d
   z  t        |d         z  |d   j                         z  |d   j                         z  z
  |d
   t        |d         z  |d   j                         j                         z  z
  |d   j                  z  z   |d   |d   j                         j                         z  |d
   t        |d         z  |d   j                         j                         z  z   |d
   t        |d         z  |d   j                         dz  z  z
  |d
   t        |d         z  |d   j                         dz  z  z
  |d   j                  z  z   }||z
  j                         d	k(  sJ y)a$  Autolev example calculates the position, velocity, and acceleration of a
    point and expresses in a single reference frame::

          (1) FRAMES C,D,F
          (2) VARIABLES FD'',DC''
          (3) CONSTANTS R,L
          (4) POINTS O,E
          (5) SIMPROT(F,D,1,FD)
       -> (6) F_D = [1, 0, 0; 0, COS(FD), -SIN(FD); 0, SIN(FD), COS(FD)]
          (7) SIMPROT(D,C,2,DC)
       -> (8) D_C = [COS(DC), 0, SIN(DC); 0, 1, 0; -SIN(DC), 0, COS(DC)]
          (9) W_C_F> = EXPRESS(W_C_F>, F)
       -> (10) W_C_F> = FD'*F1> + COS(FD)*DC'*F2> + SIN(FD)*DC'*F3>
          (11) P_O_E>=R*D2>-L*C1>
          (12) P_O_E>=EXPRESS(P_O_E>, D)
       -> (13) P_O_E> = -L*COS(DC)*D1> + R*D2> + L*SIN(DC)*D3>
          (14) V_E_F>=EXPRESS(DT(P_O_E>,F),D)
       -> (15) V_E_F> = L*SIN(DC)*DC'*D1> - L*SIN(DC)*FD'*D2> + (R*FD'+L*COS(DC)*DC')*D3>
          (16) A_E_F>=EXPRESS(DT(V_E_F>,F),D)
       -> (17) A_E_F> = L*(COS(DC)*DC'^2+SIN(DC)*DC'')*D1> + (-R*FD'^2-2*L*COS(DC)*DC'*FD'-L*SIN(DC)*FD'')*D2> + (R*FD''+L*COS(DC)*DC''-L*SIN(DC)*DC'^2-L*SIN(DC)*FD'^2)*D3>

    z&Test skipped: antlr4 is not installed.zFRAMES C,D,F
VARIABLES FD'',DC''
CONSTANTS R,L
POINTS O,E
SIMPROT(F,D,1,FD)
SIMPROT(D,C,2,DC)
W_C_F>=EXPRESS(W_C_F>,F)
P_O_E>=R*D2>-L*C1>
P_O_E>=EXPRESS(P_O_E>,D)
V_E_F>=EXPRESS(DT(P_O_E>,F),D)
A_E_F>=EXPRESS(DT(V_E_F>,F),D)frame_cframe_fpoint_epoint_ofddcr   r9   frame_dr   N)r   r   r   exec
ang_vel_inpos_fromvelaccdiffxr   yr   zsimplify)autolev_inputsympy_inputgr9   w_c_fp_o_ev_e_fa_e_fexpected_w_c_fexpected_p_o_eexpected_v_e_fexpected_a_e_fs               r'   test_output_01rz   _   s|   0 56M  .K
A
AaiL##AiL1EiL!!!I,/EiLQy\*EiLQy\*E
 gllnQy\^^3!D'l1T7<<>1!I,..@A!D'l1T7<<>1!I,..@AN N",,.!333vgc!D'l*1Y<>>9fQy\^^+,fS4\)!I,..89N N",,.!333fS4\)!D',,.89GfS4\)!D',,.89GHvaglln,vc!D'l*1T7<<>9:;<Y<>>JJN N",,.!333fc!D'l1T7<<>1+<<!!D'l1T7<<>+>+>+@@A BBCI,..Q#wqw||~q003xAdG,QtW\\^;AdGLLNJKvc!D'l*1T7<<>+>+>+@@ABCI,..QQ
 vaglln1133vc!D'l*1T7<<>+>+>+@@Avc!D'l*1T7<<>1+<<= vc!D'l*1T7<<>1+<<= ?@	lnnMMN N",,.!333r>   ) )r   (sympy.functions.elementary.trigonometricr   r   sympy.externalr   sympy.testing.pytestr   sympy.parsing.autolevr   r   disabledr   dirnameabspathrealpath__file__r   r(   r=   rD   rP   rZ   rz    r>   r'   <module>r      s    	 ? ( % /	x	 H77??GGOOBGGOOBGG$4$4X$>?@B8*	559=(S4r>   