ó
”¼\c           @   są   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
 sm e Z n  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 d S(   i’’’’N(   t   sint   cos(   t   import_module(   t   skip(   t   parse_autolevt   antlr4t    c         C   s  t  j j t d d |   } t  j j t d d |  } t |   } t | d t } Wd  QXt |  § } x t |  D] \ } } | j d  r Pn  y5 | j	 d  | }	 | j
   |	 j
   k sĢ t  Wqy t k
 rd | d }
 t |
 j | d    qy Xqy WWd  QXd  S(	   Nt   autolevs   test-examplest   include_numerict   #s   
s   mismatch in s    in line no: {0}i   (   t   ost   patht   joint   FILE_DIRt   openR   t   Truet	   enumeratet
   startswitht   splitt   rstript   AssertionErrort	   Exceptiont   format(   t   in_filenamet   out_filenamet	   test_namet   in_file_patht   correct_file_patht   ft   generated_codet   idxt   line1t   line2t   msg(    (    s?   lib/python2.7/site-packages/sympy/parsing/tests/test_autolev.pyt   _test_examples   s     		"c          C   sc   d d d d d d d d d	 d
 d d g }  x2 |  D]* } | d } | d } t  | | |  q1 Wd  S(   Nt	   ruletest1t	   ruletest2t	   ruletest3t	   ruletest4t	   ruletest5t	   ruletest6t	   ruletest7t	   ruletest8t	   ruletest9t
   ruletest10t
   ruletest11t
   ruletest12s   .als   .py(   R"   (   t   lt   it   in_filepatht   out_filepath(    (    s?   lib/python2.7/site-packages/sympy/parsing/tests/test_autolev.pyt   test_rule_tests&   s    

c          C   si   d d d d g }  xP |  D]H } t  j j d | d  } t  j j d | d  } t | | |  q Wd  S(   Nt   mass_spring_dampert   chaos_pendulumt   double_pendulumt   non_min_pendulums   pydy-example-repos   .als   .py(   R
   R   R   R"   (   R/   R0   R1   R2   (    (    s?   lib/python2.7/site-packages/sympy/parsing/tests/test_autolev.pyt   test_pydy_examples2   s    		c          C   s¢   t  j j t d d d  }  t  j j |   r d d d d d d	 d
 g } xS | D]H } t  j j d | d  } t  j j d | d  } t | | |  qO Wn  d  S(   NR   s   test-exampless   autolev-tutorialt   tutor1t   tutor2t   tutor3t   tutor4t   tutor5t   tutor6t   tutor7s   .als   .py(   R
   R   R   R   t   isdirR"   (   t   dir_pathR/   R0   R1   R2   (    (    s?   lib/python2.7/site-packages/sympy/parsing/tests/test_autolev.pyt   test_autolev_tutorial=   s    		c       
   C   sF  t  j j t d d d  }  t  j j |   rBd d d d d d	 d
 d g } d d d d d d d d d d g
 } d d d d d d d d g } d d d  d! d" d# g } | d$ f | d% f | d& f | d' f g } xp | D]e \ } } xV | D]N } t  j j d | | d(  }	 t  j j d | | d)  }
 t |	 |
 |  qé WqÖ Wn  d  S(*   NR   s   test-exampless   dynamics-onlines   1-4s   1-5s   1-6s   1-7s   1-8s   1-9_1s   1-9_2s   1-9_3s   2-1s   2-2s   2-3s   2-4s   2-5s   2-6s   2-7s   2-8s   2-9t   circulars   3-1_1s   3-1_2s   3-2_1s   3-2_2s   3-2_3s   3-2_4s   3-2_5s   3-3s   4-1_1s   4-2_1s   4-4_1s   4-4_2s   4-5_1s   4-5_2t   ch1t   ch2t   ch3t   ch4s   .als   .py(   R
   R   R   R   R@   R"   (   RA   RD   RE   RF   RG   t   chapterst   cht   nameR0   R1   R2   (    (    s?   lib/python2.7/site-packages/sympy/parsing/tests/test_autolev.pyt   test_dynamics_onlineK   s    			*c          B   sļ  e  s e d  n  d }  e |   } i  } i  } | | | U| d j | d  } | d j | d  } | d j | d  } | d j | d  } | d j   | d j e	 | d  | d j   | d j
 e | d  | d j   | d j } | | j   d	 k st  | d
 e	 | d  | d j | d | d j
 | d
 e | d  | d j }	 | |	 j   d	 k st  | d
 e | d  | d j   | d j | d
 e | d  | d j   | d j
 | d | d j   | d
 e	 | d  | d j   | d j }
 | |
 j   d	 k sQt  | d
 e	 | d  | d j   d e | d  | d j   j   | d j | d | d j   d d | d
 e	 | d  | d j   | d j   | d
 e | d  | d j   j   | d j
 | d | d j   j   | d
 e	 | d  | d j   j   | d
 e | d  | d j   d | d
 e | d  | d j   d | d j } | | j   d	 k sėt  d S(   s#  Autolev example calculates the position, velocity, and accleration 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>

    s&   Test skipped: antlr4 is not installed.są   FRAMES 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)t   frame_ct   frame_ft   point_et   point_ot   fdt   dci    R/   t   frame_dt   ri   N(   R   R   R   t
   ang_vel_int   pos_fromt   velt   acct   difft   xR   t   yR    t   zt   simplifyR   (   t   autolev_inputt   sympy_inputt   gR/   t   w_c_ft   p_o_et   v_e_ft   a_e_ft   expected_w_c_ft   expected_p_o_et   expected_v_e_ft   expected_a_e_f(    (    s?   lib/python2.7/site-packages/sympy/parsing/tests/test_autolev.pyt   test_output_01_   s2    
?*4$]3Śm7(   R
   t   sympyR    R   t   sympy.externalR   t   sympy.utilities.pytestR   t   sympy.parsing.autolevR   R   R   t   disabledR   t   dirnamet   abspatht   realpatht   __file__R   R"   R3   R8   RB   RK   Rh   (    (    (    s?   lib/python2.7/site-packages/sympy/parsing/tests/test_autolev.pyt   <module>   s   		-				